最近研究了下反编译smali代码注入 实现自己的功能

简单的注入Toast  log代码  比较简单  网上都是  但是没有找到加入第三方广告sdk的例子  下面就以hao123广告注入说下自己的经验  其实规律很简单

hao123广告 需要的代码 (此处只是为了知道哪些地方改变了)

1.AndroidManifest.xml 权限 以及活动 服务 广播

2.res-drawable-xhdpi 新加一张图片

3.res-layout 新加两个布局文件

4.res 目录下 新加个raw文件 里面包含hao123cid.ini文件

5.MainActivity追加 HaoAgent.getInstance(this).init();初始化调用代码

准备工作 新建个最简单的hello_world工程  反编译  同时 hello_world工程加入hao123广告代码  反编译  对比不同

应用市场下载个apk文件(没有混淆) 用apktool反编译

1 首先这里的清单文件追加需要的代码    <original文件夹中的清单文件无需理会>

2 original --- META-INF文件夹中通常有

CERT.RSA   CERT.SF   MANIFEST.MF三个文件

前面两个文件是安卓项目签名文件 最后那个自行百度 我就不多说了

这三个文件可以全部删除

3.根目录 res文件夹

这里对应的文件夹追加对应的资源文件  直接拷贝即可 <如果没raw文件夹  整个文件夹拷贝即可>

重点来了 打开values文件

在ids.xml文件中追加改变的代码

<item type="id" name="fapk_bimg_bg_background">false</item>
    <item type="id" name="fapk_img_bg_background">false</item>

在public.xml文件下追加需要的代码

此处要重点注意

如:

<public type="layout" name="activity_main" id="0x7f030000" />    
<public type="layout" name="hao123_notification_fapk_bimg_bg" id="0x7f030001" />
    <public type="layout" name="hao123_notification_fapk_img_bg" id="0x7f030002" />

代码 activity_main是都有的 下面的两个layout是需要新加的  看出变化了没  对 简单的id自增即可

如果没有的文件  比如我反编译的apk这里没有raw 但是我们又需要新追加raw 那这个id怎么办呢

简单  你可以自己新加个Id  比如layout全是 0x7f03开头   那么0x7f04即可

这里的id很重要 必须唯一  可以理解为安卓工程中的r文件

4.返回根目录 下面需要修改smali里面的代码了

在com里面把baidu文件夹全部拷贝过来  baidu文件夹既是hao123广告里面的jar包

5 在smali中  搜索R$layout.smali文件 即可找到项目的资源文件  一般项目的资源文件都在一起  这里需要注意根据目录区分是库文件的资源文件 还是项目本身的资源文件

找到这个资源文件

打开追加自己的代码  比如hao123多了两个布局文件  那么我们在R$layout.smali里面 

追加这两个布局文件    注意 此处的id即为上面public.xml里面我们写入的id  id一定要一致!

依次完成其他代码的追加 比如 R$drawable.smali   R$id.smali等

同时这里需要注意一点  R.smali和R$raw.smali文件

没有R$raw.smali文件  那么直接拷贝  但是需要注意更改项目路径  同时  R.smali 追加raw引用代码

5.到这里  那么就差最后一步了   没错 即是MainActivity中的代码!

根据清单文件  查看项目启动活动 的路径  可以直接找到这个活动文件  (此处看你想把代码加在那个地方了)

找到onCreate方法   这里你可能会头大吧   看不懂这个代码啊   没关系 只要了解基础语法就行了

.line 16
    invoke-static {p0}, Lcom/baidu/hao123/union/HaoAgent;->getInstance(Landroid/content/Context;)Lcom/baidu/hao123/union/HaoAgent;

move-result-object v1

invoke-virtual {v1}, Lcom/baidu/hao123/union/HaoAgent;->init()V

.line 18
    const-string v1, "Hao123\u8054\u76df\u670d\u52a1\u542f\u52a8\uff01"

const/4 v2, 0x1

