加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

Windows和Native API中的系统调用?

发布时间:2020-12-13 21:10:21 所属栏目:Windows 来源:网络整理
导读:最近我在* NIX操作系统中使用了很多汇编语言。我在想知道Windows域名。 在linux中调用约定: mov $SYS_Call_NUM,%eaxmov $param1,%ebxmov $param2,%ecxint $0x80 而已。这就是我们应该如何在linux中进行系统调用。 在linux中引用所有系统调用: 关于哪个$ SY
最近我在* NIX操作系统中使用了很多汇编语言。我在想知道Windows域名。

在linux中调用约定:

mov $SYS_Call_NUM,%eax
mov $param1,%ebx
mov $param2,%ecx
int $0x80

而已。这就是我们应该如何在linux中进行系统调用。

在linux中引用所有系统调用:

关于哪个$ SYS_Call_NUM&哪些参数我们可以使用这个参考:http://docs.cs.up.ac.za/programming/asm/derick_tut/syscalls.html

官方参考:http://kernel.org/doc/man-pages/online/dir_section_2.html

在Windows中调用约定:

???

在Windows中引用所有系统调用:

???

非官方的:http://www.metasploit.com/users/opcode/syscalls.html,但是如何在汇编中使用这些,除非我知道调用约定。

官方:???

>如果你说,他们没有记录。那么如何在不知道系统调用的情况下为Windows编写libc?如何做一个Windows Assembly程序设计?至少在驱动程序编程中需要知道这些。对?

现在,所谓的Native API呢? Native API&系统调用Windows都是不同的术语指的是同一件事情?为了确认我从两个UNOFFICIAL来源进行了比较

系统呼叫:http://www.metasploit.com/users/opcode/syscalls.html

Native API:http://undocumented.ntinternals.net/aindex.html

我的观察:

>所有系统调用以字母Nt开头,其中Native API由许多不以字母Nt开头的函数组成。
> Windows系统调用是Native API的子集。系统调用只是Native API的一部分。

任何人都可以确认并解释。

编辑:

还有另一个答案。这是第二个答案。我真的很喜欢它,但我不知道为什么回答者删除它。我请他转发他的答复。

如果您在Windows下进行组装编程,那么您不需要手动系统调用。您使用NTDLL和Native API为您做这个。

Native API只是在内核模式方面的包装。它所做的只是为正确的API执行系统调用。

你永远不需要手动系统调用,所以你的整个问题是多余的。

Linux系统调用代码不会改变,Windows的操作,这就是为什么你需要通过一个额外的抽象层(又名NTDLL)工作。

编辑:

另外,即使你在程序集级别工作,你仍然可以完全访问Win32 API,没有理由使用NT API开始!进口,出口等都在装配程序中工作正常。

EDIT2:

如果您真的想做手动系统调用,则需要针对每个相关的Windows版本反转NTDLL,添加版本检测(通过PEB),并为每个调用执行系统调用查找。

但是,这将是愚蠢的。 NTDLL是有原因的。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读