- 博客(5)
- 资源 (1)
- 收藏
- 关注
转载 THREAD STACK
sBeginThreadWithContextInternal会消耗掉KernelStack[6]~ KernelStack[12]然后jmp _KiServiceExit,此时对应正好是KTRAP_FRAME的顶部 对于KernelStack[5]的设置实际上是为线程的调度/切换准备的,目的是为新建线程提供一个虚构的程序执行“断点”,仿佛原先就是在这里被剥夺了运行,下次受调度运行时就从
2013-06-18 14:31:59 971
转载 NTDLL
ntdll.dll是最基本的Dll,不但其他Dll的动态链接要由这个Dll完成,连系统调用也需要通过这个Dll进入内核。Windows内核在初始化阶段首次需要装入这个Dll的时候为其创建了一个文件映射区对象,并使用一个全局指针PspSystemDllSection指向该对象的数据结构。 nt!PspSystemDll kd> dd nt!PspSy
2013-06-14 22:55:25 1944
转载 Prototype PTE
#define MM_DEFAULT_PAGED_POOL_START (0xE1000000) #define MiPteToProto(lpte) (DWORD)((DWORD)(((((lpte)) >> 11) << 9) + \ (((((lpte))) > 23) + \ MM_DEFAULT_PAGED_POO
2013-06-14 22:41:20 1294
原创 有时候忘记了
通过CreateMutex同样也可以创建一个信号量,只不过这个信号量需要用ReleaseMutex才能释放,也就是说当一个线程通过WaitFor....返回以后,在该线程调用ReleaseMutex之前,其它线程的WaitFor...都会挂起,这就是互斥,用于互斥操作的还有很多种,一般的书上都有介绍的 HANDLE CreateEvent( LPSECURITY_ATTRIB
2013-06-03 12:30:55 485
转载 PEB中获取指定名称的DLL的基址
//先从PEB中获取指定名称的DLL的基址ULONG GetModuleHandleFromProcessPEB(ULONG Peb,char *szDllName){ PPEB_LDR_DATA pLdrData; PLDR_DATA_TABLE_ENTRY pLdrDataEntry; PLIST_ENTRY pListHead,pListNext; ANSI_STRI
2013-06-02 16:01:40 1080
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人