V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
panyanyany
V2EX  ›  分享创造

水了篇 js 逆向和反逆向的文章,轻喷……

  •  
  •   panyanyany · 2017-10-07 19:53:19 +08:00 · 7552 次点击
    这是一个创建于 2393 天前的主题,其中的信息可能已经有所发展或是发生改变。

    LINK: PopUnder 研究:Javascript 逆向与反逆向

    在逆向别人的代码时写下了过程,跟真正的大神不能比。
    大家看看就好,欢迎交流。

    11 条回复    2017-10-08 11:57:36 +08:00
    algery
        1
    algery  
       2017-10-07 19:57:18 +08:00   ❤️ 1
    一眼扫 水逆
    ctsed
        2
    ctsed  
       2017-10-07 20:51:17 +08:00 via Android
    @algery 我也是。。。
    cuebyte
        3
    cuebyte  
       2017-10-07 22:25:17 +08:00
    @ctsed
    @algery so did I
    ctsed
        4
    ctsed  
       2017-10-07 23:02:06 +08:00 via Android
    @cuebyte 收不到提醒
    mywaiting
        5
    mywaiting  
       2017-10-08 02:02:25 +08:00
    好像原理也挺简单的啊,就是在整个页面覆盖了一个 <div style="width:100%;height:100%;position:fixed;top:0;left:0;z-index:9999999;display:none;"></div> 这样的全页面的 DIV,然后设置上 click 属性模拟 a href ?还是 iframe ? 的动作,点击页面的任何位置于是就 open window 了

    没有仔细看,大概的原理吧。

    感觉 JS 这货,根本没有什么加密和混淆可言~ 有心去玩的话,没有什么是 debug 不出来的。除非你上了 JS 版本的 linux 虚拟机,然后在虚拟机里面跑汇编~
    panyanyany
        6
    panyanyany  
    OP
       2017-10-08 08:50:04 +08:00
    @mywaiting #5 不是这么简单的,弹出一个窗口,只是做到了基本的 popup,但不是 popunder,因为你的 焦点已经转移到新窗口了,要想实现 popunder,还需要把焦点转移回旧窗口。
    旧的浏览器上还可以用一下 window.focus(),但这个方法在几年前就失效了。
    gen900
        7
    gen900  
       2017-10-08 09:21:58 +08:00 via iPhone
    popunder 是什么?
    panyanyany
        8
    panyanyany  
    OP
       2017-10-08 09:24:26 +08:00
    @gen900 #7 根据弹出后的焦点所处窗口来区分,popup 就是弹出后焦点在新窗口,popunder 就是弹出后焦点仍在旧窗口。popunder 类似于按住 Ctrl/Cmd 键然后点击链接的效果。
    codehz
        9
    codehz  
       2017-10-08 09:59:53 +08:00
    其实逆向没有这么麻烦。。。用 Proxy 大法获取调用了的 api 就好了(当然要用扩展,否则还要手动破解 console,多麻烦。。。)。。。
    Better Popunder Js 之前看到的时候它在 chrome 上是使用通知弹框和 pdf 插件弹框获取焦点(只用一个获取焦点的话,弹框消失就会回去)
    然后 chrome 60 时就把这个 bug 修复了。。。
    于是又改成在按下左键(mousedown)时打开标签页,新页面上释放左键(mouseup)时再开一个 pdf 弹框同时打开一个窗口,然后关闭自己,于是 pdf 弹框释放后本来焦点应该到新标签页的,但是现在只能回到了主页面(页面关闭)
    然后 chrome 61 又修复了
    这个插件又更新
    Fixed pop under in Windows Chrome 61.
    这回的原理更简单,打开新页面的方法仍然如上,改的就是用 iframe (而不是直接用 object )承载一个 object 加载带弹框的 pdf,然后弹出新页面时打开弹框同时销毁 iframe。。。
    但是这个 bug 至今(chrome 63)仍未修复
    panyanyany
        10
    panyanyany  
    OP
       2017-10-08 11:20:15 +08:00
    @codehz #9 我用的应该也是 Proxy 大法,不过是自己想出来的野路子,比较简单粗暴,大神有什么好的工具和资料推荐下吗?
    codehz
        11
    codehz  
       2017-10-08 11:57:36 +08:00   ❤️ 1
    @panyanyany #10 Proxy 用起来更简单
    直接参看 MDN https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy 就可以了解 Proxy 的用法。。
    更为关键的是,Proxy 可以方便的拦截属性的设置和修改(相关方法返回一个 proxy )这个 popunder 的好多功能,就是通过对 dom 对象的属性的修改达成的
    还有就是手动写 Chrome 的扩展(调试模式直接加载),这个玩意要比 TamperMonkey 好用的多,因为它可以直接与扩展的主进程进行通讯,从而导出网页的调试信息,避免了破解 console 的问题(当然最后还是去破解了 console.clear 和 anti debugger (不断的触发 debugger ),直接在 setinterval eval 等可以动态执行代码的地方过滤了相关函数,这样就可以直接用断点来调试了)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   922 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 21:18 · PVG 05:18 · LAX 14:18 · JFK 17:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.