本帖最后由 windwing1883 于 2018-5-28 16:49 编辑
前言
好久没发帖了,这次准备分享一些JEB的使用技巧和自己在用的反混淆脚本.大神嘛就不要看啦~(注:本脚本是在JEB2.2.7上测试运行的)
反混淆脚本思路
许多APK开发商为了在崩溃时保存源文件类名、行号等信息会在APK混淆时添加以下规则保留源文件信息.
-keepattributes SourceFile,LineNumberTable
这样我们在看Smali时就能在.source(JEB中称为Debug Directive)字段中看到原始类名信息.如下图所示:
这样我们就可以在JEB2中根据每个类的原始信息进行批量重命名达到反混淆的效果,脚本地址放在我Github上
https://github.com/S3cuRiTy-Er1C/JebScripts
问题
说一下目前脚存在的问题:
- 因为无法获取内部类名所以无法还原内部类.
- 因为是全项目的重命名,根据APK类名的数量可能会有些慢大概要等几分钟,也有可能是我没优化好 O(∩_∩)O哈哈~ .但是磨刀不误砍柴工相信这个脚本会给你节省大量时间的.
- 最重要的一点,如果APK没有保留这些源信息时,反混淆神马的只能靠你自己啦!!毕竟这些只是辅助作用.
注意:
- JEB2.2.x是默认不显示这些调试信息的可以根据以下步骤在设置中打开:Edit -> Options -> Engines -> 修改ShowDebugDirectives的值为true(点一下就好).
- 另外再分享个设置小技巧:JEB2在打开项目时所有包名都是打开的状态(个别包名除外 如 android,com.google等)有时需要我们一个个手动折叠.同样可以通过以下步骤解决 Edit -> Options -> Engines -> 修改WellKnownLibraryPackages 为 *.对于一些已打开的项目可以在 Project-specific页面更改
效果
注意
本脚本只为学习交流使用,不涉及任何商业用途.
以上就是这次要分享的内容,如果以上技巧或脚本有帮助到你,请你评个分或在github加个star ^_^.
|