關鍵字:libdvm dexfileopenpartialpk fopen
樣本:mtkediter原版.apk
反編譯 查殼 有愛加密殼
脫殼:0x1:
adb shell
suchmod 755 /data/local/tmp/as
/data/local/tmp/as
0x2:
adb forward tcp:23946 tcp:23946
0x3:
adb shell
am start -d -n com.zxjw.mtkediter/.ui.detection
0x4:
開ida附加
module 裡選擇 libdvm.so
再選擇 dexfileopenpartialpk
在這下個斷點
這個apk 還有檢測 ptracerid 埠 反除錯
在 fopen 處也下個斷點
f9執行
0x5:
開啟 monitor(ddms)
0x6:
jdb -connect com.sun.jdi.socketattach:hostname=127.0.0.1,port=8700
則到了fopen斷點處
0x7:
hex view視窗裡 右鍵
synchronize with r0
注意觀察 r0值的文字顯示
出現這個 /proc/***/status 關鍵字後
說明已經開啟了 檢測的 關鍵文字了
返回到上級
再 f8 單步步過 除錯 注意還是看 r0值的 文字顯示
這個 name欄位名 是status檔案裡的 第乙個字段
說明在這裡的時候 一步步的 提取出欄位 那我們就在這下斷點
直到 提取 ptracerid 字段
如果有多次 檢測的時候 我們就多次修改吧 直到 執行到 dexfileopenpartialpk 斷點處
這個_z21dvmdexfileopenpartialpkvipp6dvmdex 函式的
第乙個引數是 dex檔案 基址
第二個引數是 dex檔案 大小
在 hex view視窗裡 紅色位置 可以很清楚的看到
第乙個紅色標記處 是 基址
第二個紅色標記成是 大小 這個地方要注意下 記憶體中數值是 高低位互換的
a4 11 03 00 高低位轉換下 真正的值則是 03 11 a4 即是 0x311a4
這時我們用 ida 指令碼 提取出來 dex(這個時候是脫殼後的 僅僅是對這個樣本來說 這裡是脫殼後的 不同的加殼 不一樣的)
指令碼命令
auto fp,addr_start,addr_now,size,addr_end;
addr_start = r0;
size = r1;
addr_end = addr_start+size;
fp=fopen(「c:\dump.dex」,「wb」);
for(addr_now = addr_start;addr_now或者
auto fp,addr_start,addr_now,size,addr_end;
addr_start = 0x6141952c;
size = 0x311a4;
addr_end = addr_start+size;
fp=fopen(「c:\dump.dex」,「wb」);
for(addr_now = addr_start;addr_now都是可以的
run 提取完後 到 jeb裡 檢測下
ok 完成脫殼
Youpk 實戰脫殼 愛加密 梆梆脫殼
下面是我整理的乙份常用的脫殼機的對比 這裡在網上找了梆梆2020 加固過的樣本。這裡加殼前的 比較簡單 只有乙個類mainactivity mainactivity 裡只有簡單的add 和 sub方法。可以看到方法裡面的 也比較簡單,返回相加相減的值。這裡可以看到 加殼後 mainactivity ...
「愛加密」 動態脫殼法
測試環境為 安卓2.3 ida6.6 下面看具體操作步驟 具體怎樣用ida動態除錯我就不多說了,網上己經有很多文章了,下面直接進入正題。1.準備好調式環境後 用ida附加程序。2.附加成功後按 g 鍵 跳到dvmdexfileopenpartial函式與fopen函式與fgets函式去下好斷點。3....
愛加密企業版靜態脫殼機編寫
0x00 apk加固簡介 0x01 愛加密流程簡單分析 dalvik 0x02 殼執行流程大致如下 0x03 愛加密企業版加固後apk反編譯如下 從上圖可以看到方法指令都被抽走了 0x04 靜態脫殼機編寫 加殼時將方法指令抽走後自定義格式加密存放在assets ijiami.ajm檔案中,通過ida...