0x00
拿到一个xposed模块,注册功能挺有意思的,准备分析一下。然后。
这可真是。。。 辣眼睛
文件名类命名成员名方法名,名名王八蛋
字符流调用流加密流解密流,流流恶我心
注册的分析就先放放吧,首先一股脑还原这些混淆,这里出现了名称加密和字符串加密。
0x01
对于字符串加密,之前在github找到一个还原这种混淆的工具(https://github.com/CalebFenton/dex-oracle)。
作者CalebFenton有个巧妙的想法,中间的处理环节将smali文件抽取为由符号签名和参数所组成的待执行队列,和驱动类共同制作出一个可以用于单元测试的DEX文件,然后推送到手机上通过app_process执行,最后查看返回值就可以得到解密的字符串。
原作者是基于Linux来编写一系列脚本的,楼主实际运行的时候处于Windows平台,顺便做了些兼容性处理和BUG问题修复。
https://github.com/DXCyber409/dex-oracle
①修复驱动层Exception泄露,该BUG会导致driver层轻易罢工。
②去除脚本层对运行结果的僵硬检测,该BUG会导致脚本层轻易罢工。
③增加了patch/win目录下的Windows运行小脚本。
运行dex-oracle主要的步骤:
①安装ruby,注意需要将ruby\bin加入PATH路径中。http://www.ruby-lang.org/zh_cn/downloads/
②将adb命令加入到PATH路径中,使得在命令行就可以直接adb devices
③gem install dex-oracle
可选项:
④如果你也使用Windows平台,把patch/win下的smali.bat和baksmali.bat丢到ruby/bin/目录下
⑤更新主体文件,将bin,lib,res三个文件夹复制到ruby安装目录\lib\ruby\gems\2.6.0\gems\dex-oracle-1.0.5下覆盖
dex-oracle -i com/android/system/admin/CCOIoll obad.apk,根据实际的apk修改正则参数,然后运行
嗯...现在舒服多了。
0x02
已编译好的apk中各种名称符号的改动不像在源码中集成ProGuard那么便捷,这里留个开放话题。
大家对文件名类名方法名成员名等等的混淆还原有什么看法呢?
除了ProGuard编译时混淆,有没有对生成好的APK进行外部混淆的工具?