V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
这是一个专门讨论 idea 的地方。

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

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

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

  •  
  •   heroisuseless · 20 小时 6 分钟前 · 879 次点击

    我先实现一个简单的虚拟机,例如叫 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 代码编译成二进制文件,然后再在网页上的虚拟机上运行,是否能起到加密作用?

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

    当然可以,你都会写虚拟机了这个问题应该不用问别人才对,我之前玩过 php 语言的底层混淆也做过 js 逆向,js 安全性差的一个重要原因就是逆向直接调试明文就行了,相比二进制程序来说要容易许多,如果跑在虚拟机自然难度就提高了
    lisxour
        11
    lisxour  
       1 小时 53 分钟前
    可以大幅提高破解门槛
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5737 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 03:23 · PVG 11:23 · LAX 20:23 · JFK 23:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.