利用無效字節碼指令引發逆向工具崩潰(二)

 上一節我們介紹了一種利用無效字節碼指令引發逆向工具崩潰的方法。(http://blog.csdn.net/lz201234/article/details/46004573)可惜的是大部分反編譯工具已經修復了該bug。但是如果我們插入有效的字節碼指令,但是後跟無效的數據引用,結果會是怎麼樣呢?

     使用C32asm,以十六進制的方式打開dex文件。按快捷鍵“Ctrl + G”,定位到“0003A2A4”

把“62 00 02 04 1A 01 8E 07  6E 20 19 10 10 00”改爲“12 01 38 01 03 00 1A 00 FF FF 00 00 00  00”(不清楚的可以看上一篇文章

Opcodes解釋:

12 01  //  const/4  v1, 0 //v1=0

38 01 03 00  //  if-eqz   v1, loc_3A2AC //if(v1==0) 跳轉到 loc_3A2AC:

1A 00 FF FF //  const-string v0,(不存在的引用 FFFF)

// 本行代碼被跳過,永遠不會執行

// loc_3A2AC:

 

保存dex。把修改後的dex文件拖入DexFixer進行修復。

 

用修復後的dex覆蓋原apk中的dex文件。

刪除META-INF簽名文件

 

使用簽名工具,對apk重新簽名。

 

Apk安裝到手機,運行成功

 

 

下面試試反逆向工具的效果

 

Apktool:(反編譯失敗)

 

Dex2jar:(反編譯失敗)

 

用到的工具:

IDA http://pan.baidu.com/share/link?shareid=132208&uk=1795434040

C32Asm http://www.crsky.com/soft/3128.html

DexFixerhttp://bbs.pediy.com/showthread.php?p=1158816

Ijiami signerhttp://t.cn/R2tfvdP  (下載此簽名工具需登錄註冊http://t.cn/R2tfAiC


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章