您如何找出每个系统调用的号码?就像SP3上的ZwCreateFile一样
ZwCreateFile: mov eax, 0x25 mov edx, 0x7ffe0300 call [edx] retn 0x2c
你怎么知道ZwCreateFile是0x25?
答案 0 :(得分:3)
Windows System Call Table (NT/2000/XP/2003/Vista)表示NtCreateFile
(与ZwCreateFile
功能相同,请参阅MSDN以及其他许多内容)
Windows NT Windows 2000 Windows XP W2K3 Vista SP3 SP4 SP5 SP6 SP0 SP1 SP2 SP3 SP4 SP0 SP1 SP2 SP0 SP1 SP0 0x17 0x17 0x17 0x17 0x20 0x20 0x20 0x20 0x20 0x25 0x25 0x25 0x27 0x27 0x3b
您可以使用kd或WinDbg转储系统调用表nt!KiServiceTable
,轻松发现这些内容。
来自Sysinternals forums的信息。
答案 1 :(得分:0)
让编译器生成 map 文件。 映射文件包含函数名称及其位置(偏移量,地址或两者)。在地图文件中搜索地址,您应该为该地址找到一个名称。
在您的示例中,ZwCreateFile
不是0x25。处理器取消引用edx
中的 {pointer} 值,并将该值用作ZwCreateFile
的地址。无法从您发布的汇编语言中获取ZwCreateFile
的地址。 ZwCreateFile
的地址存储在0x7ffe0300位置,该位置必须在此汇编语言片段之前初始化。
再次,请参阅地图文件。