是否可以添加一个 getchar();相当于一个.o文件?

Is it possible to add a getchar(); equivalent to a .o file?

我刚才创建了一个简单的 C 程序。这是一个简单的命令行生成器,它接受一些数字,打印结果并停止。我总是在编辑器的命令行环境中运行它在程序运行之后自动暂停,所以我省略了在最后添加getchar()

我现在很后悔,因为我设法失去了来源。我现在只有编译后的 .o 和 .exe 文件,后者 - 当然 - 在打印输出后立即退出,因此无法使用。没那么长,大约 100 行,但我想避免重写它。 (另外,我什至可以通过这种方式学到一些新东西。)

现在我对 C 有非常基本的了解,而计算机程度的 x86 汇编大约为零(虽然我学习了微控制器 8086 汇编的基础知识,但我想现在不会有那么大帮助),所以我我有点卡在这里了。我可以将 getchar() 之类的暂停功能添加到已编译的代码中,还是有什么方法可以使该 .exe 在退出前停止,同时仍保持独立?

该程序将 运行 在 Windows 10 系统上。

劫持 .o 文件是可能的,您甚至可以使用 .exe、.dll、...来做到这一点,但这并不简单,需要很多 know-how。我的建议是使用某种反编译器来尝试恢复原始源代码,进行更改并再次编译。您可以在 old answer.

中找到反编译器的建议

我会编写某种批处理脚本,您可以在其中调用您的程序,然后 运行 pause,它会在您继续之前等待您按下一个键。

wrapper.bat:

yourprogram.exe
pause

当然,您可以将可执行文件反汇编为原始 x86 汇编代码,然后在 Windows 上查找简单 getchar() 的代码,添加并重新汇编。但是,根据程序的复杂程度或仅创建一个包装器 batch-script.

重写程序可能会花费更少的时间