首页
社区
课程
招聘
[求助]请问如何知道Win32 API函数调用了什么内核函数?
发表于: 2010-7-14 12:18 8614

[求助]请问如何知道Win32 API函数调用了什么内核函数?

2010-7-14 12:18
8614
请问如何知道Win32 API函数调用了什么内核函数?
比如CreateFile调用了 ZwCreateFile,那么这是怎么知道的呢?
并不是所有的内核函数加一个ZW或NT,
比如VirtualProtectEx 调用了 ZwProtectVirtualMemory
它并不是直接在前面加一个Zw,而是函数名变化了一下。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (10)
雪    币: 796
活跃值: (370)
能力值: ( LV9,RANK:380 )
在线值:
发帖
回帖
粉丝
2
IDA~~
2010-7-14 12:28
0
雪    币: 2105
活跃值: (424)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
reactos
2010-7-14 13:36
0
雪    币: 152
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
IDA+F5
2010-7-14 16:55
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
我也想知道和楼主一样的问题:怎么样通过WinApi看下调用了什么内核函数..

但是 IDA我不会用....   IDA里怎么看啊??
我调试的程序里有 CreateFile, 但是我只看到 调用的是 kernel32.dll 里的 CreateFileA,没看到 ZwCreateFile ,怎么弄才能看到 CreateFile调用的是ZwCreateFile ???
2011-2-22 16:26
0
雪    币: 796
活跃值: (370)
能力值: ( LV9,RANK:380 )
在线值:
发帖
回帖
粉丝
6
把 kernel32.dll 丢到IDA,你就会看到 ZwCreateFile

进入内核之后,执行体函数是 NtCreateFile,然后你再windbg:

lkd> u NtCreateFile l 20
nt!NtCreateFile:
83e9ee82 8bff            mov     edi,edi
83e9ee84 55              push    ebp
83e9ee85 8bec            mov     ebp,esp
83e9ee87 51              push    ecx
83e9ee88 33c0            xor     eax,eax
83e9ee8a 50              push    eax
83e9ee8b 6a20            push    20h
83e9ee8d 50              push    eax
83e9ee8e 50              push    eax
83e9ee8f 50              push    eax
83e9ee90 ff7530          push    dword ptr [ebp+30h]
83e9ee93 ff752c          push    dword ptr [ebp+2Ch]
83e9ee96 ff7528          push    dword ptr [ebp+28h]
83e9ee99 ff7524          push    dword ptr [ebp+24h]
83e9ee9c ff7520          push    dword ptr [ebp+20h]
83e9ee9f ff751c          push    dword ptr [ebp+1Ch]
83e9eea2 ff7518          push    dword ptr [ebp+18h]
83e9eea5 ff7514          push    dword ptr [ebp+14h]
83e9eea8 ff7510          push    dword ptr [ebp+10h]
83e9eeab ff750c          push    dword ptr [ebp+0Ch]
83e9eeae ff7508          push    dword ptr [ebp+8]
83e9eeb1 e87f40ffff      call    nt!IopCreateFile (83e92f35)
83e9eeb6 59              pop     ecx
83e9eeb7 5d              pop     ebp
83e9eeb8 c22c00          ret     2Ch

你就会看到NtCreateFile其实是调用了IopCreateFile。

或者直接看WRK。。。
2011-2-22 18:39
0
雪    币: 88
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
windbg+WRK
2011-2-23 10:28
0
雪    币: 205
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
下断点  然后利用栈回溯
2011-3-1 13:30
0
雪    币: 199
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
9
您好,请问有没有相关资源,统计了具体某些Win32 API函数与哪些内核函数对应的列表清单呢?
2020-12-17 09:18
0
雪    币: 3323
活跃值: (3923)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
10
用调试器跟到ntdll,看调用号,然后自己去ssdt表里面找
2021-3-19 11:17
0
雪    币: 1041
活跃值: (733)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
直接用cheat engine 打开进程,打开内存浏览器,ctrl+g  转到你想 要的 api,然后浏览它的汇编代码,看看他都调用了啥函数直接空格转到
2021-3-25 07:23
0
游客
登录 | 注册 方可回帖
返回
//