# Dex 字符串解密
该功能会尝试对 Dex 中被加密的字符串进行还原,目前已支持多款字符串加密工具。
# 使用加强版算法
加强版算法在解密时会加载 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