Simplify:一款通用Android反混淆器

admin 2023年5月12日09:13:51评论214 views字数 2415阅读8分3秒阅读模式

####################
免责声明:工具本身并无好坏,希望大家以遵守《网络安全法》相关法律为前提来使用该工具,支持研究学习,切勿用于非法犯罪活动,对于恶意使用该工具造成的损失,和本人及开发者无关。
####################

通用Android反混淆器

Android程序代码混淆是Android开发者经常用来防止app被反编译之后迅速被分析的常见手法。在没有混淆的代码中,被反编译的Android程序极其容易被分析与逆向,分析利器JEB就是一个很好的工具。但是加了混淆之后,函数、变量的名称将被毫无意义的字母替代,这将大大提高分析的难度。

Simplify安卓反混淆工具实际上是通过执行一个APP来解读其行为,随后尝试通过优化代码来实现行为一致。该安卓反混淆工具思路清晰,代码风格好,值得深入学习与优化。下图是在使用该工具前后,反编译代码的对比图。

Simplify:一款通用Android反混淆器

该项目有三个部分组成

  1. smalivm:提供用于执行Dalvik方法的虚拟机沙箱。执行方法后,它返回一个包含每个执行路径的所有可能寄存器和类值的图形。即使某些值未知,它也可以工作,例如文件和网络I / O. 例如,任何ifswitch具有未知值的条件都会导致两个分支被占用。
  2. simplify:从smalivm分析执行图并应用优化,如常量传播,死代码删除,非反射和一些窥孔优化。这些非常简单,但是当重复应用时,它们将解密字符串,删除反射,并大大简化代码。它重命名方法和类。
  3. demoapp:包含在您自己的项目中使用smalivm的简单,评论很多的示例。如果您正在构建需要执行Dalvik代码的内容,请查看它。

Simplify Android反混淆安装

构建需要安装Java Development Kit 8(JDK)。

因为这个项目包含Android框架的子模块,所以要克隆--recursive

git clone --recursive https://github.com/CalebFenton/simplify.git

或者随时更新子模块:

git submodule update --init --recursive

然后,构建一个包含所有依赖项的jar:

./gradlew fatjar

在成功执行之后,Simplify.jar 应该出现在simplify/build/libs/simplify.jar这里,接着你可以使用以下命令行测试Simplify.jar是否安装成功

java -jar simplify/build/libs/simplify.jar -it 'org/cf/obfuscated' -et 'MainActivity' simplify/obfuscated-app.apk

Simplify Android反混淆 使用

usage: java -jar simplify.jar <input> [options]deobfuscates a dalvik executable -et,--exclude-types <pattern>   Exclude classes and methods which include REGEX, eg: "com/android", applied after include-types -h,--help                       Display this message -ie,--ignore-errors             Ignore errors while executing and optimizing methods. This may lead to unexpected behavior.    --include-support            Attempt to execute and optimize classes in Android support library packages, default: false -it,--include-types <pattern>   Limit execution to classes and methods which include REGEX, eg: ";->targetMethod("    --max-address-visits <N>     Give up executing a method after visiting the same address N times, limits loops, default: 10000    --max-call-depth <N>         Do not call methods after reaching a call depth of N, limits recursion and long method chains, default: 50    --max-execution-time <N>     Give up executing a method after N seconds, default: 300    --max-method-visits <N>      Give up executing a method after executing N instructions in that method, default: 1000000    --max-passes <N>             Do not run optimizers on a method more than N times, default: 100 -o,--output <file>              Output simplified input to FILE    --output-api-level <LEVEL>   Set output DEX API compatibility to LEVEL, default: 15 -q,--quiet                      Be quiet    --remove-weak                Remove code even if there are weak side effects, default: true -v,--verbose <LEVEL>            Set verbosity to LEVEL, default: 0

项目地址:

https://github.com/CalebFenton/simplify

原文始发于微信公众号(菜鸟小新):Simplify:一款通用Android反混淆器

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年5月12日09:13:51
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Simplify:一款通用Android反混淆器http://cn-sec.com/archives/1729279.html

发表评论

匿名网友 填写信息