逆向-android-实战
1. 逆向基础
1.1 各种文件转换
整体来看

局部(反编译部分)

局部(生成apk)

1.2 AS环境搭建
- 目前Android studio 已升级到3.x 。本人用3.0版本。3.0版本以上兼容较差,坑较多。
- 本人jdk版本1.8.0_101。尽量选这个jdk版本左右的版本。不然monitor启动不了,全是因为eclipse插件原因
- 安装好AS后让其自己下载Android sdk 。不然又是各种坑
- Android sdk模拟器貌似只支持Intel。amd处理好像无法启动sdk中的模拟器
1.3 window逆向工具
- Android killer,一款集打包,编译,逆向的工具。只有window版本
1.4 Mac逆向工具
- AndroidCrackTool mac 打包,编译,签名,dex2jar(不好用)
1.5 window,Mac通用逆向工具
- JEB(很强大)
- jadx (免费,定时有更新)
1.6 Android虚拟机调试器原理与实现
1.7 apk调试设置方式
- 修改xml的android:debuggable=”true”属性,重新打包。
- 利用xposed安装BuildProp Enhancer pak,修改ro.debuggable=1
- 使用工具mprop修改
- 我们使用的工具是mprop,这里所有的条件是手机必须root
- adb push “你下载好的mprop目录的mprop文件” /data/local/tmp/
- 执行shell
1
2
3
4
5
6# 启动
$ data/local/tmp/mprop
# 设置
$ setprop ro.debuggable 1
# 恢复init默认逻辑,之后就无法再修改ro属性了
$ /data/local/tmp/mprop -r
1.8 逆向相关脚步
- java -jar ../../baksmali-2.2.6.jar d blackfish/classes7.dex -o xiaohei/src (提取smail代码)
- java -jar smali.jar a out -o modify.dex 将smali合并成dex
2. 调试
2.1 smali调试
- smailidea.jar 下载并添加到idea
- java -jar baksmali-2.0.3.jar disassemble XX.apk -o ./XX
- adb shell am start -D -n 应用包名/Activity具体类名
- adb forward tcp:8700 jdwp:18896
- 加入断点,run remote debug 8700(这里的端口查看monitor)
2.2 IDA调试
开启android_server
1
$ ./android_server
端口转发
1
2
3# 接通adb,端口转发
adb forward tcp:23946 tcp:23946
# 注意:so反调试会检查文件名或端口。尽量改到名称和端口启动app
1
$ adb shell am start -D -n XXXX/XXX
开启ida,debugger option选项,附加进程
运行jdb调试
1
2jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=xxx
# 注意:其中xxx为monitor中处于debug状态的端口导入结构体jni.h,动态识别函数名称.