知识点
- APK逆向-数据修改-结构&格式
- APK逆向-逻辑修改-Smail语法
- APK逆向-视图修改-Activity&Xml
前置条件
- 常见安卓逆向工具及环境:
- 安卓模拟器(最好root的真机)
- 启动速度和优化率是雷电好
- 主要还是看自己在哪个模拟器用着最方便,而且兼容性更好
- 小迪准备了夜神和雷电(前两天刚卸载了雷电,裂开)
- Magisk&XP&LSP框架 HOOK环境
- Jadx-Gui 反编译Java代码查看器
- 一般能自动化逆向的就是没有加壳的,加壳的只能逆向出来一部分
- ApkScan-PKID 查壳工具
- 这里可以教一个双击直接打开jar应用程序的方法(方便许多,不需要每次都命令行输入命令了)
- 检测是什么加固
- MT管理器&NP管理器 打包签名综合类
- 推荐使用MT,NP有的时候有点bug,在打包签名的时候会失败
- MT管理器:
- 操作时需要登录账号,随便注册一个就行
- 左上角点击->选择安装包提取->选择要提取的安装包->然后点击提取安装包->然后点击定位(自动跳转到提取出来的安装包位置)->点击提取出来的apk->点击查看->然后点击右上角三个点选择搜索->高级搜索->在下面的输入框中输入搜索的关键字->搜索出来后点击搜索到的文件进行查看
- 注意:搜索时候不用修改上面的欲搜索文件名,本来是通配符*.*(也可以置空,但是除非你就是要搜索指定文件,不然不要动),不要修改,小迪直播的时候就是因为修改了这个没改回去,所以才导致搜不出来东西。
- 小迪踩的坑,那个classes.dex我也没搞那个面具,但是还是打不开
- NP管理器:
- 使用方法和MT大致类似,两个配合使用,比如MT管理器有的虽然可以搜索出来,但是不能进行编辑,这时候就需要使用NP管理器进行搜索,进行编辑
- 开发组手&开发者组手 信息获取综合类
- 算法组手&XP&LSP框架模块 常见HOOK
- Smail语法查询 Smail逻辑修改辅助
- 脱壳相关:https://mp.weixin.qq.com/s/poQPuvaQPadQxRu_WGvy1A
- 使用工具自动脱,手动脱壳的讲不了
- 安卓模拟器(最好root的真机)
- 逆向流程:
➢APK逆向-数据修改-结构&格式
- 演示APK:wuaipojie
- 第一关
目录意义
数据格式
- 呃呃呃,不知道是我没听到还是咋,好像没说啥?
➢APK逆向-逻辑修改-Smail语法
- 演示APK:wuaipojie
- 第二关
- 该关若想一键三连,会弹窗显示请先获取十个硬币
- 使用工具jadx-gui-1.4.7.exe分析该apk后,搜索文本,硬币,可以定位到实现该功能的代码段如下,
- 然后在模拟器中使用NP管理器或者MT管理器搜索文本
硬币
,这里用的是NP,因为MT好像不能编辑这个。
判断逻辑
- 这个就是修改条件判断,MT管理器里面好像有的搜不到,所以需要使用NP管理器,但是NP进行修改的时候是Smali语法,转换为java代码不能进行修改,所以需要修改Smali代码,这里就需要用到一个apk——Smali语法查询_1.0.0.apk,直接输入Smali语法进行查询,根据查询到的语法含义进行修改
- 修改为自己需要的判断逻辑,小迪演示的时候是将ge改为了le,从而实现绕过。
- 然后将新打包的apk进行安装,然后重新打开第二个,可以直接长按一键三连,不会显示先获取十个硬币
存储器值
- 这个好像小迪没讲?
- 他演示完修改判断逻辑之后测试了直接删除(#注释)掉if判断,发现没有成功,然后就说要学会多种方式修改就直接下一关了。
- 后面尝试了一下多删除几行,我是直接从123行的if-ge开始删除到142行,重新打包安装后也可以直接一键三连
➢APK逆向-视图修改-Activity&Xml
- 演示APK:wuaipojie
- 第三关
- 这个实际上就是前面目录意义中提到的组件Activity
- 打开MT管理器->点击左上角三个杠->下滑找到Activity记录->点击后在弹出窗口中点击启动服务->然后重新打开测试软件wuaipojie的第三关->然后返回MT管理器->会发现捕捉到了很多Activity记录->单击即可复制类到剪贴板
- 这里猜测选中的是com.zj.wuaipojie.ui.AdActivity
- 这里猜测选中的是com.zj.wuaipojie.ui.AdActivity
- 然后使用NP管理器进行搜索,依旧是在APK包中的classes.dex中,单击选则Dex编辑Plus,进入后在搜索模块中直接搜索类名,搜索到后点击进入,进入后要是看不懂(因为进入后是smali语法),可以点击右上角转为java代码进行分析(也可以在jadx-gui-1.4.7.exe直接进行搜索,也可以搜索到,直接显示就是java代码)
- 可以发现其中有个函数为loadAd,其中有个3000,联想到那个启动广告是停3秒,所以猜测就是那个广告的显示时间,因此在smali代码中的loadAd函数处进行修改,其中发现0xbb8,即为3000的十六进制表示,修改其为0x0后,重新保存打包apk进行安装,再次打开第三关后,发现确实没有弹窗了(但是小迪好像没发现,后面的东西也都不显示了,就是广告完了之后应该出现的东西)
时间机制
3.03补充,这里以下的还没有完善,暂时就写到这里,前几天开学加一些其他事情,所以没有时间继续完善了,之后要主攻考研,所以更新时间可能会拉得比较长,两三天或者四五天才会一更,感谢看我博客的迪友们,不好意思啊。
- 正常广告要显示几秒后才会消失,我们将广告时间修改,从而使其不显示,
引用更改
HOOK模块
-实战案例1-淘小说-升级VIP
搜关键字-找引用ID-进入逻辑-修改返回值
-实战案例2-刷圈兔-去除广告
开发组手-布局查看-bannerViewPager-修改长宽
-实战案例3-元气壁纸-升级VIP
小黄抓包-改响应-重发固定(前端逻辑安全)
{
"code": 200,
"data": {
"id": 2220156,
"userId": "8kMP5il1",
"phoneNum": "13554365566",
"username": null,
"avatarUrl": null,
"coverUrl": null,
"gender": 0,
"vipType": 256,
"vipPastDueTime": 0,
"vipLabelLevel": 3,
"vipLabel": "元老用户",
"createTime": 1693635001297,
"updateTime": 1693635001297,
"vitalityVipPastDueTime":253392455349 ,
"accountSign": null,
"webBackground": null,
"unionId": null,
"age": 0,
"category": null,
"isVirtual": 0,
"qqUnionId": null,
"pcVipType": 256,
"pcVipPastDueTime": 253392455349,
"vitalityPcVipPastDueTime": 253392455349,
"token": "xxxxxxxxxxxxxxxx"
},
"error_msg": null
}
参考
学习内容均来自小迪安全系列课程:http://xiaodi8.com/