You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何逆向工程经Zeit PKG打包的Node.js应用并检测恶意软件?

逆向分析Zeit PKG打包应用的新手指南

作为经常帮人排查这类打包应用安全性的开发者,我会从新手能上手的步骤一步步给你讲,不用怕太复杂,咱们慢慢来:

第一步:先做静态预分析(不用运行程序)

先别急着启动程序,先收集基础信息,判断大致结构:

  • 用file命令(Linux/macOS)或者文件属性窗口(Windows)确认它的平台类型,比如是ELF、PE还是Mach-O文件,这能帮你选后续的工具。
  • 用strings命令扫一遍可执行文件,看看能不能找到明文的字符串,比如域名、文件路径、函数名,有时候能发现可疑线索(比如奇怪的境外域名、加密相关的关键词)。
  • 可以用PEview(Windows)、otool(macOS)或者readelf(Linux)查看文件的节区和导入表,有没有调用可疑的系统API,比如网络请求、文件写入、进程创建相关的接口。

第二步:提取PKG打包的内部资源

PKG打包的应用本质是把Node.js二进制、代码快照和依赖打包成一个单文件,咱们先把里面的内容拆出来:

  • 用专门的PKG提取工具pkg-extract,先通过npm install -g pkg-extract安装,然后运行pkg-extract path/to/your/app,它会自动把里面的Node二进制、V8快照文件(通常叫snapshot_blob.bin)和其他资源提取到指定目录。
  • 如果工具不好用,也可以手动找偏移:用十六进制编辑器(比如HxD、010 Editor)打开文件,搜索NODE_JS或者SNAPSHOT_BLOB这类标记,找到快照的起始和结束位置,手动导出成单独的文件。

第三步:解析V8快照里的代码

这是最关键的一步,因为你的代码被V8快照混淆了,普通反编译工具直接用不了:

  • 用v8-snapshot-extractor这类工具,把提取到的snapshot_blob.bin和对应的Node.js二进制(从PKG里拆出来的那个)放到同一目录,然后运行工具,它会加载快照并导出里面的JavaScript代码。
  • 注意:还原出来的代码大概率是混淆过的(比如变量名被改成a、b、c这类无意义字符),这时候可以用js-beautify这类工具格式化代码,方便阅读。重点排查可疑逻辑:比如偷偷发送数据到陌生域名、修改系统文件、执行shell命令之类的行为。

第四步:动态分析(必须在隔离环境里运行)

静态分析不够的话,就得运行起来看行为,但绝对不能在日常使用的电脑上直接运行:

  • 用虚拟机(比如VirtualBox、VMware)装一个干净的系统(比如Ubuntu、Windows),把应用拷贝进去测试。
  • 用监控工具追踪它的行为:
    • 网络监控:用Wireshark或者tcpdump抓包,看它有没有和陌生IP/域名通信。
    • 文件监控:用Process Monitor(Windows)或者inotifywait(Linux)看它读写了哪些文件,有没有修改系统关键路径的内容。
    • 进程监控:看它有没有创建子进程,或者调用可疑的系统命令。
  • 调试器(比如gdb、x64dbg)对新手门槛较高,先从上面的监控工具入手就足够了。

新手必记的安全提醒

  • 绝对不要在非隔离环境运行可疑程序,哪怕你觉得只是“看看”,恶意软件可能一启动就触发破坏行为。
  • 如果还原后的代码太复杂看不懂,可以重点搜索关键词:fetch、axios、child_process、fs.writeFile、exec这些,都是可能涉及恶意行为的API。

内容的提问来源于stack exchange,提问作者Nai Maen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:49:58