如何解压由 Electron pack 生成的单个 EXE 文件?

Posted

技术标签:

【中文标题】如何解压由 Electron pack 生成的单个 EXE 文件?【英文标题】:How to unpack a single EXE file produced by Electron pack? 【发布时间】:2019-10-19 18:36:58 【问题描述】:

我有一个由 Electron 打包和运行的 EXE 文件。现在我想解压单个EXE文件(不是asar)来研究这个应用程序的源代码。但是怎么做呢?

我试图通过将此文件的扩展名从 exe 更改为 zip、7z 和 tar 来解压此 Web 桌面应用程序(由 Electron 打包的 EXE 文件)。但是都失败了,说明这个文件是“PE”格式的。

您能否展示一些将这个 Electron 应用程序解压缩到单个 exe 文件中的方法?谢谢。

【问题讨论】:

这个问题超出了 Stack Overflow 的范围。坚持通过搜索引擎进行研究。 【参考方案1】:

你不解压可执行文件,你反编译它。

AFAIK,你不会从可执行文件中获取源代码,你得到的只是汇编指令的机器代码。有一些工具可以帮助您将此汇编指令转换为可读的 C 代码,例如,IDA Pro 可以做到这一点。

还有很多其他反编译器和调试器可以在这种情况下为您提供帮助。喜欢x64 debugger 或Olly Debugger。

相信我,您需要花费大量时间来精通这些工具,然后才能真正理解原始汇编指令,获得源代码还有很长的路要走。

出于好奇,您为什么想要电子可执行文件的源代码?电子应用程序的所有实际实现都应该在 ASAR 打包文件中(可以解压缩,然后你就拥有所有 javascript 源代码)。 Electron 可执行文件就像一个运行 JavaScript 的包装器。

您可以查看电子实现here。

【讨论】:

我指的不是 Electron 实现代码,而是一个电子应用程序,它被打包为单个 exe。我不知道它使用了哪个打包工具(例如,电子生成器或打包器)。 如果你能把可执行文件提供给我,我可以好好看看然后帮忙 真的吗?我认为没有人需要“拆卸”电子应用程序吗? AFAIK那些是Javascript!你不用在 IDA 中反汇编 JS!人们只想编辑 .js 文件。 @Gizmo 如果您仔细阅读我的答案,您应该会看到我提到了相同的内容,即它是应用程序源的 javascript。我写下了关于反汇编的内容,因为我认为 OP 想要获取由电子生成的可执行文件的源代码(而不是它打包运行的 javascript) OP想要研究.exe里面的JS文件。当 Electron 应用程序打包到 asar 存档中时,您可以使用 asar 节点模块提取代码。但是,如果在 electron-builder 中设置了 asar=false 选项,我不确定您如何提取代码?我也很想知道!【参考方案2】:

您好,您可以使用exeinfope 软件。这是有史以来最好的软件,您可以轻松检查编程语言

【讨论】:

以上是关于如何解压由 Electron pack 生成的单个 EXE 文件?的主要内容,如果未能解决你的问题,请参考以下文章

打包和解包要修补的 Electron Native 应用程序的 node_modules

使用lambda修改由packed参数标识的引用?

如何增加由 electron-builder 构建的应用程序的最大内存限制?

删除由 git 创建的大型 .pack 文件

如何在 Python 中解压结构?

查询如何解压打包的二进制数据