V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
909076350
V2EX  ›  JavaScript

如何读懂一个混淆过的 js 文件(变量全是 ABCDEFG)

  •  
  •   909076350 · 2019-07-04 12:35:30 +08:00 · 5911 次点击
    这是一个创建于 1967 天前的主题,其中的信息可能已经有所发展或是发生改变。

    rt 求助~

    22 条回复    2019-07-11 13:44:40 +08:00
    wszgrcy
        1
    wszgrcy  
       2019-07-04 12:40:43 +08:00 via Android
    努力看。。。。然后你就发现看不懂放弃了。。。现在的 js 有两次处理,一种是压缩,就是把变量和空格减少长度,还有就是混淆,混淆过的代码,能逆向出传参能调用就算 nb 了,想读懂,估计要罢人脑升级为量子的吧
    cydysm
        2
    cydysm  
       2019-07-04 12:46:03 +08:00 via iPhone
    devtools 里 overide 打断点,写 console 调试
    Jirajine
        3
    Jirajine  
       2019-07-04 12:46:22 +08:00 via Android   ❤️ 1
    混淆而已,比编译过的 smali 都好太多了,更不用说汇编。
    起码处理一下,把格式展开,变量函数改成 var_1,func_1 这样的还好一些。
    909076350
        4
    909076350  
    OP
       2019-07-04 12:50:14 +08:00
    @wszgrcy 哭了 是一个很简单的 js (淘宝下载页的逻辑)
    q8164305
        5
    q8164305  
       2019-07-04 12:54:52 +08:00 via Android
    打断点慢慢看
    909076350
        6
    909076350  
    OP
       2019-07-04 12:56:07 +08:00
    @q8164305 感谢

    @cydysm overide 好用
    murmur
        7
    murmur  
       2019-07-04 12:58:12 +08:00
    淘宝啊,淘宝的就更恶心了,字符串拆分重组是家常便饭,你能轻松读懂对得起淘宝的工程师么
    murmur
        8
    murmur  
       2019-07-04 12:59:50 +08:00
    举个简单的例子 比如 addEventListener,在淘宝里首先要拆成 add,Event,Listener,然后每一个反序为 dda,tnevE,renetsiL,这个我是真见过这么玩的,淘宝的混淆绝对不是简单的变量函数名替换,花样超出你想象
    Vegetable
        9
    Vegetable  
       2019-07-04 13:03:57 +08:00
    不要想着全部读懂,只去找自己关心的部分.从一小部分开始.代码拉出来格式化,尝试将混淆过的变量名改名.理清各个作用域.
    这玩意没什么套路,就是细致的一点一点看.
    你只要相信浏览器能看懂,你也能看懂,很累就是了
    lc1450
        10
    lc1450  
       2019-07-04 13:04:25 +08:00
    不一定要看懂, 找关键函数被调用的地方,打断点看参数, 然后直接调用被混淆的代码
    909076350
        11
    909076350  
    OP
       2019-07-04 13:06:16 +08:00
    @murmur 哈哈哈我目前看的下载页的混淆还好 就是 abcde addeventlistener 还是在的
    909076350
        12
    909076350  
    OP
       2019-07-04 13:07:03 +08:00
    @lc1450 想找到自己想哟的那块关键代码 死活找不到 真是哭了

    @Vegetable 是的 但是找不到 自己要的那块代码疯狂打断点了现在
    AurevoirXavier
        13
    AurevoirXavier  
       2019-07-04 14:52:00 +08:00   ❤️ 1
    no1xsyzy
        14
    no1xsyzy  
       2019-07-04 15:05:02 +08:00
    先过个 JSNice 再看
    quadrapop
        15
    quadrapop  
       2019-07-04 15:29:45 +08:00
    只能一点点看,打断点
    599316527
        16
    599316527  
       2019-07-04 15:34:30 +08:00
    一般看混淆后代码总归有特定的目的。
    先 beautify 一下,打断点,定位到要找的目标代码大概位置,然后慢慢看。
    可以用代理工具替换下,边改边看,一些局部变量,压缩后变成三元运算符,多个逗号分隔的表达式可以改写成看起来方便的代码。
    PressOne
        17
    PressOne  
       2019-07-04 16:07:09 +08:00 via Android
    你预估用别人写代码的十分之一时间去读,应该可以的。打乱的代码只是读起来费时间。
    murmur
        18
    murmur  
       2019-07-04 16:09:00 +08:00
    @599316527 阿里有个代码 chrome 直接 pretty 不行,看前面写了类似((((((((((((((((((((((((((((((())))))))))))))))))))))))))这样大量无用的标签闭合,是想让 chrome 直接报错放弃美化么?
    abccccabc
        19
    abccccabc  
       2019-07-04 17:56:31 +08:00
    想办法格式化
    Hilong
        20
    Hilong  
       2019-07-04 17:56:34 +08:00 via Android
    在 dom 上打断点试试
    1010543618
        21
    1010543618  
       2019-07-04 22:35:37 +08:00
    以前尝试过找 JS 存在内存中的变量,也是想反向看代码没看明白,最后用 Memory 找到的 https://www.cnblogs.com/jffun-blog/p/8724252.html

    感觉即使是普通压缩过想读懂也是太难了
    909076350
        22
    909076350  
    OP
       2019-07-11 13:44:40 +08:00
    @no1xsyzy 感谢 还不错的样子
    @AurevoirXavier 好尴尬不能直接打开那个链接

    @599316527 感谢 jsnice 可以哈哈哈
    @1010543618 同意 只能勉强找到自己需要的代码了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1048 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 19:28 · PVG 03:28 · LAX 11:28 · JFK 14:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.