【发布时间】:2010-10-14 14:34:48
【问题描述】:
我有一个可执行文件中存在的特定函数的位置/偏移量。是否可以调用这样的函数(希望同时抑制 CRT 执行可执行文件的入口点)?
【问题讨论】:
标签: c++ function reverse-engineering call
我有一个可执行文件中存在的特定函数的位置/偏移量。是否可以调用这样的函数(希望同时抑制 CRT 执行可执行文件的入口点)?
【问题讨论】:
标签: c++ function reverse-engineering call
实际上,您可以模拟 Windows 加载程序,假设您在 Windows 下运行,但基本在任何平台上都应该是相同的。参见例如http://msdn.microsoft.com/en-us/magazine/cc301805.aspx。
但是,正如评论者正确指出的那样,这可能仅作为使用非常简单的函数的练习才实用。如果您不设法模拟完整的操作系统加载程序,就会有很多很多事情出错。
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
【讨论】:
是的,你可以调用它,如果你将初始化这个函数使用的所有全局变量。可能包括 CRT 全局变量。作为替代方式,您可以挂钩和替换被调用者使用的所有 CRT 函数。查看该函数的反汇编以获得正确的解决方案。
【讨论】:
1) 查看LoadLibraryEx() API。它有一些标志可以完成 Sebastian 描述的所有脏活。
2) 编辑可执行文件。几个修改的字节将完成这项工作。以下是有关文件格式的一些文档:http://docsrv.sco.com:507/en/topics/COFF.html
【讨论】: