我有一个 nodejs 的项目, 是通过 server.js + express.js + sqlite + 其他 js 包 构建的一个封装的 database 的中间 www 服务层. 代码启动很简单, 就是 node server.js 就启动了一个 www 服务 , 这样子的话, 就没法保护 js 的代码, 因为, 我想把这个 www 服务层 是要进行在客户那边私有化部署, 请问:
1 shanhuse 2024-05-29 09:16:26 +08:00 C++编写一个 node addon ,可以保护核心源代码,而且可以预编译放到自己服务器上,限定 node 版本。 |
2 iikebug 2024-05-29 09:20:39 +08:00 ![]() 代码混淆后,pkg 打包,还有 sqlite 加密 |
![]() | 3 XG9H3BN7CWMMmnjw 2024-05-29 09:22:39 +08:00 打包成二进制程序 |
![]() | 4/span> lisxour 2024-05-29 10:01:35 +08:00 @iikebug pkg 勉强可用,想编译成 v8 代码,很多问题,大部分情况下只能把混淆后的代码嵌进去,有解包可能。 |
5 StrangerA 2024-05-29 10:08:19 +08:00 可以用 bytenode 打包成字节码,然后分发 .jsc 文件。 虽然也是防君子不防小人。 第二个问题:sqlite3 支持上密码的,结合上一步,你把密码 hardcode 到代码中好了。 |
![]() | 6 zhangky 2024-05-29 11:27:47 +08:00 代码混淆,编译字节码 |
![]() | 7 guagecool 2024-05-29 15:17:14 +08:00 |
![]() | 8 txzh007 2024-05-29 16:59:57 +08:00 混淆代码+jsc electron 基本上都这么加密的 |
9 koast 2024-05-29 17:22:00 +08:00 @guagecool 哈哈 以前研究一个相册软件的时候我也看到这个了 验证过基本上是可以的 但是也仅限于变成可读的字节码 能看到相关的文件名 包名 符号 但是各种调用如何复杂一点还是很难抽离出来的 静态分析起来就很费事 而且一旦不像是它这个一样可以改外边的库的话(差不多还是插桩解决的嘛)结构多构造复杂一点 逻辑就只能全靠动态调试和猜了。 |
![]() | 10 amlee 2024-05-29 18:13:00 +08:00 ![]() |
![]() | 11 CHTuring 2024-05-30 14:33:50 +08:00 |
![]() | 14 CHTuring 2024-05-30 16:13:33 +08:00 @fengshils #12 深入的我还不清楚,我目前用 bun 直接打包 bun 的 ts 项目是支持的。如果你是 node 的话并且是多文件夹项目,你可以尝试用 tsup 打包入口文件把整个项目打包成一个单文件,然后再用 bun 把这个打包成二进制试试。 |