首頁 > 網際網路

【愛加密】Android APP怎樣防止工具逆向破解

2019-11-29 23:42:43

        由於大部分逆向工具都是線性讀取位元組碼並解析,當遇到無效位元組碼時,就會引起反編譯工具位元組碼解析失敗。我們可以插入無效位元組碼到DEX檔案,但要保證該無效位元組碼永遠不會被執行(否則您的程式就會崩潰了!)。

1

所需要的工具有: IDA、 C32Asm、 DexFixer!

 

 

我們新建一個測試類。為了繞過Dalvik執行時程式碼驗證,BadCode.java要保證不被呼叫。(否則執行app,會出現java.lang.verifyerror常)


1

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


2

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


3

使用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 FF FF 00 00 00 00 00 00」


1

12 01 //const/4 v1, 0 //v1=038 01 03 00// if-eqz v1, loc_3A2AC //if(v1==0) 跳轉到 loc_3A2AC:FF FF //FFFF (Bad opcodes) //本行程式碼被跳過永遠不會執行// loc_3A2AC:

2

 儲存dex。把修改後的dex檔案拖入DexFixer進行修復。


3

用修復後的dex覆蓋原apk中的dex檔案。


4

刪除META-INF簽名檔案


5

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


6

Apk安裝到手機,執行成功


1

 Apktool:(很遺憾,新版本已經修復了這個錯誤)


2

 Dex2jar:(反編譯失敗)



IT145.com E-mail:sddin#qq.com