IDA动态调试逆向so库(各种坑)

1.判断APK是否支持debuggble模式 

 方法一: 通过过APKKiLLer反编译工具查看 ,如果不是在application节点下去修改然后二次打包即可添加指令android:debuggable="true"

  IDA动态调试逆向so库(各种坑)_第1张图片  

 方法二 :通过aapt指令去查看aapt list -v -a crackme1_killer.apk工具所在路径由下图所示,这条指令会打印出apk相关信息

IDA动态调试逆向so库(各种坑)_第2张图片

IDA动态调试逆向so库(各种坑)_第3张图片

2. 搭建IDA调试android apk测试环境 

1. 在IDA安装目录找到android_server文件 push到android目录中,修改android_server并文件读写权限,以root身份去运行android_server文件(必须要以root身份去运行,否则无法IDA无法获取android应用进程)

IDA动态调试逆向so库(各种坑)_第4张图片

2. 执行指令 
    2.1 adb push androidserver /data/local/tmp/ 
    2.2 chmod 777 /data/local/tmp/android_server 执行权限否则会弹出下图框框,文件执行权限拒绝

这里写图片描述

    2.3 /data/local/tmp/android_server 执行此文件 注意如果下图弹出 出现 bind: Address already in use 错误 这样的错误提示,说明原手机中android_server已经在执行中,找到进程直接干掉重新开启  

干掉指令
这里写图片描述

重开成功标志,代表android_server执行中

IDA动态调试逆向so库(各种坑)_第5张图片

2.3 adb forward tcp:23946 tcp:23946 IDA监听23946端口,PC段转发IDA监听端口,使IDA可以监听android系统进程 
2.4 打开IDA,使IDA添加需要调试的android进程,

IDA动态调试逆向so库(各种坑)_第6张图片

2.5 点击确认以后会弹出android系统进程列表 选中需要调试的进程即可,如果未弹出下图提示为出现的话,在output window窗口输出链接失败,无效之类的提示的话请尝试多次执行 IDA监听端口转移指令即可 

IDA动态调试逆向so库(各种坑)_第7张图片

2.6 点击Debug-----> debug option 选中下图 

IDA动态调试逆向so库(各种坑)_第8张图片

2.7 运行应用程序 开启IDA断点调试
在执行下面这条指令,最好配置DDMS环境变量 ,在dos窗口输入ddms,弹出ddms窗口,弹出窗口以后经常会弹出ddms端口被占用的情况,解决方案是修改ddms窗口端口号最好,FILE --->Option

IDA动态调试逆向so库(各种坑)_第9张图片

ddms 执行文件所在路径

IDA动态调试逆向so库(各种坑)_第10张图片

jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8701,链接的ddms对应的端口,开始测试模式的应用,点击IDA下图 出现下图提示开启IDA调试模式成功

IDA动态调试逆向so库(各种坑)_第11张图片

IDA动态调试逆向so库(各种坑)_第12张图片

 选中需要调试的so库 下断点,F7 代表进入方法,F8代表向下执行,F9
 进入下一个断点,若无及退出程序 ,函数有个固定的执行顺序,

IDA动态调试逆向so库(各种坑)_第13张图片

注意啊: 在调试so库的时候 先执行.init_array 其次 JNI_OnLoad
,在调试so库的很多时候要双开IDA 动静太结合的双调,因为IDA在编译的过程不能全部展示所要调用的函数,指针还有内存地址

你可能感兴趣的:(反编译,工具下载以及使用详解)