fart脱壳修复

查看 85|回复 8
作者:Shutd0wn   
fart脱壳后修复
用过fart的大佬都知道,拖出来的dex文件一般是需要修复一下的...
好久没有脱壳了,最近遇到一个apk需要脱壳,于是偷懒使用大神编译好的镜像刷入手机,脱壳一切顺利,上网搜了几个fart.py修复...
拖进jadx,喝口水,开始分析代码:
我看到了这些:
255efc: 0000                |0000: nop // spacer
255efe: 14004b1f003c        |0001: const v0, #int 0x3c001f4b
255f04: 0000                |0004: nop // spacer
255f06: 0000                |0005: nop // spacer
255f08: 0000                |0006: nop // spacer
255f0a: 0000                |0007: nop // spacer
255f0c: 0000                |0008: nop // spacer
255f0e: 0000                |0009: nop // spacer
255f10: 0000                |000a: nop // spacer
255f12: 0000                |000b: nop // spacer
255f14: 0000                |000c: nop // spacer
255f16: 0000                |000d: nop // spacer
255f18: 0000                |000e: nop // spacer
255f1a: 0000                |000f: nop // spacer
255f1c: 0000                |0010: nop // spacer
255f1e: 0000                |0011: nop // spacer
255f20: 1200                |0012: const/4 v0, #int 0 // #0
255f22: 0f00                |0013: return v0
.catches(1 try-catch)
  .try[0013->0014]
   catch(Ljava/lang/Exception;)->handler(0000)
.endmethod
于是我又修复了一边,然后,还是老样子...,此时我一脸懵逼!!!
到底哪里出现了问题???
难道加固又升级了吗,还是方法的inis没有拖出来,让我来打开bin文件看看
开始研究
打开bin文件,随便找一条拖出来的ins看看是不是没有成功拖出来
{name:void com.*.AccountLockActivity$1.(com.*.AccountLockActivity, android.app.Activity, boolean, java.lang.String),method_idx:2013,offset:5953880,code_item_len:28,ins:BQAFAAQAAAAUV5wABgAAAFsB/gBwQLshIEMOAA==}
解出来
050005000400000014579c00060000005b01fe007040bb2120430e00
然后手动贴到dex文件对应的偏移中,使用jadx打开正常了。
就是dex修复的python有问题了...
准备下载hanbing大佬的python看看,代码太复杂被劝退了,于是在github上冲浪了好久,发现了几个简单的脚本,研究了一下,发现就是简单的读取offset,然后把inis解码后写进去就好了,原理很简单,为什么就没修复正确呢?
我们再来看看bin文件
重新观察一下bin文件
{name:void com.*.onError(java.lang.Throwable),method_idx:2014,offset:-1658796796,code_item_len:73,ins:BgACAAEAAQAAAAAAFgAAABIwIwCsJBIBTQQAARIRTQUAARIhEwNNAHEQPJEDAAwCTQIAAXEQggYAAA4AFQAAAAEAAQABAfosAA==}
这个的offset是负值,应该就是这个问题了
现在怎么办呢?拖出来的方法信息包括:
name, method_idx, offset, code_item_len, ins
似乎只能通过method_idx来确定了,打开一个正确的dex,先看看encoded_method:
[table]
[tr]
[td]名称[/td]
[td]格式[/td]
[td]说明[/td]
[/tr]
[tr]
[td]method_idx_diff

脱壳, 文件

Crack_Transport   

学到了学到了 感谢分享
liujieboss   

太强了,学习学习
hhhaiai   

不错的分享。思路没说太多
benq7378   

感谢大神讲解分享
醉酒戏红颜   

没有看懂,也不太明白   但是可以慢慢学习
Memory丶冷风   

谢谢老师分享
alxstar   

“于是偷懒使用大神编译好的镜像刷入手机” 这种镜像哪里找???
horse5700   

安卓版能用再发出来,ok?, 随便写几个代码就发出来,估计你连测试都没有
您需要登录后才可以回帖 登录 | 立即注册

返回顶部