Skip to content
This repository has been archived by the owner on Sep 24, 2021. It is now read-only.

我分析emwrs.js时发现第一个函数调用就是死循环,不知道博主是怎么分析的 #15

Open
shimachao opened this issue Apr 9, 2020 · 7 comments

Comments

@shimachao
Copy link

本来想反混淆以下这个js文件,结果发现第一个函数(setInterval前一个函数)调用就是死循环。那这个js是怎么在页面上正常使用的呢

@shimachao
Copy link
Author

就是里面的setCookie函数死循环

@BB-fat
Copy link
Owner

BB-fat commented Apr 9, 2020

我也发现这是个死循环,如果用node在本地执行会造成堆栈溢出,但是页面上就正常,由于我对js不是很熟悉,所以我也不清楚是为什么,但是我找到了解决的办法。
它的混淆大概两种方式:

  1. 在每份js文件前面会有一个字串集合暂时叫它dict,然后有两个函数,第一个是匿名函数,直接执行的,会改变dict的内容,然后另一个函数就是反混淆的关键,它可能接受两个参数或一个参数,然后会返回能读懂的含义,这个可以用一段脚本反混淆,我最新的dev分支之中:https://github.com/BB-fat/InvoiceSpider/tree/dev/scripts/translate
    你可以理解一下,我这边成功反混淆了3个文件,等有空我打算写一篇博客专门讲一下反混淆。
  2. 在重要的函数内有另一种混淆,它创建一个对象,然后这个对象加各种奇怪的属性,套娃,最后在后面调用这个对象的方法实现功能,这个只能人工一步一步解。

@BB-fat
Copy link
Owner

BB-fat commented Apr 9, 2020

具体解决的办法就是先加载完成页面,然后手动讲body改成目标文件的内容,然后直接在console里使用js通过正则表达式处理,这样就可以直接调用那个翻译函数。

@shimachao
Copy link
Author

看来是使用的这个工具混淆,太难了 https://www.sojson.com/jsobfuscator.html

@BB-fat
Copy link
Owner

BB-fat commented Apr 9, 2020

的确很绕,我今天破解到验证码函数,但他里面还有套娃,我还没解完。

@liuzhisheng
Copy link

liuzhisheng commented Apr 28, 2020

我也发现这是个死循环,如果用node在本地执行会造成堆栈溢出,但是页面上就正常,由于我对js不是很熟悉,所以我也不清楚是为什么,但是我找到了解决的办法。
它的混淆大概两种方式:

  1. 在每份js文件前面会有一个字串集合暂时叫它dict,然后有两个函数,第一个是匿名函数,直接执行的,会改变dict的内容,然后另一个函数就是反混淆的关键,它可能接受两个参数或一个参数,然后会返回能读懂的含义,这个可以用一段脚本反混淆,我最新的dev分支之中:https://github.com/BB-fat/InvoiceSpider/tree/dev/scripts/translate
    你可以理解一下,我这边成功反混淆了3个文件,等有空我打算写一篇博客专门讲一下反混淆。
  2. 在重要的函数内有另一种混淆,它创建一个对象,然后这个对象加各种奇怪的属性,套娃,最后在后面调用这个对象的方法实现功能,这个只能人工一步一步解。

https://github.com/BB-fat/InvoiceSpider/blob/dev/js/translate.js 文件里的用法没看懂,有使用的例子吗?另外很期待你的反混淆文章

@BB-fat
Copy link
Owner

BB-fat commented Apr 28, 2020 via email

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants