IDA动态调试逆向so库(各种坑) - Go语言中文社区

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


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

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

  这里写图片描述  

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

这里写图片描述

这里写图片描述

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

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

这里写图片描述

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执行中

这里写图片描述

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

这里写图片描述

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

这里写图片描述

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

这里写图片描述

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

这里写图片描述

ddms 执行文件所在路径

ddms 执行文件所在路径

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

这里写图片描述

这里写图片描述

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

这里写图片描述

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

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/a18302465887/article/details/60867742
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2019-09-13 16:48:23
  • 阅读 ( 2129 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

推荐文章

猜你喜欢