เมื่อเร็วๆ นี้ ฉันใช้ภาษา Assembly มากมายในระบบปฏิบัติการ *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 แต่ฉันจะใช้สิ่งเหล่านี้ในการประกอบได้อย่างไร เว้นแต่ฉันจะรู้รูปแบบการโทร
เป็นทางการ : ???
- ถ้าจะบอกว่าพวกเขาไม่ได้บันทึกไว้ ถ้าอย่างนั้นเราจะเขียน libc สำหรับ windows โดยไม่รู้การเรียกของระบบได้อย่างไร เราจะเขียนโปรแกรม Windows Assembly ได้อย่างไร? อย่างน้อยที่สุดในการเขียนโปรแกรมไดรเวอร์เราจำเป็นต้องรู้สิ่งเหล่านี้ ขวา?
ทีนี้เกิดอะไรขึ้นกับสิ่งที่เรียกว่า Native API? Native API
& System calls for windows
ทั้งสองคำต่างกันที่อ้างถึงสิ่งเดียวกันหรือไม่ เพื่อยืนยันว่าฉันได้เปรียบเทียบสิ่งเหล่านี้จากแหล่งข้อมูลที่ไม่เป็นทางการสองแห่ง
การโทรของระบบ: http://www.metasploit.com/users/opcode/syscalls.html< /ก>
API ดั้งเดิม: http://undocumented.ntinternals.net/aindex.html
ข้อสังเกตของฉัน:
- การเรียกของระบบทั้งหมดเริ่มต้นด้วยตัวอักษร
Nt
โดยที่ Native API ประกอบด้วยฟังก์ชันมากมายที่ไม่ได้ขึ้นต้นด้วยตัวอักษรNt
System Call of windows
เป็นสับเซตของNative API
การเรียกของระบบเป็นเพียงส่วนหนึ่งของ Native API
ใครสามารถยืนยันสิ่งนี้และอธิบายได้
แก้ไข:
มีอีกคำตอบหนึ่ง เป็นคำตอบที่ 2. ฉันชอบมันมาก แต่ฉันไม่รู้ว่าทำไมผู้ตอบจึงลบมันออกไป ฉันขอให้เขาโพสต์คำตอบของเขาอีกครั้ง