【轉】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

相關文章
相關標籤/搜索