dll注入(二)

今天再讲一个 我们先来科普下   
 
Windows环境进程的创建包括以下几个步骤:  
 
打开EXE文件,创建局部的段对象;  
创建Windows执行体进程对象;  
创建和初始化主线程(包括栈、上下文、执行体线程块对象的创建);  
通知Windows子系统新的进程已经创建,系统为新的进程运行设置环境;  
开始执行初始线程(如果在创建进程的时候使用了CREATE_SUSPENDED标志,那么就挂起主线程);  
在新的进程和线程的上下文中,完成地址空间的初始化(如动态链接库的加载等)和开始执行程序。  
 
在XP/NT系统中CreateProcess函数的调用过程为  
0: CreateProcess  
1:CreateProcessInternalW  
2:NtCreateProcessEx/NtCreateProcess  
3:PspCreateProcess  
 
以上是大概流程 注意 避免误人子弟 如对具体过程有兴趣的童鞋 请自行查询详细资料深入了解
  
 
我们只是需要注入一个DLL 要求很简单 但也不简单 必须在驱动保护加载前注入  
 
我们的目标是 HOOK NtCreateProcessEx 这个函数一般在内核态中SSDT HOOK 用来监控进程的创建
当然我们R3下HOOK 足以  
 
函数声明如下  
 
NTSTATUS NtCreateProcessEx(  
OUT PHANDLE ProcessHandle,  
IN ACCESS_MASK DesiredAccess,  
IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,  
IN HANDLE ParentProcess,  
IN BOOLEAN InheritObjectTable,  
IN HANDLE SectionHandle OPTIONAL,  
IN HANDLE DebugPort OPTIONAL,  
IN HANDLE ExceptionPort OPTIONAL,  
IN HANDLE Unknown OPTIONAL);  
 
我们只关心其中一个参数 OUT PHANDLE ProcessHandle 输出 进程句柄  
 
那么答案很明显了 HOOK 他 然后 调用一下原始函数 获取返回的 ProcessHandle 连OpenProcess 都
免了  
 
就不上代码了 本人代码很挫 就不丢人现眼了   
 
最后再加一句  万一你失败了 那我只能说 以上只是理论验证 根据个人理解不同 结果也不同
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值