Chinaunix首页 | 论坛 | 博客
  • 博客访问: 100516
  • 博文数量: 11
  • 博客积分: 1581
  • 博客等级: 上尉
  • 技术积分: 241
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-13 01:12
文章分类

全部博文(11)

文章存档

2012年(3)

2011年(3)

2010年(5)

我的朋友

分类: WINDOWS

2012-03-23 15:17:09

ring3:
1.ph.h ------> native.c 调用KphXXXX自已实现的 或者 NTDLL的NTXXXX

PhOpenProcess 在KphIsConnected()为真调用 KphOpenProcess 为假调用NTDLL的 NtOpenProcess

2.kphapi.h ring0与ring3共享数据头文件

kphuser.h -------> kph.c 实现KphXXXX

应用程序初始化: main.c
1) 调用KphInstallEx创建KProcessHacker.sys系统服务
2) 调用KphConnect2Ex启动服务,KphConnect2Ex调用KphConnect保护KProcessHacker.sys不被关闭

KphOpenProcess -----> KphpDeviceIoControl ------> NtDeviceIoControlFile

通过KPH_OPENPROCESS控制码调用NtDeviceIoControlFile

ring0:
main.c

DriverEntry
1) KphDynamicDataInitialization -----> KphpX86DataInitialization 初始化数据 dyndata.c
2) 实现IRP_MJ_CREATE与IRP_MJ_DEVICE_CONTROL分发

devctrl.c 实现IRP_MJ_DEVICE_CONTROL分发KphDispatchDeviceControl

KPH_OPENPROCESS 控制码对应处理函数 KpiOpenProcess

3.kph.h 定义驱动实现NTDLL导出的函数如NtOpenProcess 对应 KpiOpenProcess
但在KpiOpenProcess并非直接调用ntoskrl.exe导出的NtOpenProcess,而是自实现

kph.h ---> process.c process  KpiOpenProcess函数
kph.h ---> thread.c  thread  KpiOpenThread函数
kph.h ---> vm.c      memory  KpiWriteVirtualMemory函数
kph.h ---> object.c  object  KpiQueryInformationObject函数
kph.h ---> qrydrv.c  driver  KpiQueryInformationDriver函数 
kph.h ---> dynimp.c  KphGetSystemRoutineAddress
kph.h ---> dyndata.c  初始化函数 KphDynamicDataInitialization 
阅读(2819) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~