脱壳后修复>fart脱壳后修复

admin 2020年11月26日09:30:50评论10 views字数 1567阅读5分13秒阅读模式

用过fart的大佬都知道,拖出来的dex文件一般是需要修复一下的...

最近遇到一个apk需要脱壳,直接使用大神编译好的镜像刷入手机,脱壳一切顺利,上网搜了几个fart.py修复...

拖进jadx,开始分析代码:

我看到了这些:

脱壳后修复>fart脱壳后修复

于是我又修复了一边,然后,还是老样子...,此时我一脸懵逼!!!

到底哪里出现了问题???

难道加固又升级了吗,还是方法的inis没有拖出来,让我来打开bin文件看看

 

开始研究

 

打开bin文件,随便找一条拖出来的ins看看是不是没有成功拖出来

 

{name:void com.*.AccountLockActivity$1.<init>(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:

 

脱壳后修复>fart脱壳后修复

 

可以通过method_idx_diff属性值的叠加计算出method_idx,尝试读取原始dex的code_off来获取正确的偏移,然后完成修复。

 

写代码

 

第一个问题,是否有python版本的dex文件结构解析脚本...

通过google终于找到了,感谢kaitaistruct

脱壳后修复>fart脱壳后修复

 

顺便找到了uleb128的解析python脚本

 

脱壳后修复>fart脱壳后修复

 

下来就是解析修复dex了

 

脱壳后修复>fart脱壳后修复

脱壳后修复>fart脱壳后修复

脱壳后修复>fart脱壳后修复

 

到这里就结束了,就可以尝试修复dex文件了

 

windows下安装使用

 

安装kaitaistruct

pip install --upgrade

git+https://github.com/kaitai-io/kaitai_struct_python_runtime.git

 

使用

python fart_fix_dex.py -d dexfile -b binfile

 

Android下的修复app

实现了一个Android版本的修复dex的app,基本原理与python版本一致,再次感谢KaitaiStruct,让我们有了java版本的dex文件解析方法。

 

https://github.com/sepyeight/FartDexFix.git

脱壳后修复>fart脱壳后修复

 

 

原文始发于微信公众号(映山红coin安全团队):脱壳后修复>fart脱壳后修复

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2020年11月26日09:30:50
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   脱壳后修复>fart脱壳后修复https://cn-sec.com/archives/1056573.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息