进程隐藏的时候并没有对CreateToolhelp32Snapshot进行Hook,而是Hook了ZwQuerySystemInformation,写了一个调用CreateToolhelp32Snapshot显示进程的小程序,分析一下,顺便了解下Windbg Preview怎么用.
1.
应用商店搜索Windbg Preview下载,界面比原来的版本好看很多,而且也有更多地功能区,各种方便,推荐使用这个!,调试内核的时候好像是要用管理员权限打开才行。
TIPS
如果没有下载pdb文件需要提前下载,且需要去环境变量里面设置pdb目录,具体百度普通版Windbg的环境变量设置教程
2.
文件——打开EXE文件(taskmgr.exe 后面附其源码)———-自动断下————但是断下的地方不是程序的EP处,而是ntdll内,所以我们需要手动到EP代码处
输入: !dh taskmgr 查看taskmgr的PE结构
File Type: EXECUTABLE IMAGE
FILE HEADER VALUES
8664 machine (X64)
6 number of sections
5B0982F3 time date stamp Sat May 26 23:53:23 2018
0 file pointer to symbol table
0 number of symbols
F0 size of optional header
22 characteristics
Executable
App can handle >2gb addresses
OPTIONAL HEADER VALUES
20B magic #
14.14 linker version
1600 size of code
2400 size of initialized data
0 size of uninitialized data
184C address of entry point //入口点偏移
1000 base of code
----- new -----
..........................
在OPTIONAL HEADER VALUES中的address of entry point属性处标识了入口点偏移(RVA)
所以 EP代码地址=taskmgr基址+184C
输入 g taskmgr+184C
成功进入EP代码处
3.
因为有PDB文件所以直接输入 bp taskmgr!main 再g就来到了main函数处
找到
00007ff64254108c ff156e1f0000 call qword ptr [taskmgr!_imp_CreateToolhelp32Snapshot (00007ff6
42543000)]
跟过去,步入函数KERNEL32!CreateToolhelp32Snapshot:
再输入 BP ntdll!ZwQuerySystemInformation 给ZwQuerySystemInformation下断防止跑飞
仔细跟踪发现在KERNEL32!CreateToolhelp32Snapshot+0x103处有一句
call KERNEL32!ThpCreateRawSnap 跟进
发现在KERNEL32!ThpCreateRawSnap+0xcb出调用了
KERNEL32!_imp_NtQuerySystemInformation
跟入,找到ZwQuerySystemInformation