invoke-static {p0, v1, v2}, Landroid/widget/Toast;->makeText(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast;

move-result-object v0

我要追加的代码就是上面的了 <对比找出>  直接丢进oncreate中  同时记得  oncreate方法的第一句.locals 3 即是这个方法声明3个内存空间  p0 v0  v1 自行百度smali的基本语法

OK!成了  重新用apktool打包  APKSign重新签名 那么就可以运行了

反编译的代码怎么整   什么规律  以后有时间研究下

当然请尊重别人的果实 以上代码只是个人兴趣  随意而为

安卓反编译smali代码注入第三方广告相关推荐

  1. 迷你播放器--第一阶段(7)--安全攻防第一战--对抗反编译,代码混淆和对抗动态调试

    迷你播放器--第一阶段(7) 安全攻防第一战--对抗反编译,代码混淆和对抗动态调试; 本文章为CSDN作者原创,转载请保留出处:http://blog.csdn.net/lrs0304/article ...

  2. Android笔记:防反编译、代码混淆中,解决第三方jar包不被混淆的一些心得,及gson防混淆方法...

    为了防止代码被反编译,一般在签名导出前需要对代码进行混淆.最近发现自己的一个项目工程在代码混淆后,使用中出现了异常.以下是自己这几天在解决代码混淆以及引入第三方jar包导致混淆出现的问题处理的一些心得 ...

  3. 安卓反编译入门(二)

    很多人写文章,喜欢把什么行业现状啊,研究现状啊什么的写了一大通,感觉好像在写毕业论文似的,我这不废话,先直接上几个图,感受一下. 第一张图是在把代码注入到地图里面,启动首页的时候弹出个浮窗,下载网络的 ...

  4. 常用android的smali注入代码,android smali代码注入 实战一

    有同学在通服里面干活,最近一直忙着4g基站搭建的干活,测试设备(android)测量移动网络数据,没有自动保存记录的功能,只能手动记录各种测试参数,不知道测试软件供应商是怎样想的,竟然不提供的这样的功 ...

  5. 安卓反编译就这么简单

    学习Android开发的过程中,你会向别人学习应用软件是如何开发出来的,那些漂亮的动画和复杂的布局可能让你爱不释手,作为开发者,你可能真的想知道的是如何实现这样的界面效果.现在,您可以通过安卓修改大师 ...

  6. 安卓修改大师v3.1.0.0:傻瓜式安卓反编译逆向修改工具

    安卓修改大师是一款专业免费对任何APK安装包进行反编译的软件,该软件可以替换应用程序界面上的任何文字和图片,还可以通过代码级别的修改,实现汉化.破解.功能增强,而且还能在任何界面添加自定义的代码和功能 ...

  7. android反编译汉化,安卓反编译工具(Apk Manager)

    Apk manager是一个apk处理工具,集多种功能于一身! 下面是主界面的所有选项: [简单功能]修改图片类 ---------------------- 0    提取手机文件到电脑 1    ...

  8. 安卓反编译揭秘,伪加密APK文件如何被破坏

    2019独角兽企业重金招聘Python工程师标准>>> 1. 源码混淆 如上图,对Android APP的源码进行混淆后混淆器将代码中的所有变量.函数.类的名称加密为简短的英文字母代 ...

  9. unity3D 如何提取游戏资源 (反编译)+代码反编译【P.M.出品】

    转自:https://blog.csdn.net/LANGZI7758521/article/details/52291564 首先感谢 雨松MOMO 的一篇帖子 教我们怎么提取 .ipa 中的游戏资 ...

  10. Java jar 如何防止被反编译?代码写的太烂,害怕被人发现

    欢迎关注方志朋的博客,回复"666"获面试宝典 java作为解释型的语言,其高度抽象的特性意味其很容易被反编译,容易被反编译,自然有防止反编译措施存在.今天就拜读了一篇相关的文章, ...

最新文章

  1. FFmpeg通过摄像头实现对视频流进行解码并显示测试代码(旧接口)
  2. java导出excel压缩包_java动态导出excel压缩成zip下载的方法
  3. 用跑得最慢的电脑程序,理解最高深的哥德巴赫猜想
  4. WCF 第六章 序列化和编码之DataContractJsonSerializer
  5. 再见了,收费的Navicat
  6. windows11图文安装流程
  7. JQuery实现页面跳转
  8. 微软为.NET程序员带来了最优的跨平台开发体验-WSL
  9. LeetCode 937. 重新排列日志文件(自定义排序)
  10. websocketpp 最简单的客户端 一
  11. 今天看到头条好多新手说摆摊不挣钱
  12. kernel oops_Java中的OOPS概念– OOPS概念示例
  13. Python中过滤列表中全部奇数
  14. d3.js d3.scale.ordinal() --详解 rangeBands
  15. MATLAB/Simulink仿真 并网型风光混储直流微电网 实现:功率分配、削峰填谷、平抑功率波
  16. 数位笔的笔芯磨损到什么程度需要更换?压感笔笔芯怎么更换?
  17. SPSS(十九)SPSS之时间序列模型(图文+数据集)
  18. 使用Nuxt.js框架开发(SSR)服务端渲染项目
  19. 分布式事务常见解决方案
  20. 请把ios文件解压出来是什么意思_全网电影+美剧+日韩剧(ios+安卓)

热门文章

  1. ACM/ICPC 2018亚洲区预选赛北京赛站网络赛 B Tomb Raider 【二进制枚举】
  2. 概率论 —— 泊松分布和指数分布
  3. java okhhtp下载学信网学籍信息
  4. jvm full gc到底是啥意思
  5. 计算机Numlock键的功能,电脑开机numlock灯不亮怎么办 NumLock数字锁定键方法
  6. 【渝粤题库】国家开放大学2021春2411中国现代文学题目
  7. 如何用MATLAB预测未来人口,使用matlab对将来人口总数进行预测
  8. reactor项目Maven配置
  9. linux+qq+输入法下载官网,续:Linux下安装输入法和QQ软件
  10. UTC时间转北京时间