摘要: 勾取dll源码详解: 首先在创建时候来保存原始IAT地址到全局变量,然后通过Hook_iat函数来进行iat函数的勾取 hook_iat参数1,dll名称, 参数2,原始的API地址(需要被勾取的) 参数3,自己写的替换API地址的函数(勾取函数) 自写的勾取函数主要功能是将阿拉伯数字转换为中文数字 阅读全文
posted @ 2019-09-10 18:24 瀚瀚大人 阅读(797) 评论(0) 推荐(0) 编辑
摘要: 调试器的工作原理: 调试进程经过注册后,每当被调试者发生调试事件(DebugEvent)时,OS就会暂停其运行,并向调试器报告相应事件,然后调试器对相应事件进行处理,使被调试者继续运行。 具体调试流程如下: 源代码例子分析: 1.首先判断是否附加成功,如果没有附加成功则提示错误信息,并退出; 2.当 阅读全文
posted @ 2019-09-10 16:18 瀚瀚大人 阅读(682) 评论(0) 推荐(0) 编辑
摘要: 进程创建期修改PE输入表法的原理和静态修改PE输入表完全相同,可以在R3/R0的各个阶段进行干预(必须在主线程运行之前)。 1.以读写方式打开目标文件: 这里可以加上个文件是否打开的判断,如果失败则返回,如果成功则开始获取目标进程中的PE结构信息。 2.1 首先将要解析PE格式的初始值定义成构造函数 阅读全文
posted @ 2019-09-03 15:50 瀚瀚大人 阅读(563) 评论(0) 推荐(0) 编辑
摘要: 1.三种DLL加载时机: 进程创建加载输入表中的DLL(静态输入) 通过调用LoadLibrary主动加载(动态加载) 系统预设加载 通过干预输入表处理过程加载目标dll 1.静态修改PE输入表法(测试程序 Notepad.exe) 准备工作:自行编写一个MsgDLL,到处一个函数Msg(); 参数 阅读全文
posted @ 2019-09-02 18:22 瀚瀚大人 阅读(1418) 评论(0) 推荐(0) 编辑
摘要: 加载驱动的 标准方法 只有一种,就是利用服务管理器函数加载 SCM 加载法。 WIN64驱动模板 使用SCM 系列函数加载卸载驱动的过程并不复杂,总体流程是:打开SCM 管理器(获得SCM 句柄)->创建驱动服务(获得服务句柄,如果服务已经存在,此步则变成打开服务)->启动服务->停止服务->移除服 阅读全文
posted @ 2019-08-14 14:28 瀚瀚大人 阅读(400) 评论(0) 推荐(0) 编辑
只有注册用户登录后才能阅读该文。 阅读全文
posted @ 2019-08-11 23:47 瀚瀚大人 阅读(8) 评论(0) 推荐(0) 编辑
摘要: 1.首先 在被调试机器里定义一下代码 然后在调试机写个驱动程序 记住地址0x9A9CE270 然后通过WinDBG 查询下函数地址是否正确 这里可以看到函数地址是正确的 那接下来我们把 0x9A9CE270 拆分成 10 10 12 分页 9A9CE 270 首先拆前5位并将它补齐 0010 011 阅读全文
posted @ 2019-07-28 17:16 瀚瀚大人 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 会出现读取失败,那么此时我们需要借助Windbg来辅助操作! 首先找到 0: kd> eq 80b95048 00000000`123456780: kd> dq gdtr80b95000 00000000`00000000 00cf9b00`0000ffff80b95010 00cf9300`00 阅读全文
posted @ 2019-07-22 14:50 瀚瀚大人 阅读(215) 评论(0) 推荐(0) 编辑
摘要: 1.任务门描述符(跨表)本身在IDT 跨表查GDT 的TSS 任务门的 S=0, TYPE=0101。 2.任务门的执行过程 3.为什么有了任务段还要有任务门呢? CPU提供任务门,是为了方便访问任务段。在CPU发生二重错误的时候,会直接跳到 8 号中断,而 8 号中断就是任务门(这是Windows 阅读全文
posted @ 2019-07-18 16:12 瀚瀚大人 阅读(472) 评论(0) 推荐(0) 编辑
摘要: 1.TSS的结构: TSS不是寄存器,它是一个内存;(包含所有寄存器的值) 2.TSS的作用: 如果切换一个线程那么一定需要切换寄存器; 3.CPU怎么找到TSS内存块呢? 通过TaskRegister段寄存器 TaskRegister段寄存器 的值是CPU启动的时候通过GDT表中 TSS Desc 阅读全文
posted @ 2019-07-18 13:37 瀚瀚大人 阅读(929) 评论(0) 推荐(0) 编辑