1港粱、工具介紹
IDA pro: 反匯編神器隔盛,可靜態(tài)分析和動態(tài)調(diào)試旨巷。
模擬機或者真機:運行要調(diào)試的程序截歉。
樣本:阿里安全挑戰(zhàn)賽第二題:http://pan.baidu.com/s/1eS9EXIM
2、前期準備
2.1? 安裝樣本程序
adb install AliCrackme_2.apk
2.2 上傳android_server文件
adb push android_server /data/local/tmp/adb shell chmod777 /data/local/tmp/android_server
3腊脱、調(diào)試步驟
3.1? 開啟android_server,監(jiān)聽23946端口乏悄,與IDA pro通信
adb shell /data/local/tmp/android_server
3.2? 設置本地端口轉(zhuǎn)發(fā)
adb forward tcp:23946 tcp:23946
3.3? 以調(diào)試模式啟動程序
adb shell am start -D -n com.yaotong.crackme/.MainActivity
3.4 啟動IDA pro浙值,點擊Debugger->attach->Remote ARMLinux/Android debugger,輸入localhost檩小,選擇要調(diào)試的進程即可开呐。
3.5 附加程序成功后,選擇规求,Debugger option筐付,勾選
suspend on process entry point
suspend on thread start/exit
suspend on library load/unload
三項,然后按f9運行調(diào)試程序阻肿,此時IDA pro 掛起
3.6? 使用jdb恢復程序執(zhí)行
jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8700
3.7 此時IDA pro斷在linker中瓦戚,此時module中并沒有l(wèi)ibcrackme.so,說明licrackme.so還沒有加載到內(nèi)容中丛塌,只需要跟幾步f8较解,在寄存器中看到libcrackme.so加載進來了,就可以在module中找到赴邻,有兩種情況
1印衔、如果IDA Pro能夠解析成功,雙擊module中的libcrackme.so就可以看到它export的函數(shù)乍楚,就可以右鍵下斷點了
2当编、如果IDA Pro解析失敗,需要再開一個IDA徒溪,查找到要下斷的函數(shù)地址忿偷,加上libcrackme.so加載到內(nèi)存的地址即可(在init_array下斷只能使用這種方法)。
3.8? IDA Pro按F9幾次臊泌,直到斷在自己下斷的地方即可
3鲤桥、總結(jié)
本章內(nèi)容和調(diào)試原生程序有重復,就省略了一些內(nèi)容渠概。
另外還有一種so函數(shù)是在用戶操作的時候才能觸發(fā)茶凳,只需要下好斷點,用戶進行觸發(fā)即可
from:http://www.cnblogs.com/gordon0918/p/5594067.html