
函数调用
清晰从3环到0环的过程
qq_857305819
这个作者很懒,什么都没留下…
展开
-
LPC通信
服务端 DWORD WINAPI ServerThread1(LPVOID) { SECURITY_DESCRIPTOR sd; OBJECT_ATTRIBUTES ObjAttr; // Object attributes for the name UNICODE_STRING PortName; NTSTATUS Status; HANDLE LpcPortHandle = NULL; BYTE RequestBuffer[siz原创 2022-03-21 22:55:00 · 913 阅读 · 0 评论 -
ATA读取磁盘扇区数据
#include <stdio.h> #include <windows.h> #include <winioctl.h> #include <ntddscsi.h> int main(int argc, char* argv[]) { HANDLE hDevice; ATA_PASS_THROUGH_DIRECT aptd; BYTE DataBuffer[512] = { 0 }; DWORD ByteReturned; hDevice =.原创 2022-03-14 16:45:22 · 659 阅读 · 0 评论 -
用户模式下通过Zw函数直接写注册表
HMODULE NtDll = GetModuleHandle(L"ntdll.dll"); if (NtDll) { ZwCreateKey = (ZWCREATEKEY)GetProcAddress(NtDll,"ZwCreateKey"); ZwSetValueKey = (ZWSETVALUEKEY)GetProcAddress(NtDll, "ZwSetValueKey"); ZwClose = (ZWCLOSE)GetProcAddress(NtDll, "ZwClose");.原创 2022-03-12 22:00:01 · 273 阅读 · 0 评论 -
c语言获取当前系统时间
#include<time.h> int main(int argc, char* argv[]) { time_t t; struct tm tm; time(&t);//获取Unix时间戳。 localtime_s(&tm,&t);//转为时间结构。 printf("%d/%d/%d %d:%d:%d\n", tm.tm_year + 1900, tm.tm_mon+1, tm.tm_mday, tm.tm_hour, tm.tm_min, tm.tm_s原创 2021-11-03 10:59:08 · 697 阅读 · 0 评论 -
0环的几个结构体
在哪里找这几个结构体 _trab_frame 3环进0环 保存3环的寄存器值 位置在esp0=(_trab_frame +0x7c) _KPCR KPCR相当于一个副本,存储着线程相关的一些重要信息,这样CPU在处理时就不用查线程了。 1) 当线程进入0环时,FS:[0]指向KPCR(3环时FS:[0] -> TEB) 2) 每个CPU都有一个KPCR结构体(一个核...原创 2020-04-23 15:35:54 · 727 阅读 · 0 评论 -
系统服务表
原创 2019-06-05 00:46:42 · 163 阅读 · 0 评论 -
函数调用
保存现场 kd> dt _Ktrap_frame nt!_KTRAP_FRAME +0x000 DbgEbp : Uint4B +0x004 DbgEip : Uint4B +0x008 DbgArgMark : Uint4B +0x00c DbgArgPointer : Uint4B +0x010 TempSegCs ...原创 2019-05-14 20:53:27 · 860 阅读 · 0 评论 -
API函数调用过程(3环进0环)
CPU不支持快速调用时使用中断进0环原创 2019-05-07 14:04:28 · 473 阅读 · 0 评论