将 Js 代码编译成汇编形式的 Js 代码,能否起到加密作用? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
这是一个专门讨论 idea 的地方。

每个人的时间,资源是有限的,有的时候你或许能够想到很多 idea,但是由于现实的限制,却并不是所有的 idea 都能够成为现实。

那这个时候,不妨可以把那些 idea 分享出来,启发别人。
heroisuseless
V2EX    奇思妙想

将 Js 代码编译成汇编形式的 Js 代码,能否起到加密作用?

  •  
  •   heroisuseless 2024-10-30 15:16:57 +08:00 2721 次点击
    这是一个创建于 394 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我先实现一个简单的虚拟机,例如叫 jsm ,有 ax ,bx ,cx ,dx 四个寄存器,外加一个 stack 执行栈。

    现在加密一个 js 函数,例如一个简单的 add 函数:

    function add(x, y) { return x + y; } 

    经过编译后,变成了类汇编的 js 代码:

    jsm.label('add'); jsm.pop(jsm.ax); jsm.pop(jsm.bx); jsm.add(jsm.ax, jsm.bx); jsm.push(jsm.ax); jsm.ret(); 

    更近一步地,将 js 代码编译成二进制文件,然后再在网页上的虚拟机上运行,是否能起到加密作用?

    16 条回复    2025-02-08 12:30:58 +08:00
    iikebug
        1
    iikebug  
       2024-10-30 15:28:13 +08:00
    1 、前端网页的是否需要考虑性和网页大小
    2 、首先你虚拟机的逻辑也会被反编译出来,意义不是很大
    3 、加密优先考虑一下 wasm ?比自己写个虚拟机方便多了
    nomagick
        2
    nomagick  
       2024-10-30 15:32:08 +08:00
    不要敝帚自珍了。。。js 里面一个断点 console.log ,随你数据咋生成的
    luckyrayyy
        3
    luckyrayyy  
       2024-10-30 15:40:26 +08:00   1
    你是说 WebAssembly?
    MRG0
        4
    MRG0  
       2024-10-30 15:50:04 +08:00
    纯前端的加密,似乎不怎么有人提到。重要内容都放后端呗
    yichya
        5
    yichya  
       2024-10-30 15:51:08 +08:00
    您要找的是不是: https://blog.jsvmp.com/
    tsem1n
        6
    tsem1n  
       2024-10-30 15:52:00 +08:00
    jsvmp 就是你说的这种, 国内已经有很多用了
    nulIptr
        7
    nulIptr  
       2024-10-30 15:53:29 +08:00
    不是哥们你有这个水平还来提这个问题?搞出这个东西就为了加密?
    lisongeee
        8
    lisongeee  
       2024-10-30 16:55:57 +08:00
    Blanke
        9
    Blanke  
       2024-10-30 18:58:54 +08:00
    你是在说 js vmp?
    rekulas
        10
    rekulas  
       2024-10-31 00:11:10 +08:00
    是否能起到加密作用

    当然可以,你都会写虚拟机了这个问题应该不用问别人才对,我之前玩过 php 语言的底层混淆也做过 js 逆向,js 安全性差的一个重要原因就是逆向直接调试明文就行了,相比二进制程序来说要容易许多,如果跑在虚拟机自然难度就提高了
    lisxour
        11
    lisxour  
       2024-10-31 09:30:44 +08:00
    可以大幅提高破解门槛
    heroisuseless
        12
    heroisuseless  
    OP
       2024-10-31 14:17:09 +08:00
    @Blanke 怎么感觉这条路已经没有人在做了
    codehz
        13
    codehz  
       2024-10-31 17:04:32 +08:00
    js 的一个大问题是运行环境很容易被模拟,而你检测环境的代码本身就算混淆加密了也一样容易被糊弄过去,以至于像 YouTube 这样的头部公司,对抗下载器,用了各种黑科技(每次请求可能都返回不一样的代码),人家 youtube-dl 只需要简单的做了一个 js 解释器就可以直接绕过加密(去广告只能不停更新策略则是因为 uBlock 的限制,无法在规则里执行代码,否则也是一样可以一劳永逸的破解)
    iqoo
        14
    iqoo  
       2024-10-31 19:39:16 +08:00
    过时了,现在都用 wasm 了
    Blanke
        15
    Blanke  
       2024-10-31 20:58:59 +08:00
    @heroisuseless 国内外很成熟的,叫得出名字的大厂几乎都是
    861078848
        16
    861078848  
       293 天前
    jsvmp 控制流 的加密都有
    https://m.ldvmp.com/
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1045 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 22ms UTC 23:37 PVG 07:37 LAX 15:37 JFK 18:37
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86