【转】IDA 调试 Android Android_server提示端口被占用

最近都在学一些反编译安卓相关的东西,其实网上有不少教程关于用 IDA 调试 Android 的过程,主要记录一下我遇到的坑html

首先 Android手机要是root过的android

 

还要注意的一点是apk中的 AndroidManifest.xml 中debuggable要为trueshell

 

一、将 apk 装到手机上,而后执行命令行:markdown

adb shell am start -D -n "com.gabo.test/com.unity3d.player.UnityPlayerActivity"tcp

最后一个参数是"包名/要运行的Activity"post

 

二、查找运行的应用的端口号,并执行命令:adb forward tcp:5005 jdwp:9973url

 

 

 

三、首先打开 IDA 中dbgsrv文件夹,将里面的 android_server 弄到手机上:命令行

 adb push android_server /data/local/tmpdebug

 

 

四、运行android_server3d

adb shell

chmod 755 android_server

 

五、打开另外一个CMD 窗口,运行  adb forward tcp:23946 tcp23946

 

六、运行 IDA,设置Debugger

 选择Android debugger

 

输入Hostname为localhost,点击 Debug options 按钮设置

 

而后肯定

如有发现其余错误的话,多是由于没有第三步没有弄或端口号弄错了,或者失败了,在操做一次第5步,而后再进行第6步就能够了

 

若发现如下问题,多是由于运行了64位的IAD,从新运行32位的IDA

  上面是32位,下面64位,从新运行上面的从新操做一变就能够了。。我当时就是弹窗的,如今就变成只提示下面的错误了

 

上面的问题解决完后,会弹出窗口,而后选中咱们要的进程,点ok就行

 

七、第6步结束后,IDA 会自动暂停,这时候执行 jdb  -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=5005

由于上面运行了adb shell am start -D -n  这条命令,设备上运行的应用会等附加调试后才会继续执行下去,上面的jdb命令就是为了让应用继续执行

 

八、以后回到 IDA,能够先找到本身想要断点的地方设置好断点后,按 F9 继续执行下去,刚才的jdb 命令就会看到结果

 

而后就结束了。。

 

IDA下载地址

连接: http://pan.baidu.com/s/1kV2JRZx 密码: s59q

 

Android_server提示端口被占用

 

root@android:/data/local/tmp # ./android_server
IDA Android 32-bit remote debug server(ST) v1.19. Hex-Rays (c) 2004-2015
Listening on port #23946...
另开命令行进行tcp端口转发:

adb forward tcp:23946 tcp:23946

此android_server需和ida是配套的
出现 bind: Address already in use 错误
这是由于手机中可能已经在运行android_server,使用 ps | grep android_server 看一下,有的话杀掉.
以下:(14061是pid)
root@android:/ # ps | grep android_server
root 14061 13574 11180 9504 ffffffff 40183da0 S /data/local/tmp/android_server
127|root@android:/ # kill -s 9 14061

from:https://www.cnblogs.com/gabo/p/5631643.html

相关文章
相关标签/搜索