【发布时间】:2021-08-06 16:11:17
【问题描述】:
一位朋友给了我一个他多年前购买的程序。除了可执行文件和无用的自述文件(真的没有什么值得分享的,我不允许分享 .exe 文件)之外,没有什么可看的。不幸的是,我们也无法联系到最初的开发者。当程序给我时,我被告知它是用 python 编写的。所以我尝试用我在谷歌上搜索到的各种库来反编译.exe。它们似乎都不起作用,但 Pydecipher 在其日志文件中有以下输出:
2021-05-17 08:26:34,828: [*] Unpacking /home/me/Repos/myrepo/executable.exe
2021-05-17 08:26:34,828: [*] Checking PortableExecutable magic for file executable.exe
2021-05-17 08:26:46,090: [*] Determined executable.exe type to be PortableExecutable
2021-05-17 08:26:46,090: [*] This PE had the following VersionInfo resource: {
"CompanyName": "Node.js",
"ProductName": "Node.js",
"FileDescription": "Node.js: Server-side JavaScript",
"FileVersion": "10.21.0",
"ProductVersion": "10.21.0",
"OriginalFilename": "node.exe",
"InternalName": "node",
"LegalCopyright": "Copyright Node.js contributors. MIT license."
}
2021-05-17 08:26:46,267: [+] Dumped this PE's overlay data to pydecipher_output_executable/overlay_data
2021-05-17 08:26:56,782: [*] Found the following strings (and their surrounding bytes, for context) in this PE, which may indicate the version of Python used to freeze the executable:
[('1.0', 'tial-scale=1.0, minimum-scale=1.0,
...
我在this thread 找到了最有用的答案
简短的回答。如果你足够好。
和
我相信 js 代码一定在某处。这意味着您可以尝试使用 unix 命令字符串来提取它
到目前为止,Unix 命令对我的帮助并不大。所以首先,我可以依赖我正在处理 NodeJS 的假设吗?如果是这样,我可以采取哪些步骤来恢复代码?有没有可能?
更新
它肯定是用 NodeJS 编写的
【问题讨论】:
-
从您找到的 reddit 线程中,也有相关性:“将取决于很多事情,例如它是如何编译的,它是用什么制作的等等”。 如果这实际上是一个打包的 node.js 应用程序,那么通常它会包含 js 代码以及节点引擎可执行文件,以及一个执行它的微型包装器。
-
什么意思是“它通常包含 js 代码和节点引擎可执行文件”?就像我说的,只有 .exe 文件。 .exe 文件是二进制文件,对吧?它怎么可能包含JS?是否需要先反编译才能过滤掉 JS-parts?
-
二进制文件仍然包含数据 - 它可能是压缩的 js 文件,或其他一些编码。
-
做出正确的猜测,使用逆向工程套件为您进行猜测,和/或将程序加载到调试器中以查看它在做什么。
-
@Lalithkumar 是的,我确实找到了解决方案。不幸的是,没有比人们已经在这里写的更好的答案了。你需要“逆向工程”。我通过让程序运行一周来做到这一点,以监控它产生的请求。通过他们的有效载荷,我能够理解程序的工作流程。从此我重写了程序。没有简单的解决方案,即使用工具。
标签: javascript node.js exe reverse-engineering