dll注入(二)
来源:互联网 发布:淘宝dnf天空 编辑:程序博客网 时间:2024/06/16 05:48
今天再讲一个 我们先来科普下
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 都
免了
就不上代码了 本人代码很挫 就不丢人现眼了
最后再加一句 万一你失败了 那我只能说 以上只是理论验证 根据个人理解不同 结果也不同
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 都
免了
就不上代码了 本人代码很挫 就不丢人现眼了
最后再加一句 万一你失败了 那我只能说 以上只是理论验证 根据个人理解不同 结果也不同
- dll注入(二)
- C++ 实现DLL注入(二)说明
- DLL注入
- DLL注入
- DLL注入
- DLL注入
- DLL注入
- DLL注入
- DLL注入
- DLL注入
- DLL注入
- DLL注入
- DLL注入
- DLL注入
- dll注入
- DLL注入
- DLL注入
- DLL注入-APC注入
- 别再设计易碎的Web API!
- excel文件上传功能
- for aix grid install check
- 用gsoap实现面向Java客户端的WebService
- 百度音乐 不公开的秘密
- dll注入(二)
- MFC中ON_UPDATE_COMMAND_UI和ON_COMMAND消息区别
- 关于密码的那些事儿
- C++中的前置++与后置++
- experiment: view ssdt's api on windbg
- 裴波那契大数相加问题
- 学习计算机必须知道的网站
- 给button设置背景图片在IE中失效
- 将byte[]数组转换为图像输出到页面