fart抽取还原

使用fart dump下来ins后,需要手动去还原

这时候会觉得非常麻烦,想要自动化。

我下载了dexlib2和baksmali 发现无从下手不知道怎么搞

在肉丝大佬帮助下
https://bbs.pediy.com/thread-259854.htm
参考别人的dx代码去合并,就能还原抽取了

虽然代码吵得很开心,但是还是得知道怎么实现得。

首先下载android得source code,我下得是8.1得,10个g。有点大。

其中我们需要在daivak下复制这三个目录得代码到自己得项目中

image.png

把别人得jar拉到jadx中,在unpacker目录下可以找到main函数

image.png

其中,使用方法就一行代码。其中得methodCodeitem是自己加得。

image.png

一路跟踪下去 可以发现在transtromMethod得方法中进行了更改。
上面是原有得方法。而我们来看看下半部分得代码是怎么还原得

我们和transformCode方法对比着看


image.png
image.png

两个红框中得代码是一样得。而后面就开始写registerSize。

而在自己改得方法中,是直接this.codeOut.write(codeItem.code)

而我们看fart打出来得log


image.png

可以发现也是从registerSize打印起得。说明fart dump下来的ins也是从registerSize起的。因此直接写进去即可

dex字节码

而后面还写入debugInfo这个数据进去。但是据我了解这个东西可有可无,我把这段删去后,jadx也是能正常显示还原后的代码的。

因此整个还原的主要改动就是以上赘述的东西。

当然了,某些地方还要加try catch 。这些细节就不啰嗦。

总结一下,抄代码真爽(我真垃圾)

你可能感兴趣的:(fart抽取还原)