我有一个应用程序(我相信其中有恶意软件,但我想在继续使用它之前确认一下),它已使用 Zeit 的 PKG 编译/打包。
似乎使用了 v8 的快照功能来混淆代码...有什么方法可以扭转这个问题吗?我知道它在 exe 中编译了节点,但我对编程和逆向工程很陌生。
我从哪里开始对这个东西进行逆向工程?谢谢!
首先您需要了解它是如何工作的。您会发现它分叉了node.js 存储库并更改了负责启动引擎的引导代码。
第二部分是序列化数据。它使用 V8 引擎(运行 Node.js 和基于 chromium 的浏览器的 javascript 引擎)创建整个程序的字节码并将其附加到二进制文件的末尾。
因此,要反转该二进制文件:
顺便说一句,v8 引擎允许您通过传递标志
-print-bytecode
和可选的 --print-bytecode-filter=func_name
直接以文本格式转储字节码。但是,v8 引擎不会转储常量池,因为该功能已从发布通道中删除。这将允许您看到函数代码,但看不到函数使用的值。