吾爱破解 - LCG - LSG |安卓破解|病毒分析|破解软件|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

搜索
查看: 6706|回复: 80

[Android 脱壳] 某加固的尝试(一)

  [复制链接]
straceme 发表于 2019-10-12 10:44
本帖最后由 straceme 于 2019-10-12 11:17 编辑

1. 一次加固分析
由于要做测试,通过分析发现该应用加固了。该加固并不常见。尝试进行脱壳
1.1. 样本信息
包名:com.xxx.jincheng
应用名称:某某银行
版本信息:3.0.8
MD5值:d0c5c54ca31ebcfa4834ebe7ecb23539

1.2. 初步分析
通过壳java层代码发现此加固的核心代码在libvdog.so中,其中libvdog.so文件的elf文件魔数被修改了, 壳代码会在写文件时将文件还原回去,如下:

图片1.png

图片2.png
直接用010editer把魔数改称 7F 45 4C 46 即可,此时文件libvdog.so可以使用IDA进行分析。在使用ida 打开文件过程中会发现,存在错误提示如下:

图片3.png

这说明libvdog.sosection信息已经被处理了,使用010Editer工具分析elf文件结构

图片4.png

但不影响分析。由于此动态库的导出函数可以判断,这so文件应该是一个自定义的linker文件。

图片5.png
接下来就需要分析,真正的so代码数据存储在哪里,通过初步查看发现so函数已经混淆了。

图片6.png

手动调试几乎不可能,几乎所以函数都进行了代码膨胀。
不过有一点还是可以庆幸的就是libvdog.so的字符串并未进行混淆,
详细分析该这so文件,代价太高了!!!,代先不进行分析,先进行整体dump。看看能拿到多少代码。
1.3. dex文件整体dump

dex文件整体dump有很多办法,也有很多点,可以通过获取到所有dexcookie,然后找到dex文件地址,也可以直接对关键函数进行拦截,我选择了DexFileLoader::OpenCommon这个点(android 10),其他版本的机器不确定有没有这个函数,直接hook。函数如下:

图片7.png

Dump 得到的dex文件如下:

图片8.png

使用JEB查看,通过分析发现基本上可以获取的所有的代码,
图片9.png
图片10.png

到这里基本上就可以正常分析了
通过查看发现。还有一部分代码不被抽取了。大概特征如下:

图片11.png
1.4. 抽取函数破解尝试
怎么还原这些被抽取的函数。尝试在工具dexhunter,然并卵。并没有什么用处。代码逻辑还是没还原。尝试分析其smali代码逻辑。
图片12.png
猜测,通过i1函数进行还原。上面nop代码,然后在执行真正代码逻辑。这样的好处,当运行到某个函数时候代码才会还原。关键点在i1函数中,
可以通过两个方面进行解决

1. 直接分析i1函数,然后进行还原
2. 使用开源方案开源的方案的方案。

通过虚拟机主动加载类函数。是个不错的思路。https://bbs.pediy.com/thread-252630.htm可以直接按照这个思路,
对虚拟机进行修改。具体的细节后面整理完在开源,坑有点多还原前后代码对比
还原前:
图片13.png
还原后:
图片14.png
直接分析i1的方式还没时间完成分析。工作量太大。
1.5. 自定义dex解释器代码还原
搜索发现,所有的onCreate方法代码逻辑都被替换掉了,开始以为是抽取的后来发现不是。
代码如下:
图片15.png
通过hook 简单验证了下;
发现当运行时会调用JNI(Java Native Interface)的接口执行代码逻辑。
由于分析详细过程可能会涉及的加固的核心利益,暂不进行分享。
大概思路,使用libdexfile这个库,对dex文件进行拆分,然后新建一个codeItem
图片16.png
对代码进行还原。
中间涉及了太多。后面有机会进行分享。还原后的代码如下:
图片17.png
1.6. 修复后的dex下载
下载: https://www.lanzous.com/i6pnm1c 密码:4jxk
由于时间问题,很多的细节,都没写,后面将会将具体细节分享出来。

