【问题标题】:How to properly call Windows API methods from Assembly如何从 Assembly 正确调用 Windows API 方法
【发布时间】:2012-05-27 13:58:57
【问题描述】:

简单来说,我正在尝试手工组装(请不要问)

但是,我遇到了调用 API 函数的问题,例如从 win32 API 调用。 在各种汇编语言中,您要做的是包含或导入诸如“windows.lib”或“windows.inc”或类似的东西。 问题是,这因汇编程序而异,甚至输出(二进制)看起来也不同;我想不通。

所以我的一般问题是:从 DLL 库调用 API 方法在二进制版本中和在 Windows PE 文件中的外观如何?

我尝试在互联网上四处寻找有关此的资源,但没有成功...

【问题讨论】:

    标签: windows winapi assembly dll


    【解决方案1】:

    最好的方法是阅读有关 NTDLL 的微软文档,但显然可以通过付费阅读任何参考资料(使用the MSDN service

    另一种选择是: 使用调试器,了解如何请求 NTDLL。

    每一步的步骤和更多信息:

    1. 首先,使用调试器并下载几个程序并找出它们对 NTDLL 的调用,内核调用的抽象层是什么,NTDLL 永远不会在同一个地址,出于安全原因,所以只能有一个变量那总是指向ntdll,即ram中的一个变量寄存器。

    2. 找出 NTDLL 使用什么决策机制来定义参数以及调用的目的。

    您可以在参考资料中找到以下信息:Fasm ForumArticle: How call NTDLL directly

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-28
      • 1970-01-01
      • 2017-02-26
      • 1970-01-01
      • 2017-09-04
      • 2016-09-02
      • 2019-11-08
      相关资源
      最近更新 更多