首页 > TAG信息列表 > Uint4B
IsDebuggerPresent的反调试与反反调试
一、调用系统的IsDebuggerPresent函数 (1)实现程序 最简单也是最基础的,Windows提供的API接口:IsDebuggerPresent(),这API实际上就是访问PEB的BeingDebugged标志来判断是否处于调试状态。 使用vs调试此段代码,弹出"检测到调试器"。 #include <stdio.h> #include <Windows.h> D模块隐藏
一、TEB结构体 TEB,它记录的相关线程的信息,每一个线程都有自己的TEB,FS:[0]即是当前线程的TEB。 +0x000 NtTib : _NT_TIB //TIB结构.存储栈信息 +0x01c EnvironmentPointer : Ptr32 Void +0x020 ClientId : _CLIEWindows10 x64 获取PEB表,并获取ntdll基址
1.Windows通过TEB封装信息,TEB中包含PEB表,如图: (站在看雪大佬巨人的肩膀上才能看得更远) 具体过程是从teb->peb->ldr->InInitializationOrderModuleList->dll模块基址,经过一系列的结构体偏移得到模块初始化装载顺序. 2.dt _TEB 可以看到PEB表偏移 kd> dt _TEB nt!_TEB15.系统调用(R3函数API调用过程详解)
目录 R3API调用分析 <1>.将编译好的文件拖入DBG / OD 分析(定位MAIN函数找到API调用位置) <2>.OpenProcess执行流程分析 <3>.ReadProcessMemory执行流程分析 R3API功能实现分析 <1>.ReadProcessMemory分析(R3功能实现分析) <2>.OpenProcess分析(R3功能实现分析) _KUSER_SHAREDC/C++遍历某进程的模块
1. Module32Next HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); // 进程快照句柄 PROCESSENTRY32 process = {sizeof(PROCESSENTRY32)}; // 快照信息 // 遍历进程,找到 QQMusic.exe while (Process32Next(hProcessSnap,&process)){ string s_szEx系统调用(一): 重写WriteProcessMemory
BOOL WriteProcessMemory( HANDLE hProcess, LPVOID lpBaseAddress, LPCVOID lpBuffer, SIZE_T nSize, SIZE_T *lpNumberOfBytesWritten ); 首先分析一下kernel32中的WriteProcessMemory,这里不管检查部分 push eax ; NumberOfBytesWritten push逆向分析 KiFastCallEntry
逆向分析 KiFastCallEntry 一、回顾 上一篇我逆向 KiSystemService 通过中断门进0环后,3环(esp,ss,eip,cs,eflags)都保存到0环栈里. 进0环后把当前寄存器的值,按照_KTRAP_FRAME的约定压到栈里。 二、逆向分析 KiFastCallEntry 函数 KiFastCallEntry跟KiSystemService 区别不大 _K