它只需要大量的时间,但没有无法反混淆的 JavaScript 代码。
我第一次在这里看到一段没有任何明显弱点的混淆 js。
但是beauty之后的起点是找到基本的var赋值,然后用它的值准确地替换var的出现
重申
步骤1
每次更换;
使用;\n
。为此,您必须使用能够替换正则表达式的编辑器,例如 VSCode 或 Sublime Text(以及许多其他的)我每行只有一条指令
第2步
看第一个任务
T8jj.W4C="3421";
我将用值替换T8jj.h6C
以下代码中出现的每个"3063"
。但是之前,使用正则表达式搜索,我会确保只有一种赋值的发生,否则我会做一个更微妙的替换。
在这种情况下,只有一项任务!很好,所以使用正则表达式来替换
\bT8jj\.W4C\b
和
"3421"
笔记 !!!!我们使用了单词分隔符并输入了转义的点,否则你可能会错误地替换 ASDAS T8jj E W4CS DFSDFD,这会产生错误!
第一个 regexp 避免最终改变 new 的未来 occurrency。不要忘记尾随,"
因为对 js 来说在语法上很重要。3421
是整数,"3421"
是字符串。
例如,在 roww 22233 这将替换
I(g9L.r3y(+T8jj.W4C));
和
I(g9L.r3y(+"3421"));
所以字符串或数字是非常不同的!
您现在认为“我可以删除第一行,因为不再需要它;现在每个参考点都获得了文字价值。” 错误的 !一些混淆器使用字符串连接和其他技术让你陷入陷阱,所以永远不要删除代码!
仅剩 44042 行!
重申
bx8jj.h8C
有多个分配,因此必须在下一次分配之前仅用“3871”替换,相同的变量接收到“1964”的分配值
建议
- 使用尾随 \b 并替换 . 和 。搜索时;
- 如果你只有一个结果或根本没有结果,不要删除作业;混淆代码中的某些点可以使用字符串连接或使用 unicode 字符和 eval 来读取变量值;
- 用它们的字面值替换 unicode-only 字符串的出现;这将加速代码反混淆;例如
'\x6e\x65\x73\x74\x65\x64'
是'nested'
;