NodeJS,CenterOS6.x,Mongodb。从网上了解使用Google comip &YUIComip &Ugly效果不理想,请高人告知!
客户端代码,你想再怎么加密也没用,就是混淆一下。
客户端的话,只能混淆。。。。。你要加密的话,得自己在底层写个加载器。。。目前貌似没见到过这方面的开源项目
只要源代码是js就没有加密可言,只要人家想看就必定能看到。ugly之类的只不过是增加代码的阅读难度而已。不想暴露代码,要么把整个模块重写为c++扩展,要么修改v8代码实现自己的代码加载方式(依然有可能通过v8的api读取源码)。话说,如果代码的使用者不是hacker级别的,简单的扩展nodejs的代码加载方式也能蒙混过去,可参考coffeescript加载.coffee文件的实现方式。
谢谢各位大牛在百忙中给与回复。谢谢。
想问的是你这个项目是nodejs的网站吗还是客户端软件? 我想到一个办法你可以参考参考;
要是客户端的,就有办法了,参见node-webkit加密;
要是服务器端的,你可以把js需要加密的部分,加密成一个二进制的.dat文件,写一个exe来加载和启动node,启动的时候,把数据解码之后传递进去运行。
如果是客户端的网页内运行的js,那就只能混淆了,不能加密
即使是二进制的可执行程序,其也是可以反编译为汇编的,只要别人肯钻研,还是能了解到程序内部的工作原理。
即使是这样,程序最终还是要还原成JavaScript代码在V8虚拟机中执行,如果别人能得到一份你的程序(尽管是加密过的),还是能通过一些调试工具来查看内存数据,还原出源代码的。
顶多就是对代码混淆一下,提高别人分析代码时的难度而已。
代码是运行在服务器端的.但还需要加密
如果代码是运行在服务器端的,你就写成.node模块 不过成本太高, 希望作者提供普通脚本编译成.node,不过这不符合开源精神~
楼上说:修改v8代码实现自己的代码加载方式(依然有可能通过v8的api读取源码),是指通过调试的方式读出吗?如果启动过程不让调试,还能通过其他方式读出吗?
开源吧,少年!
自己从开源学到不少内容,也鼓励开源。商业的公司,有时为了防竞争对手,有时还必要的加密。