JavaScript反混淆插件十:删除DeadCode

举报
悦来客栈的老板 发表于 2021/03/12 00:56:32 2021/03/12
【摘要】     在还原部分著名的 obfuscator 混淆代码后,会遗留类似下面这样的代码: if ("jZPVk" !== "boYNa") { var _0x115fe4 = _0x46f96b ? function() { var _0x42130b = { "mLuUC": "2|1|5|0|4|3" }; if ("esUCW" !== "YVaOc") { ...

    在还原部分著名的 obfuscator 混淆代码后,会遗留类似下面这样的代码:


   
  1. if ("jZPVk" !== "boYNa") {
  2. var _0x115fe4 = _0x46f96b ? function() {
  3. var _0x42130b = {
  4. "mLuUC": "2|1|5|0|4|3"
  5. };
  6. if ("esUCW" !== "YVaOc") {
  7. if (_0x64f451) {
  8. if ("VPudA" !== "PlTuN") {
  9. var _0x2a304c = _0x64f451["apply"](_0x40f1bc, arguments);
  10. _0x64f451 = null;
  11. return _0x2a304c;
  12. } else {
  13. function _0x2d452d() {
  14. var _0x3f7283 = "2|1|5|0|4|3"["split"]('|')
  15. , _0x4c2460 = 0;
  16. var _0x17e744 = _0x5d33d5["constructor"]["prototype"]["bind"](_0x476920);
  17. var _0x219476 = _0x115ed3[_0x53f8ef];
  18. var _0x268b00 = _0x1dbdcc[_0x219476] || _0x17e744;
  19. _0x17e744["__proto__"] = _0x559202["bind"](_0x4e83d7);
  20. _0x17e744["toString"] = _0x268b00["toString"]["bind"](_0x268b00);
  21. _0x15fb48[_0x219476] = _0x17e744;
  22. }
  23. }
  24. }
  25. } else {
  26. function _0x2b55e5() {
  27. sloYzO["PgbPP"](_0xb1234d, 0);
  28. }
  29. }
  30. }
  31. : function() {}
  32. ;
  33. _0x46f96b = false;
  34.     return _0x115fe4;
  35. } else {
  36. function _0x4e016() {
  37. sloYzO["RgqlK"](_0x6358d1);
  38. }
  39. }

可以看到,有很多的 类似下面的代码:


   
  1. if ("jZPVk" !== "boYNa")
  2. {
  3. //...........
  4. }
  5. else
  6. {
  7. //...
  8. }

这里的if条件恒为真,所以永远不会执行else里面的代码,我愿意称其为 DeadCode。在简化代码时,肯定会将其删除。

插件功能

删除代码中永远不会执行的代码片段。

处理实例

处理前:


   
  1. if ("jZPVk" !== "boYNa") {
  2. var _0x115fe4 = _0x46f96b ? function() {
  3. var _0x42130b = {
  4. "mLuUC": "2|1|5|0|4|3"
  5. };
  6. if ("esUCW" !== "YVaOc") {
  7. if (_0x64f451) {
  8. if ("VPudA" !== "PlTuN") {
  9. var _0x2a304c = _0x64f451["apply"](_0x40f1bc, arguments);
  10. _0x64f451 = null;
  11. return _0x2a304c;
  12. } else {
  13. function _0x2d452d() {
  14. var _0x3f7283 = "2|1|5|0|4|3"["split"]('|')
  15. , _0x4c2460 = 0;
  16. var _0x17e744 = _0x5d33d5["constructor"]["prototype"]["bind"](_0x476920);
  17. var _0x219476 = _0x115ed3[_0x53f8ef];
  18. var _0x268b00 = _0x1dbdcc[_0x219476] || _0x17e744;
  19. _0x17e744["__proto__"] = _0x559202["bind"](_0x4e83d7);
  20. _0x17e744["toString"] = _0x268b00["toString"]["bind"](_0x268b00);
  21. _0x15fb48[_0x219476] = _0x17e744;
  22. }
  23. }
  24. }
  25. } else {
  26. function _0x2b55e5() {
  27. sloYzO["PgbPP"](_0xb1234d, 0);
  28. }
  29. }
  30. }
  31. : function() {}
  32. ;
  33. _0x46f96b = false;
  34. return _0x115fe4;
  35. } else {
  36. function _0x4e016() {
  37. sloYzO["RgqlK"](_0x6358d1);
  38. }
  39. }

处理后:


   
  1. var _0x115fe4 = _0x46f96b ? function() {
  2. var _0x42130b = {
  3. "mLuUC": "2|1|5|0|4|3"
  4. };
  5. {
  6. if (_0x64f451) {
  7. {
  8. var _0x2a304c = _0x64f451["apply"](_0x40f1bc, arguments);
  9. _0x64f451 = null;
  10. return _0x2a304c;
  11. }
  12. }
  13. }
  14. }
  15. : function() {}
  16. ;
  17. _0x46f96b = false;
  18. return _0x115fe4;

通过比对发现,处理后的代码,可读性明显提升了不少。

文章来源: blog.csdn.net,作者:悦来客栈的老板,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/qq523176585/article/details/114650665

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。