(愛加密系列教程十四)利用無效字節碼指令引起逆向工具崩潰(一)

因爲大部分逆向工具都是線性讀取字節碼並解析,當遇到無效字節碼時,就會引發反編譯工具字節碼解析失敗。php

咱們能夠插入無效字節碼到DEX文件,但要保證該無效字節碼永遠不會被執行(不然您的程序就會崩潰了!)。

首先咱們新建一個測試類。爲了繞過Dalvik運行時代碼驗證,BadCode.java要保證不被調用。(不然運行app,會出現java.lang.verifyerror異常)html

請輸入圖片描述

而後生成apk,用ida打開classes.dex。並找到BadCode類的aaa方法。選中的三行代碼對應」System.out.println("aaaa");」java

請輸入圖片描述

切換到HexView-a視圖,記錄下指令碼 「62 00 02 04 1A 01 8E 07 6E 20 19 10 10 00」 和對應偏移「0003A2A4」面試

請輸入圖片描述

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

把「62 00 02 04 1A 01 8E 07 6E 20 19 10 10 00」改成「12 01 38 01 03 00 FF FF 00 00 00 00 00 00」
請輸入圖片描述app

Opcodes解釋:工具

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

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

FF FF // FFFF (Bad opcodes) //本行代碼被跳過永遠不會執行spa

// 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

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

Ijiami signer:http://www.ijiami.cn/

更多內容,期待您的探索,請關注愛加密,讓您精彩不斷!

愛加密APP漏洞分析平臺:http://safe.ijami.cn/

愛加密官方地址:http://www.ijiami.cn/

相關文章
相關標籤/搜索