# Dex 字符串解密

该功能会尝试对 Dex 中被加密的字符串进行还原,目前已支持多款字符串加密工具。

alt

# 使用加强版算法

加强版算法在解密时会加载 Application 与 so 文件,可应对一些加密强度较高的应用,但开启后也容易导致解密进程崩溃从而解密失败,因此非必要不开启!

只有对整个 apk 使用解密功能时才会看到该选项,如果是对单个 dex 文件使用则看不到该选项。

# 自定义解密函数

自定义解密函数能极大提高解密的成功率,并降低解密后 APP 崩溃的概率,强烈建议自己填写解密函数!

这里需要使用 Smali 语法格式输入解密函数,如:

Lxxx/StringFog;->decrypt([B[B)Ljava/lang/String;

解密函数的参数只能由以下类型组成:

  • 基本类型 Z B S C I J F D
  • 数组类型 [B [S [C [I
  • Ljava/lang/String;
  • Ljava/lang/Object;
  • Ljava/lang/CharSequence;

解密函数的返回值类型只能是:

  • Ljava/lang/String;
  • Ljava/lang/Object;
  • Ljava/lang/CharSequence;

# 通配符用法

仅适用于 MT 管理器 v2.15.0 及以上版本

解密函数的格式为:L类名;->方法名(参数列表)返回值类型

你可以在类名方法名中使用通配符 *,它表示一个或多个任意字符,相当于正则表达式 .+

例如解密函数为:

Lxxx/StringFog1;->aa_decrypt([B[B)Ljava/lang/String;
Lxxx/StringFog2;->bb_decrypt([B[B)Ljava/lang/String;
Lxxx/StringFog3;->cc_decrypt([B[B)Ljava/lang/String;
Lxxx/StringFog4;->dd_decrypt([B[B)Ljava/lang/String;
Lxxx/StringFog5;->ee_decrypt([B[B)Ljava/lang/String;

那么就可以写成:

Lxxx/StringFog*;->*_decrypt([B[B)Ljava/lang/String;

输入完成后可以点击「预览」按钮查看是否匹配到了您需要的解密函数~

# 需要解密的类

一行一条,解密所有的类请留空。

# 解密某个类

输入“完整类名”,如: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