最近、*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 プログラミングはどのように行うのですか? 少なくともドライバーのプログラミングでは、これらを知る必要があります。右?
では、いわゆるネイティブ API はどうしたのでしょうか。Native API
& System calls for windows
both は同じものを指す別の用語ですか? 確認するために、2つの非公式ソースからこれらを比較しました
システム コール: http://www.metasploit.com/users/opcode/syscalls.html
ネイティブ API: http://undocumented.ntinternals.net/aindex.html
私の観察:
- すべてのシステム コールは文字で始まり
Nt
ますが、ネイティブ API は文字で始まらない多くの関数で構成されていNt
ます。 System Call of windows
のサブセットですNative API
。システム コールはネイティブ API の一部です。
誰でもこれを確認して説明できますか。
編集:
別の答えがありました。2回目の回答でした。とても気に入りましたが、回答者が削除した理由がわかりません。私は彼に彼の答えを再投稿するように頼みます。