MT官方博客
Always dream. Always explore.
MT官方博客

MT应用保护

MT 应用保护是适用于 Android 平台的移动应用安全解决方案,采用拥有自主知识产权的深度代码混淆技术,为您的应用提供高强度的安全保护,有效防止被逆向分析、非法篡改与破解。

主要功能

  • 扁平化控制流
  • 构造虚假控制流
  • 字符串加密
  • 资源 ID 加密

主要特性

  • 支持 Java 与 Kotlin 语言
  • 支持 Xposed 模块
  • 支持 Multi-Dex 功能
  • 支持二次加固

产品优势

  • 技术方案脱胎于 MT 管理器自用的保护技术,在保护强度、兼容性、性能上经过了数百万用户的验证。
  • 使用首创的针对 dex 的代码控制流扁平化技术,同时再结合其它混淆加密技术,形成最高强度的混淆保护。
  • 与传统的应用加固技术相比,我们主要在字节码层进行保护,拥有更高的兼容性与运行性能,不存在被脱壳的问题。
  • 可以和应用加固技术结合使用,先混淆再使用第三方加固,从而在保护强度上取得 1 + 1 > 2 的效果。

收费方式

具体收费方式与价格请咨询微信:BinV456

https://cdn.blog.mt2.cn/wp-content/uploads/2020/02/A1BCFB3F9501323897A929E0CD339855.jpg

使用说明

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

https://cdn.blog.mt2.cn/wp-content/uploads/2020/09/mtp1.jpg

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

https://cdn.blog.mt2.cn/wp-content/uploads/2020/09/mtp3.jpg

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

https://cdn.blog.mt2.cn/wp-content/uploads/2020/09/mtp2.jpg

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

https://cdn.blog.mt2.cn/wp-content/uploads/2020/09/mtp4.jpg

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

https://cdn.blog.mt2.cn/wp-content/uploads/2020/09/mtp5.jpg

配置说明

代码控制流深度混淆

勾选后可开启代码深度混淆功能,包括扁平化控制流、构造虚假控制流、字符串加密、资源 ID 加密等。

保留行号和源文件名

如果您希望应用的错误日志中包含源文件名和代码行号信息,请勾选该选项。

针对 Xposed 模块优化

如果您的应用是一个 Xposed 模块,请勾选该选项,默认会自动识别和勾选。

需要混淆的类

这是最为关键的配置,直接关系到混淆之后能取得多大的保护效果。在填写该项配置时,请多花点时间思考您的 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

通过注解进行配置

如果您的 app 在编译的时候使用 Proguard 进行了名称混淆,由于混淆后类名随机发送了变化,那么使用以上方式将不太方便,这时您可以使用注解方式进行配置。

首先在 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;

@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 代码。

https://cdn.blog.mt2.cn/wp-content/uploads/2020/02/code1.png

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

https://cdn.blog.mt2.cn/wp-content/uploads/2020/02/code3.png

MT官方博客

MT应用保护
MT 应用保护是适用于 Android 平台的移动应用安全解决方案,采用拥有自主知识产权的深度代码混淆技术,为您的应用提供高强度的安全保护,有效防止被逆向分析、非法篡改与破解。 主要功…
扫描二维码继续阅读
2020-02-06