使用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 。这些细节就不啰嗦。
总结一下,抄代码真爽(我真垃圾)