爱加密和梆梆的加固的破解方法 - pxb1988的专栏 - 博客频道 - CSDN.NET

爱加密和梆梆的加固的破解方法 - pxb1988的专栏 - 博客频道 - CSDN.NET

爱加密和梆梆加固的破解方法

By Bob Pan 多线程

梆梆与爱加密都使用了将原有的dex隐藏, 在运行时解压, 而且经过修改app的类加载器的方式实现加固. 参考: AndoridAPK反逆向解决方案:梆梆加固原理探寻 app

然而, 无论如何隐藏dex, 最终在运行时都必须释放到内存, 因此本文的思路是从内存中找到解密后的dex文件, 进而获得加固前的apk. 编辑器

爱加密

爱加密的app并无作反调试的保护. 打开app以后直接使用gdb链接, 而后用gcore, 产生core dump. 工具

使用ps查看pid 加密

使用gdb链接pid .net

使用gcore产生core dump 线程

 

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

经过类名找string-data段 进程

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

使用dd抠出dex

这个文件是个完整的dex文件, 而且能够被dexdump直接打印

梆梆

梆梆加固的程序作了anti-ptrace, 表现为使用gdb --pid 链接不上对应的进程, 利用kernel-model打印ptrace的记录, 能够看出梆梆

l  使用了3个进程互相ptrace.

l  发送错误指令来检查ptrace是否被劫持(反回值是-3行, 尝试让1568进程继续执行, 可是1568并未被ptrace, 必须出错),

l  利用ptrace修改另外一个进程的数据(action是5的行).

ptrace系统调用的记录, 右边是ptrace的参数

虽然连不上1552, 可是dalvik是一个多线程的程序, 里面包含主进程, gc线程, binder线程等, 虽然咱们用gdb连不上主线程, 可是咱们能够连上其余线程, 这些线程的tid在/proc/[pid]/task/目录下.

Gdb链接任意一个tid

拿到coredump后与爱加密同样作相同的处理, 能够拿到dex.

总结

爱加密和梆梆经过隐藏dex确实可让大部分静态分析工具找不到执行代码, 可是在动态运行的时候无可避免的须要将dex在内存中还原. 虽然梆梆作了反调试, 可是经过其余方式也一样能够获取其内存. 经过本文的方法分析其内存而后恢复dex, 更进一步能够彻底恢复原始apk. 从这个角度说, 爱加密和梆梆的加固形同虚设.

 



相关文章
相关标签/搜索