模块隐藏
遍历模块
HANDLE WINAPI CreateToolhelp32Snapshot(
DWORD dwFlags,
DWORD th32ProcessID
)
//dwFlags:
TH32CS_SNAPMODULE 遍历模块
PEB
(Process Environment Block 进程环境块)
存放进程信息,每个进程都有自己的PEB信息
如何找到PEB
- EPROCESS进程内核对象结构体中
0x1b0
偏移的位置 - TEB线程环境块的
0x30
位置
(实际上32位程序中的PEB的位置是固定的)
TEB
(Thread EnvironmentBlock 线程环境块)
系统在此TEB种保存频繁使用的线程相关的数据
如何找到TEB:
段寄存器fs中记录了TEB的存储位置
TEB偏移0X30的位置记录了TEB的地址
可以通过以下汇编来获取
MOV EAX,FS:[0x30]
//获得PEB
PEB_LDR_DATA* pPebLdrData=NULL;
_asm
{
mov eax,fs:[0x30]
mov ecx,[eax+0x0c]
mov pPebLdrData,ecx
}
//获得LDR_DATA
pPebLdrData = (PEB_LDR_DATA*)*(_NT_PEB + 0x0c)