文章详情
C++驱动编程内存加载驱动过程以及被加载驱动条件配置和注意弊端
Posted on 2018-07-14 11:16:38 by 主打一个C++
内存加载驱动过程:
- 读入.sys驱动文件(任意方式获取文件二进制数据)
- 基本条件判断是否pe文件以及其他必备信息,防止后续操作导致gg
- 获取文件数据大小,申请非分页内存得到内存指针
- 按照内存对齐方式拉伸每个节点
- 修复IAT,导入表
- 修复重定位表
- 定义入口函数指针赋值为新的内存地址的pe入口点
- 启动入口,加载完成
被加载驱动条件配置:(部分非必须)
高级:
- 使用调试库:否
C/C++:
- Spectre Mitigation:Disabled
- 安全检查:禁用安全检查
链接器:
- 入口点:自行重写,注意启动传参
- 生成Windows元数据:否(AWINMD:No)
- 生成调试信息:否
Driver Settings->General:
- Target os Version:Windows 10 or higher(需求调整)
- Target Platform:Windows Driver
省略更多非重要配置......
被加载驱动注意弊端:
- 重写驱动入口点
- 不可seh异常,触发gg(有需要需自行设置页面异常拦截)
- 一堆........
测试代码: 下载
*转载请注明出处:原文链接:https://cpp.vin/page/81.html