一:
開第乙個cmd
adb shell
suchmod 777 /data/local/tmp/as
/data/local/tmp/as
//啟動as服務
二:開第二個cmd
adb forward tcp:23946 tcp:23946 //埠**
三:開第三個cmd
adb shell
suam start -d -n com.droider.crackme0201/.mainactivity
//除錯模式 開啟apk
後面的包名跟 入口點 可以通過開啟 com.willme.topactivity-1.4.1.apk 獲取得到
或者是在 androidmanifest
裡面找到 包名 跟 入口activity名
四:ida遠端除錯掛接
debugger->attach->remote arm linux/android debugger->debug options
debug options勾選以下三項
suspend on process entry point
suspend on thread start/exit
suspend on library load/unload
埠要設定為 23946 //?這裡存在疑問? 回頭再來研究
在模組列表視窗找到libdvm.so,雙擊
搜尋dvmdexfileopenpartial函式,雙擊,段首下段
f9執行起來 //記得要執行起來 別忘記
五:開啟ddms(執行->monitor),選中包名,開啟8700埠
六:jdb -connect com.sun.jdi.socketattach:hostname=localhost,port=8700
ida 出add map…視窗,取消,應用
這時 沒反除錯的話 就會執行到 斷點處了
七:dvmdexfileopenpartial 函式的原型如下所示:
int dvmdexfileopenpartial(const void* addr, int len, dvmdex** ppdvmdex)
第乙個引數addr表示dex檔案在記憶體中的起始位址
第二個引數len 表示dex檔案的大小
第三個與我們脫殼無關
arm的傳遞引數機制規定:
r0 儲存著函式從左至右的第乙個引數
r1 儲存著函式從左至右的第二個引數
在 ida 中編寫idc指令碼dump記憶體還原dex檔案
file,script
auto fp, dex_addr,end_addr;
fp = fopen("d:\\dump.dex","wb"); //盡量別寫c盤 會出現很多問題
end_addr = r0 + r1;
for (dex_addr = r0; dex_addr < end_addr; dex_addr ++)
fputc(byte(dex_addr),fp);
然後執行 等一會就dump完畢 去d盤目錄下找 dump.dex
然後 用dexfixer.exe 修復下脫殼後的dex
再用apktoolbox 工具裡 dextojar 開啟jar等操作 檢測下 是否脫殼成功
指令碼編寫 編寫 LLDB 偵錯程式指令碼
lldb 偵錯程式提供對 python 指令碼的支援,可以執行一些自動化的操作,提供工作效率。本文從 helloworld 開始學習如何編寫 lldb 指令碼。編寫第乙個 lldb 指令碼 下面我們來實際操作編寫 lldb 偵錯程式指令碼。在計算機上建立乙個目錄用於存指令碼檔案,比如我們在 user...
windows bat指令碼編寫
獲取當前所在目錄完全路徑 echo off echo 完全路徑 dp0 pause color設定控制台前景和背景顏色 可同時顯示各種顏色 echo off chcp 437 nul graftabl 936 nul if not exist config.nt copy windir system...
secureCRT指令碼編寫
securecrt支援三種指令碼語言 vbs,js,python。三種指令碼分別以一下三種形式開頭 vbs language vbscript inte ce 1.0 js language jscript inte ce 1.0 python language python inte ce 1.0...