IDA編寫指令碼脫殼某加固 流程

2021-09-27 03:16:00 字數 1649 閱讀 1688

一:

開第乙個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...