dex-oracle - Android 反混淆工具
**** Hidden Message *****Oracle
A pattern based Dalvik deobfuscator which uses limited execution to improve semantic analysis. Also, the inspiration for another Android deobfuscator: Simplify.
Before
https://camo.githubusercontent.com/844ba149fd99f64a0ae04aef372cc3c3b23aeb49/687474703a2f2f692e696d6775722e636f6d2f6e494345344e342e706e67
After
https://camo.githubusercontent.com/106e2dd9e3c61db85f8f3face159aa51402f6d14/687474703a2f2f692e696d6775722e636f6d2f6146466439654d2e706e67
安装
步骤1.安装Smali / Baksmali
我敢肯定,因为你是一个精英的Android反向你已经有smali和baksmali路径中。
第2步:安装Android SDK / ADB
确保亚行的道路上。
步骤3.安装宝石
创业板安装DEX-神谕
或者,如果你希望从源编译:
混帐克隆https://github.com/CalebFenton/dex-oracle.git
CD DEX-神谕
创业板安装打捆
安装捆绑包
第4步:连接设备或仿真器
你必须有一个模拟器运行或为Oracle工作插入的设备。
Oracle需要一个现场的Android系统上执行的方法。这可以是一个设备或仿真器(优选的)上。如果它是一个设备,请确保你不介意在其上运行的潜在恶意代码。
如果你想使用模拟器,并且已经安装了Android SDK,可以创建和启动仿真器的图像:
Android的AVD
用法
用法:DEX-甲骨文[选择采用] <APK / DEX / Smali目录>
-h,--help显示屏幕
-s ANDROID_SERIAL,驱动程序执行设备ID,默认值=“”
--specific设备
-t,--timeoutñADB命令执行以秒超时默认值=“120”
-I,--include模式只优化方法和类匹配模式,例如Ldune; - >混杂\(\)V
-e,--exclude PATTERN排除这些类型的优化;包括覆盖
--disable-插件STRING [,STRING] *
禁用插件,例如stringdecryptor,unreflector
--list-插件列表可用的插件
-v,--verbose要详细
-V,--vverbose要非常详细
例如,要在一个名为LCOM /安卓/系统/管理/ CCOIoll类只反混淆的方法;内的APK称为obad.apk:
DEX-甲骨文-i COM /安卓/系统/管理/ CCOIoll obad.apk
怎么运行的
Oracle就Android应用(APK),Dalvik的可执行文件(DEX)和Smali文件作为输入。首先,如果输入是的APK或DEX,它被分解成Smali文件。然后,Smali文件被传递到执行分析和修改各种插件。插件搜索其可以转化成的东西更容易阅读的图案。为了了解哪些代码做一些Dalvik的方法实际上执行并收集输出。这样一来,有些方法调用可以用常数取代。在此之后,所有的Smali文件被更新。最后,如果输入是的APK或DEX文件,修改后的Smali的文件被重新编译和已更新的APK或DEX被创建。
方法执行由驱动程序执行的。输入APK,DEX,或Smali使用dexmerge与驱动组合成单一DEX和压入一设备或仿真器。甲骨文然后发送方法执行信息给司机,每当一个插件请求它。驱动程序使用Java反射来执行自己的DEX与Oracle提供的参数中的方法,并返回任何输出或异常。这对于许多串解密方法,通常采取的加密字符串或一些的一个限制是特别有用的是,执行限制为静态方法。
黑客
创建自己的插件
有三个插件,它们配备的是甲骨文:
Undexguard - 删除某些类型的Dexguard迷惑的
Unreflector - 删除一些Java反射
字符串解密 - 简单的插件,它去掉了加密字符串一种常见类型
如果你遇到一个新的类型的混淆,它可能会与甲骨文反混淆。看Smali,并计算出如果代码可以是:
重排
通过执行一些静态方法理解
如果这两种都是的情况下,你应该尝试写自己的插件。有四个步骤,以建立自己的插件:
识别Smali模式
弄清楚如何简化模式
弄清楚如何与司机交流,并调用方法
弄清楚如何直接申请修改
所包含的插件应该是一个很好的指导理解步骤#3,#4。驱动程序旨在帮助步骤#2。
当然,你总是欢迎分享你来混淆任何跨越,有人可能最终得到它。
更新驱动程序
首先,确保DX是你的路径上。这是Android SDK的一部分,但它可能不是你的路径上,除非你是铁杆。
驱动程序文件夹是一个Java项目由摇篮管理。将它导入到Eclipse中,的IntelliJ等,让你喜欢的任何更改。要完成更新驱动程序,./update_driver运行。这会重建驾驶员和输出的JAR转换成DEX。
支持楼主,感谢楼主的分享,好贴必须学习 支持楼主,感谢楼主的分享,好贴必须学习 Android 反混淆工具
页:
[1]