c++ - 调用可执行文件的函数代码

标签 c++ function reverse-engineering call

我有一个可执行文件中存在的特定函数的位置/偏移量。是否可以调用这样的函数(希望能抑制 CRT 执行可执行文件的入口点)?

最佳答案

实际上,假设您在 Windows 下运行,您可以模拟 Windows 加载程序,但基础知识在任何平台上都应该相同。参见例如http://msdn.microsoft.com/en-us/magazine/cc301805.aspx .

  1. 将文件加载到内存中,
  2. 用实际函数地址替换加载的可执行文件调用的函数的所有相对地址。
  3. 将内存页面更改为“可执行”(这是困难的和平台相关的部分)
  4. 初始化 CRT,例如,初始化静态变量。
  5. 打电话。

但是,正如评论者正确指出的那样,这可能仅作为使用非常简单的函数的练习才实用。如果您不设法模拟完整的操作系统加载器,那么很多事情都可能出错。

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/

相关文章:

c++ - 我们可以声明一个结构体符合一个概念吗?

c++ - 如何与其他 boost 库一起构建 boost::fiber?

C++ 将数组传递给函数错误 : incompatible types in assignment

java - 可靠地区分有状态 EJB 2.0 bean 和无状态 EJB 2.0 bean

java - 用于对 Java 项目进行逆向工程的 UML 工具

c# - BitConverter 的 C++ 等价物

c++ - std::vector 混合数据类型

c - 如何定义此代码并将其作为函数调用?

Javascript 表单验证返回

windows - PE文件格式中的基址重定位表是什么?