×

注意!页面内容来自https://blog.csdn.net/beyond702/article/details/50428844,本站不储存任何内容,为了更好的阅读体验进行在线解析,若有广告出现,请及时反馈。若您觉得侵犯了您的利益,请通知我们进行删除,然后访问 原网页

国内apk加固的破解方法

国内apk加固的破解方法

原文链接:http://blog.csdn.net/pxb1988/article/details/17167795

By Bob Pan

国内的apk加固技术都使用了将原有的dex隐藏在运行时解压并且通过修改app的类加载器的方式实现加固. 参考:AndoridAPK反逆向解决方案:bb加固原理探寻

然而不管如何隐藏dex最终在运行时都必须释放到内存所以本文的思路是从内存中找到解密后的dex文件进而得到加固前的apk.

注意: 这个方法截止2014-07-29有效后续版本未测试. 由于dalvik的执行机制要求dex在内存中是连续的所以想办法拿到内存的coredump总是不错的选择.

更新: 某公司会对名字为gdb的程序进行检测请将gdb重命名比如hello.  

注意: 如果gdb连不上对应的pid请尝试连接/proc/[pid]/task/目录下的tid

某公司

某公司加固的app并没有做反调试的保护. 打开app之后直接使用gdb连接然后用gcore产生core dump.

使用ps查看pid

使用gdb连接pid

使用gcore产生core dump

 

将产生的core.1033复制回电脑并使用编辑器打开通过类名找到dex中string-data段然后通过查找’dex.035’可以找到多离string-data最近的个dex头. dex文件头偏移32的整形值就是dex的文件长度. 使用dd命令可以从内存中抠出dex.

更新: 拿到的事实上是一个odex文件里面会包含odex的指令.  通过一个修改过的baksmali处理后可以恢复原始的dex.

更新: 修复odex的方法, 

1. 将系统的/system/framework目录复制到本地的framework目录

2. 运行baksmali -x -d framework  abc.odex   //将输出smali文件到out目录请尽量使用linux

3. 运行smali out -o classes.dex  //重新制作dex

通过类名找string-data段

找到最近的dex文件头(0x4f87a08)和dex文件大小0x07c0

使用dd抠出dex

这个文件是个完整的dex文件并且可以被dexdump直接打印

[注意: 部分内容已丢失]

总结

通过隐藏dex确实可以让大部分静态分析工具找不到执行代码但是在动态运行的时候无可避免的需要将dex在内存中还原. 通过本文的方法分析其内存然后恢复dex更进一步可以完全恢复原始apk.

确定要放弃本次机会?
福利倒计时
: :

立减 ¥

普通VIP年卡可用
立即使用
参与评论 您还未登录,请先 登录 后发表或查看评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
点击重新获取
扫码支付
< type="text/css">
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值