安卓反编译smali代码注入第三方广告
最近研究了下反编译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代码注入第三方广告相关推荐
- 迷你播放器--第一阶段(7)--安全攻防第一战--对抗反编译,代码混淆和对抗动态调试
迷你播放器--第一阶段(7) 安全攻防第一战--对抗反编译,代码混淆和对抗动态调试; 本文章为CSDN作者原创,转载请保留出处:http://blog.csdn.net/lrs0304/article ...
- Android笔记:防反编译、代码混淆中,解决第三方jar包不被混淆的一些心得,及gson防混淆方法...
为了防止代码被反编译,一般在签名导出前需要对代码进行混淆.最近发现自己的一个项目工程在代码混淆后,使用中出现了异常.以下是自己这几天在解决代码混淆以及引入第三方jar包导致混淆出现的问题处理的一些心得 ...
- 安卓反编译入门(二)
很多人写文章,喜欢把什么行业现状啊,研究现状啊什么的写了一大通,感觉好像在写毕业论文似的,我这不废话,先直接上几个图,感受一下. 第一张图是在把代码注入到地图里面,启动首页的时候弹出个浮窗,下载网络的 ...
- 常用android的smali注入代码,android smali代码注入 实战一
有同学在通服里面干活,最近一直忙着4g基站搭建的干活,测试设备(android)测量移动网络数据,没有自动保存记录的功能,只能手动记录各种测试参数,不知道测试软件供应商是怎样想的,竟然不提供的这样的功 ...
- 安卓反编译就这么简单
学习Android开发的过程中,你会向别人学习应用软件是如何开发出来的,那些漂亮的动画和复杂的布局可能让你爱不释手,作为开发者,你可能真的想知道的是如何实现这样的界面效果.现在,您可以通过安卓修改大师 ...
- 安卓修改大师v3.1.0.0:傻瓜式安卓反编译逆向修改工具
安卓修改大师是一款专业免费对任何APK安装包进行反编译的软件,该软件可以替换应用程序界面上的任何文字和图片,还可以通过代码级别的修改,实现汉化.破解.功能增强,而且还能在任何界面添加自定义的代码和功能 ...
- android反编译汉化,安卓反编译工具(Apk Manager)
Apk manager是一个apk处理工具,集多种功能于一身! 下面是主界面的所有选项: [简单功能]修改图片类 ---------------------- 0 提取手机文件到电脑 1 ...
- 安卓反编译揭秘,伪加密APK文件如何被破坏
2019独角兽企业重金招聘Python工程师标准>>> 1. 源码混淆 如上图,对Android APP的源码进行混淆后混淆器将代码中的所有变量.函数.类的名称加密为简短的英文字母代 ...
- unity3D 如何提取游戏资源 (反编译)+代码反编译【P.M.出品】
转自:https://blog.csdn.net/LANGZI7758521/article/details/52291564 首先感谢 雨松MOMO 的一篇帖子 教我们怎么提取 .ipa 中的游戏资 ...
- Java jar 如何防止被反编译?代码写的太烂,害怕被人发现
欢迎关注方志朋的博客,回复"666"获面试宝典 java作为解释型的语言,其高度抽象的特性意味其很容易被反编译,容易被反编译,自然有防止反编译措施存在.今天就拜读了一篇相关的文章, ...
最新文章
- FFmpeg通过摄像头实现对视频流进行解码并显示测试代码(旧接口)
- java导出excel压缩包_java动态导出excel压缩成zip下载的方法
- 用跑得最慢的电脑程序,理解最高深的哥德巴赫猜想
- WCF 第六章 序列化和编码之DataContractJsonSerializer
- 再见了,收费的Navicat
- windows11图文安装流程
- JQuery实现页面跳转
- 微软为.NET程序员带来了最优的跨平台开发体验-WSL
- LeetCode 937. 重新排列日志文件(自定义排序)
- websocketpp 最简单的客户端 一
- 今天看到头条好多新手说摆摊不挣钱
- kernel oops_Java中的OOPS概念– OOPS概念示例
- Python中过滤列表中全部奇数
- d3.js d3.scale.ordinal() --详解 rangeBands
- MATLAB/Simulink仿真 并网型风光混储直流微电网 实现:功率分配、削峰填谷、平抑功率波
- 数位笔的笔芯磨损到什么程度需要更换?压感笔笔芯怎么更换?
- SPSS(十九)SPSS之时间序列模型(图文+数据集)
- 使用Nuxt.js框架开发(SSR)服务端渲染项目
- 分布式事务常见解决方案
- 请把ios文件解压出来是什么意思_全网电影+美剧+日韩剧(ios+安卓)
热门文章
- ACM/ICPC 2018亚洲区预选赛北京赛站网络赛 B Tomb Raider 【二进制枚举】
- 概率论 —— 泊松分布和指数分布
- java okhhtp下载学信网学籍信息
- jvm full gc到底是啥意思
- 计算机Numlock键的功能,电脑开机numlock灯不亮怎么办 NumLock数字锁定键方法
- 【渝粤题库】国家开放大学2021春2411中国现代文学题目
- 如何用MATLAB预测未来人口,使用matlab对将来人口总数进行预测
- reactor项目Maven配置
- linux+qq+输入法下载官网,续:Linux下安装输入法和QQ软件
- UTC时间转北京时间