我有一个可执行文件中存在的特定函数的位置/偏移量。是否可以调用这样的函数(希望能抑制 CRT 执行可执行文件的入口点)?
最佳答案
实际上,假设您在 Windows 下运行,您可以模拟 Windows 加载程序,但基础知识在任何平台上都应该相同。参见例如http://msdn.microsoft.com/en-us/magazine/cc301805.aspx .
- 将文件加载到内存中,
- 用实际函数地址替换加载的可执行文件调用的函数的所有相对地址。
- 将内存页面更改为“可执行”(这是困难的和平台相关的部分)
- 初始化 CRT,例如,初始化静态变量。
- 打电话。
但是,正如评论者正确指出的那样,这可能仅作为使用非常简单的函数的练习才实用。如果您不设法模拟完整的操作系统加载器,那么很多事情都可能出错。
PS:你也可以问谷歌:http://www.cultdeadcow.com/tools/pewrap.html
PPS:您还可以在“安全”社区找到有用的建议:https://www.blackhat.com/presentations/bh-usa-07/Harbour/Whitepaper/bh-usa-07-harbour-WP.pdf
关于c++ - 调用可执行文件的函数代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3934290/