我有一个 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
打包成二进制程序
|
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 把这个打包成二进制试试。 |