- ?学习方法:
- 边用边学。
- 安卓逆向
- 脱壳至二次打包可用
- 正向加壳可以做的事情
- 代码抽取到jni里
- 代码抽取及还原。参考网址:https://m.wang1314.com/doc/webapp/topic/17363230.html
- 代码混淆,增加阅读难度,不影响运行。
- vmp, 将代码抽取到jni里使用汇编实现(个人理解,肯定有误)。
- 动态加载dex
- 反调试
- 逆向被加壳的app
- 使用fart修复apk
- 先使用脱壳机获得apk和代码指令的txt格式
- 使用fart.py进行修复dex文件
- 重新打包成apk,使用安卓monitor分析log
- 如果有反调试的话,使用01editor修改dex或者so文件,直到可以二次打包
- 二次打包,直到可以正常运行,如果失败的话,重复3的步骤
- 算法还原
- 这里默认需要还原的代码在jni里
- 使用ida进行静态分析,找到要分析的方法
- 动态调试
- 使用ida_server 动态调试
- 进入调试窗口
- 使用ida-trace,调用方法,打印被trace 的指令到文本中
- 按照trace到的指令进行还原算法,直到还原完一个版本
- 分别多次调用实际的算法和自己还原的,直到返回结果一致
- 多次调用步骤4,直到结果都一致。
- 使用unidbg模拟动态调试
- 使用unidbg模拟环境,调用到需要测试的jni方法并实现hook,
- 使用unidbg进行traceCode
- 按照trace到的code进行算法还原,直到还原完一个版本
- 分别多次调用实际的算法和自己还原的,直到返回结果一致
- 多次调用步骤4,直到结果都一致。
- 逆向工具
- ?jnitrace? 可以打印方法及方法里的参数等。
- 参考官网https://pypi.org/project/jnitrace/
- 自行找视频或者音视频学习。
- 等分享
- frida? 轻量级hook工具,参考官网https://frida.re/docs/javascript-api/
- 网上大多时介绍安装的,比较简单。可以找个参考下安装
- 学习hook,可以参考下这个https://reao.io/archives/90/
- unidbg
- 官网地址:https://github.com/zhkl0228/unidbg
-
?学习hook,可以参考下这个https://reao.io/archives/90/
-
IDA
-
需要学习静态分析 -
需要学习动态调试 -
需要学习trace code -
参考资料 -
链接:https://pan.baidu.com/s/1U6UgZzhDRDlhfxRf1KgzzA? 提取码:rsuh
-
ARM反汇编
-
我参考的时这个博客,https://blog.csdn.net/zlmm741/article/details/105160970/,我们重点关注的时反汇编。 -
如果再有时间可以读下《汇编语言(第3版) 王爽著》,
-
链接:https://pan.baidu.com/s/1oEMR6iC9vSV0keL-HgzYcw 提取码:jp3w
-
xpose?
-
学习xpose可以参考我的这个博客,https://blog.csdn.net/xubaoyong/article/details/122134698
-
安卓源码阅读网站:
-
http://aospxref.com/
-
实战例子
-
x手 -
x音 -
x红书? 这些是期望达到的。
|