2. 参考以及使用工具
2.1. 代码
l Android Open Source Project(libdexfile) https://android.googlesource.com/platform/art/+/master/libdexfile/
l PLT hook: https://github.com/iqiyi/xHook
l inlineHook https://github.com/jmpews/HookZz
2.2. 工具
l IDA Pro
l Clion
l 010editer

2.3. 脚本
l 010Editer elf文件脚本:https://raw.githubusercontent.com/strazzere/010Editor-stuff/master/Templates/ELFTemplate.bt   

免费评分

参与人数 32吾爱币 +35 热心值 +32 收起 理由
bianfanggege + 1 + 1 谢谢
云上天堂 + 1 支持,感谢
鹤舞九月天 + 1 + 1 谢谢@Thanks!
0xxx + 1 + 1 我很赞同!
糖粒er + 1 + 1 谢谢@Thanks!
不爱everyone + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
hjw45611 + 1 + 1 热心回复!
Spareks + 1 + 1 用心讨论,共获提升!
you920928 + 1 + 1 谢谢@Thanks!
yaoyao7 + 1 + 1 我很赞同!
安尼大大 + 1 + 1 我很赞同!
N0LL + 1 + 1 谢谢@Thanks!
llm4041 + 1 + 1 看蒙了,真牛批
飞龙Test + 1 + 1 谢谢@Thanks!
JuDei + 1 + 1 热心回复!
禾水木 + 1 + 1 热心回复!
lookerJ + 1 + 1 用心讨论,共获提升!
fcguo800 + 2 + 1 没得说,关注支持大佬分享。
sunnylds7 + 1 + 1 热心回复!
AnonymousQsh + 1 + 1 用心讨论,共获提升!
丶咖啡猫丶 + 1 + 1 谢谢@Thanks!
thinkpad_420 + 1 + 1 我很赞同!
shun + 1 + 1 plus
莫流云 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
dreamlivemeng + 1 + 1 用心讨论,共获提升!
一人之下123456 + 1 用心讨论,共获提升!
XhyEax + 3 + 1 热心回复!
mrsdz + 1 + 1 热心回复!
jiajs + 1 + 1 我很赞同!
abc2342537 + 1 + 1 我很赞同!
Gentlewang + 3 + 1 支持一下技术大佬!
cxp521 + 1 + 1 流弊,流弊

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Hmily 发表于 2019-10-12 12:59
看那个运行到加密地方解码后再执行,完事再加密很像windows时期很多壳如TMD的sdk里那种SMC的加密方式,看起来都照搬到安卓里了。
 楼主| straceme 发表于 2019-10-15 09:44
雪一梦 发表于 2019-10-12 15:00
楼主你好:
“使用libdexfile这个库,对dex文件进行拆分,然后新建一个codeItem类”
这一块我看repairVMP ...

libdexfile 将dex文件拆分开,然后通过repairVMPCode 进行修复,后面有空将文章发出来,这里直接将文件解密后拿到的。
cxp521 发表于 2019-10-12 11:00
Vincent-HJ 发表于 2019-10-12 11:30
虽然看不懂,但是觉得很流弊~
thinkpad_420 发表于 2019-10-12 11:38
好厉害,算是开眼界了
zg2600 发表于 2019-10-12 11:40
我成功了呢
Rolanju 发表于 2019-10-12 11:46
先收藏再说
风绕柳絮轻敲雪 发表于 2019-10-12 11:53
爱加密?
shelly1314 发表于 2019-10-12 12:28
感谢楼主分享
一人之下123456 发表于 2019-10-12 12:51
感觉很厉害的样子,向大佬学习。
duduhao 发表于 2019-10-12 12:52
学习了,谢谢楼主的好分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:禁止回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2019-11-21 23:01

Powered by Discuz!

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表