码迷,mamicode.com
首页 > 移动开发 > 详细

安卓IDA动态调试总结

时间:2018-08-31 21:27:29      阅读:667      评论:0      收藏:0      [点我收藏+]

标签:个数   debug   forward   端口号   选中   pat   ddr   最好   安全策略   

安卓ida动态调试总结

不出问题的理想步骤(带反调试的版本)

需要的软件:

  • ida7.0/6.8
  • ddms(或者sdk/tools/monitor.bat)
  • root真机一部(因为android_server是基于arm架构,而大多数模拟器基于x86,所以最好是真机)或者AVD模拟器
  • 待调试apk(test.apk,包名:)
  • adb

正确步骤:

  1. 新开一个cmd
  • adb push android_server /data/local/tmp(android_server在ida的dbgsrv目录下)
  • adb shell
  • su
  • cd /data/local/tmp
  • chmod 777 android_server
  • ./android_server
  1. 新开一个cmd
  • adb install test.apk
  • adb forward tcp:23946 tcp:23946
  • adb shell am start -D -n 包名/类名(程序包名可以在AndroidMainfest文件中找到,类名我是用androidkiller的入口函数;这是以启动模式启动)
  1. 打开IDA,Debugger->attach->android_server ,

    技术分享图片

先Debug options设置:

技术分享图片

然后hostname设置如图:

技术分享图片

然后点击ok,弹出进程列表

技术分享图片

Search apk包名,然后记住进程ID,然后重要的一步,在Debug option里面:

还是选中那三个选项。

4.cmd

  • adb forward tcp:8899 jdwp:11514 (11514是进程的id)
  • jdb -connect com.sun.jdi.SocketAttach:port=8657,hostname=127.0.0.1

jdb的port参考的是monitor的相关进程的端口号:

技术分享图片

等前面的蜘蛛变绿(不用jdb,前面蜘蛛为红色),然后就可以F9运行了。

下面说说遇到的问题:

1.首先保证apk是否支持debuggble模式,在AndroidMainfest文件里,application结点android:debuggable="true",如果不是,可修改后二次打包

如:

技术分享图片

2.原手机android_server已经在运行问题:

在执行./android_server时弹出bind: Address already in use

解决方案:

在adb shell 里:ps | grep android_server

然后他会输出进程ID,第一个数即为进程id:

如输出:root 12212 13423 23213 后省略

然后执行kill -s 9 12212

3.IDA attach报错

(1)incompatible debugging serer:address size is 4 bytes

错误原因:是android_server是32位的,而ida是64位的。

解决方案:启动32位ida

(2)Bogus or irresponsive remote server

错误原因:SELinex安全策略限制

解决方案:

  • adb shell
  • su
  • setenforce 0

安卓IDA动态调试总结

标签:个数   debug   forward   端口号   选中   pat   ddr   最好   安全策略   

原文地址:https://www.cnblogs.com/ICDAT/p/9567402.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!