MT 应用保护是适用于 Android 平台的移动应用安全解决方案,采用拥有自主知识产权的深度代码混淆技术,为您的应用提供高强度的安全保护,有效防止被逆向分析、非法篡改与破解。
主要功能
- 扁平化控制流
- 构造虚假控制流
- 字符串加密
- 资源 ID 加密
主要特性
- 支持 Java 与 Kotlin 语言
- 支持 Xposed 模块
- 支持 Multi-Dex 功能
- 支持二次加固
产品优势
- 技术方案脱胎于 MT 管理器自用的保护技术,在保护强度、兼容性、性能上经过了数百万用户的验证。
- 使用首创的针对 dex 的代码控制流扁平化技术,同时再结合其它混淆加密技术,形成最高强度的混淆保护。
- 与传统的应用加固技术相比,我们主要在字节码层进行保护,拥有更高的兼容性与运行性能,不存在被脱壳的问题。
- 可以和应用加固技术结合使用,先混淆再使用第三方加固,从而在保护强度上取得 1 + 1 > 2 的效果。
收费方式
具体收费方式与价格请咨询微信:BinV456

使用说明
打开MT管理器(2.9.0以上版本),点击侧拉栏中的「应用保护」:

点击右下角的按钮添加任务:

在应用浏览器界面找到您要保护的 apk 文件并点击它:

完成相关配置之后(具体看后面说明),点击确认后上传文件到服务器进行混淆:

等待服务器处理成功之后再导出 apk 即可:

配置说明
代码控制流深度混淆
勾选后可开启代码深度混淆功能,包括扁平化控制流、构造虚假控制流、字符串加密、资源 ID 加密等。
保留行号和源文件名
如果您希望应用的错误日志中包含源文件名和代码行号信息,请勾选该选项。
针对模块类apk优化
如果您是为 Xposed 模块之类的应用进行保护(运行时会注入到其它应用中),请勾选该选项,否则可能会出现 Method not found 之类的报错。
mapping 文件(ProGuard)
ps:该功能在 2.10.0 版本新增
如果您在编译 apk 时开启了名称混淆,由于混淆后类名发生变化导致不好进行配置,在这里提供 mapping 文件即可解决。
要生成该文件,需要在您的proguard规则里面添加:
-printmapping mapping.txt
重新编译之后即可在编译目录找到 mapping.txt 文件。
★ 需要混淆的类
这是最为关键的配置,直接关系到混淆之后能取得多大的保护效果。在填写该项配置时,请多花点时间思考您的 APP 中哪些类需要被保护?哪些类被混淆之后会导致使您的 APP 逻辑难以分析?哪些类一旦被反编译修改后会导致 APP 被破解?
例如与 APP 界面操作相关的类、与 APP 的收费逻辑相关的类等等。您可以想象一下如果自己去破解这个 APP,需要分析和修改哪些代码,然后对这些代码进行混淆保护就可以了。
另外,混淆的类和方法的数量越多,混淆之后安装包的体积就会越大,相应的服务收费也可能越贵,请根据实际情况适量选择。
输入格式(一行一条)
- 混淆指定类
输入完整类名
,如:bin.mt.plus.Main
- 混淆指定包名下的类(不包含子包)
输入包名.*
,如:bin.mt.plus.*
,此时会保护bin.mt.plus.Main
,但不会保护bin.mt.plus.a.Main
- 混淆指定包名下的类(包含子包)
输入包名.**
,如:bin.mt.plus.**
,此时会保护bin.mt.plus.Main
,也会保护bin.mt.plus.a.Main
- 排除指定包名或者类名
在表达式前面增加!
即可,如:!bin.mt.plus.*
、!bin.mt.plus.Main
通过注解进行配置
首先在 bin.mt.annotations 包下创建 MTProtector.java 文件,输入代码内容:
package bin.mt.annotations; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** * 如果您是直接粘贴代码到AndroidStudio中,包名可能会发生变化 * 请确认包名是bin.mt.annotations,否则无法被识别 */ @Retention(RetentionPolicy.CLASS) @Target({ElementType.TYPE, ElementType.METHOD, ElementType.CONSTRUCTOR}) public @interface MTProtector { }
同时在您的 Proguard 配置文件中增加以下内容:
# MTProtector -keepattributes *Annotation* -keep class bin.mt.annotations.MTProtector # 防止方法被内联 -keepclassmembers,allowobfuscation class * { @bin.mt.annotations.MTProtector <methods>; }
最后只需要将 @MTProtector 注解到您需要保护的类或者方法上就行了。当需要保护整个类的所有方法时,注解在类的上面;当需要单独保护某个方法时,注解在该方法的上面。
import bin.mt.annotations.MTProtector; /** * 保护类 A 的所有方法 */ @MTProtector class A { void a() {} void b() {} } /** * 保护类 B 的 a 方法 */ class B { @MTProtector void a() {} void b() {} }
流量说明
在提交应用保护任务时,我们会将您的应用上传到服务器进行处理,这会消耗一定的流量。但是我们并不是将整个 apk 安装包进行上传,而是将安装包中的 classes.dex、AndroidManifest.xml 等关键文件打包后,使用高强度的 xz 格式进行压缩后再上传,消耗的流量远小于 apk 安装包的体积大小。
效果演示
您可以点击这里下载混淆前后的 apk 样本。
对于未经任何保护的 apk,我们可以使用 MT 管理器、jadx 等工具对其进行反编译,即可拿到与源代码几乎没有区别的 Java 代码。

上面的代码通过 MT 应用保护混淆之后,将会被转化成如下图所示的形式,几乎无法从中识别出原先的代码逻辑。
