InvoiceSpider icon indicating copy to clipboard operation
InvoiceSpider copied to clipboard

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

Open shimachao opened this issue 4 years ago • 7 comments

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

shimachao avatar Apr 09 '20 12:04 shimachao

就是里面的setCookie函数死循环

shimachao avatar Apr 09 '20 12:04 shimachao

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

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

BB-fat avatar Apr 09 '20 12:04 BB-fat

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

BB-fat avatar Apr 09 '20 12:04 BB-fat

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

shimachao avatar Apr 09 '20 12:04 shimachao

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

BB-fat avatar Apr 09 '20 12:04 BB-fat

我也发现这是个死循环,如果用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 文件里的用法没看懂,有使用的例子吗?另外很期待你的反混淆文章

liuzhisheng avatar Apr 28 '20 09:04 liuzhisheng

写了一篇博客将反混淆:https://www.fatech.online/articles/2020/05/03/1588498398801.html

BB-fat avatar Apr 28 '20 10:04 BB-fat