如何提取pkg打包的Node.js独立.exe可执行文件中的.js源码?
如何从pkg打包的Node.js可执行文件中提取JS源码?
嘿,这个情况我太熟了!用pkg打包的Node.js可执行文件确实是可以提取出里面的JS代码的,给你分享几个实操的方法:
第一步:分离出asar归档文件
pkg打包的.exe本质上是把Node.js运行时和你的应用源码(打包成asar格式)合并在了一起。你可以先用7-Zip这类解压工具直接打开exe文件,往下浏览文件结构,通常能找到一个后缀为.asar的文件,直接把它拖拽出来就行。
如果7-Zip没找到这个文件,也可以用命令行工具来提取:在Git Bash或者WSL环境下运行以下命令(记得把your-app.exe换成你的文件名):dd if=your-app.exe of=app.asar bs=1 skip=$((0x$(objdump -h your-app.exe | grep .data | awk '{print $4}')))这个命令会定位到exe中存放asar包的起始位置,然后把这段内容导出成
app.asar文件。第二步:解压asar文件获取源码
拿到asar文件后,就需要用专门的asar工具来解压它。首先全局安装asar:npm install -g asar然后执行解压命令:
asar extract app.asar ./extracted-source执行完后,
extracted-source文件夹里就会出现你原来的JS文件和应用资源了。
⚠️ 补充说明:如果前任开发者对代码做了混淆或者加密处理,那提取出来的代码可能是经过混淆的,需要额外的反混淆操作;但如果只是普通的pkg打包,上面的方法完全可以拿到完整的源码。另外,部分新版本的pkg可能加入了一些保护机制,但绝大多数场景下这个流程都能生效。
内容的提问来源于stack exchange,提问作者bakasan




