-
Notifications
You must be signed in to change notification settings - Fork 333
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
awsc: 开发讨论和进度 #19
Comments
现阶段我没有时间去完善,但是我可以分享一些思路。 这种混淆最关键的就是把打散的分支语句拼接回去,但目前以纯静态分析的方式来搞有点陷入了僵局(目前的进度是能够合并90%左右的选择语句)。现在拼接的逻辑是当对应的代码块只被引用1次时,就将它合并到上一个代码块。但是这个混淆策略中有一些干扰,让引用计数大于1,从而阻止上述操作:
我目前不知道还有没有别的坑点,但这两个问题是实现静态分析所必须要解决的,只是目前我没有足够的精力去完成。 你也可以使用插桩来动态分析这个脚本,随后将其还原:某宝登录bx-ua参数逆向思路(fireyejs 225算法),我这个插件一开始也是按照这个帖子做的,只是我不想用动态分析,这种可能会漏掉情况。 sml2h3/ast_tools 也是针对这种混淆的,你也可以参考一下。 最后关于那个while的问题,在这种混淆下,一个含有 然后,while语句在混淆后的脚本中特征非常明显,就是出现自引。但是有些自引不再第一个if语句中,说明存在未被删除的无效代码。对于这种情况,目前没有强行将其还原。 |
谢谢大佬的思路,正在学习中 |
今天看到一篇文章不知道对大佬有没有帮助 https://www.52pojie.cn/forum.php?mod=viewthread&tid=1818486&highlight=226 |
文章里在真正还原控制流上面的部分和这边的做法是类似的,对应这边FlattenSwitch函数阶段
也就是说对于一个全新的脚本,你都需要手动看一下都有哪些变量,大胆地删除虚假分支。 其实做这类分析的大都是学习一下里面的算法,不会直接把解混淆后的脚本直接拿去替换,毕竟文章里也说了代码中存在 |
是的,我目前在适用大佬的另外一个分支配合动态调试,但是最大的那个 switch 还在导致分析起来还是有点困难 |
根据动态调试的结果就能合并代码了。 |
目前使用
225
或者226
的脚本输入都会出现以下的错误:测试版多了以下一些输出:
大佬会完善这个插件吗
The text was updated successfully, but these errors were encountered: