使用fart dump下來ins後,需要手動去還原
這時候會覺得非常麻煩,想要自動化。
我下載了dexlib2和baksmali 發現無從下手不知道怎麼搞
在肉絲大佬幫助下
https://bbs.pediy.com/thread-259854.htm
參考別人的dx代碼去合併,就能還原抽取了
雖然代碼吵得很開心,但是還是得知道怎麼實現得。
首先下載android得source code,我下得是8.1得,10個g。有點大。
其中我們需要在daivak下複製這三個目錄得代碼到自己得項目中
把別人得jar拉到jadx中,在unpacker目錄下可以找到main函數
其中,使用方法就一行代碼。其中得methodCodeitem是自己加得。
一路跟蹤下去 可以發現在transtromMethod得方法中進行了更改。
上面是原有得方法。而我們來看看下半部分得代碼是怎麼還原得
我們和transformCode方法對比着看
兩個紅框中得代碼是一樣得。而後面就開始寫registerSize。
而在自己改得方法中,是直接this.codeOut.write(codeItem.code)
而我們看fart打出來得log
可以發現也是從registerSize打印起得。說明fart dump下來的ins也是從registerSize起的。因此直接寫進去即可
而後面還寫入debugInfo這個數據進去。但是據我瞭解這個東西可有可無,我把這段刪去後,jadx也是能正常顯示還原後的代碼的。
因此整個還原的主要改動就是以上贅述的東西。
當然了,某些地方還要加try catch 。這些細節就不囉嗦。
總結一下,抄代碼真爽(我真垃圾)