转:http://bbs.pediy.com/showthread.php?t=200230
前言
微信5.3以后,除了代码加混淆外,还把一些plugin关键的代码加了壳,防止被反编译。本文主要介绍微信5.3/5.4简单脱壳的办法和大家分享,感谢大家的关注。
本文为微信系列研究的一部份,
从我以前的发表的文章,大家可以看到我们在逐步一点点地由外入内,由浅入深,进入微信的研究(方便新手进阶)。得到代码后,攻击和突破微信的防范就有目标了。
如果大家反映强烈(回帖超过30),后续还有
如何突破微信的文件加密,如何修改微信的源码,如何突破微信的客户端合法性认证等。
原理
1.APK早期的加壳把代码隐藏在APK中JAR包或其他资源中,在启动时再将该部分代码加载到内存中。
我们需要找到这个文件即可。
攻略
1. ps 查看进程编号
PID
app_61 25495 123 314352 39636 ffffffff 400185e0 S com.tencent.mm
2. cat /proc/25495/maps,看一下进程的内存映射情况。
我们会发现微信除了加载com.tencent.mm-1.apk@classes.dex还加载了com.tencent.mm.plugin.mutidex.dex
和com.tencent.mm.plugin.mutidex.jar(为com.tencent.mm.plugin.mutidex.dex的压缩包)
/data/dalvik-cache/data@app@com.tencent.mm-1.apk@classes.dex
/data/data/com.tencent.mm/app_cache/com.tencent.mm.plugin.mutidex.dex
/data/data/com.tencent.mm/app_dex/com.tencent.mm.plugin.mutidex.jar
3.将com.tencent.mm.plugin.mutidex.dex该文件拷贝出来,该文件实际上为odex
adb pull /data/data/com.tencent.mm/app_cache/com.tencent.mm.plugin.mutidex.dex com.tencent.mm.plugin.mutidex.odex
4.利用baksmali将该odex转化为smali,再转化为dex
4.1 把手机中的/system/framework下所有文件拷到电脑中baksmali工具的/system/framework
4.2 在利用baksmali将该odex转化为smali
java -jar baksmali.jar -d ./system/framework -x com.tencent.mm.plugin.mutidex.odex
4.3 利用smali将 out目录下的文件打包成dex
5.利用dex2jar将该dex转化为jar
dex2jar.bat com.tencent.mm.plugin.mutidex.dex
6.利用jd-gui把jar批量转化为JAVA代码
总结:
1.APK早期的加密把代码隐藏在APK中JAR包或其他资源中,在启动时再将该部分代码加载到内存中。
2.万变不离其宗,APK的JAVA代码最后都得到虚拟机内存中去解释执行。利用简单的命令就可以简单脱壳及研究代码流程和变量。
3.在内存里的DEX为ODEX格式。
4.思路很重要,看我的文章建议看思路,工具使用都是其次。