- 博客(60)
- 收藏
- 关注
转载 Win7上函数ObReferenceObjectByName返回失败的问题解决
//IoDriverObjectType实际上是一个全局变量,但是头文件中没有,声明之后可以使用//extern POBJECT_TYPE IoDriverObjectType;extern POBJECT_TYPE *IoDriverObjectType; //这里是重点 win7的Io驱动设备类型指针改成指针的指针了status = ObReferenceObjectByName(...
2020-04-08 19:10:01
487
1
转载 关于IoCallDriver
通常我们所知IoCallDriver是把irp传递给下一层设备,传递到底是什么意思呢?IoCallDriver中实际调用了IopfCallDriver,其代码如下:NTSTATUSFORCEINLINEIopfCallDriver(IN PDEVICE_OBJECT DeviceObject,IN OUT PIRP Irp)/*++Routine Description:Thi...
2020-03-31 17:21:52
495
转载 IoAttachDeviceToDeviceStack() windows内核安全书中错误
吐槽一下,不管怎么说也是一本出版的书,这么多明显的错误,作者理解错的离谱,作者不知道这么想的。添加链接描述
2020-03-31 16:34:57
282
转载 MDL 数据结构
《Windows驱动开发技术详解》中说在使用直接方式来读写设备的时候,操作系统会将用户模式下的缓冲区锁住,然后操作系统将这段缓冲区在内核模式地址再次映射一遍。这样,用户模式的缓冲区和内核模式的缓冲区都使用的是同一块物理内存,无论操作系统如果切换进程,内核模式的地址都保持不变。操作系统先将用户模式的地址锁定后会使用MDL来记录这片内存。被记录的内存在物理内存上可能是离散的,但是在虚拟内存上一定是...
2020-03-30 19:28:31
307
转载 SynchronizationEvent书上写的很垃圾.转载一篇网上的
entercriticalsection用的同步方式就是采用的这个同步对象的方式,但是这个东西用的比较多,所以在内核调试的时候就不容易找到自己想要看的东西了VOID KeInitializeEvent(IN PRKEVENT Event, IN EVENT_TYPE Type, IN BOOLEAN State);Type : 事件类型,可以是 NotificationEvent 和 而Sy...
2020-03-28 23:09:29
440
转载 CONTAINING_RECORD宏详解
#define CONTAINING_RECORD(address, type, field) ((type *)( \(PCHAR)(address) - \(ULONG_PTR)(&((type *)0)->field)))那么我们拆开来看,前半部分——(PCHAR)(address)不很难理解吧,获取了成员变量的地址,关键点在后半部分那长长的一条——(ULONG_PTR)...
2020-03-28 01:03:09
293
转载 IoSkipCurrentIrpStackLocation与IoCopyCurrentIrpStackLocationToNext区别
IoSkipCurrentIrpStackLocation与IoCopyCurrentIrpStackLocationToNext函数都是将系统的IO_STACK_LOCATION 数组指针向下移动一次,以实现将当前IRP转发给更低一层驱动,那么这两个函数有什么区别呢?IoSkipCurrentIrpStackLocation只是将IRP简单的转发给更低一层的驱动,至于结果怎么样就不得而知了。...
2020-03-27 19:10:14
240
转载 NOP 指令作用
nop指令的作用:1)就是通过nop指令的填充(nop指令一个字节),使指令按字对齐,从而减少取指令时的内存访问次数。(一般用来内存地址偶数对齐,比如有一条指令,占3字节,这时候使用nop指令,cpu 就可以从第四个字节处读取指令了。)2)通过nop指令产生一定的延迟,但是对于快速的CPU来说效果不明显,可以使用rep前缀,多延迟几个时钟;–>具体应该说是占用了3个时钟脉冲!3)i/o...
2020-03-25 20:13:40
1337
原创 InfectImport
#include<Windows.h>#include"Image.h"#define INFECT_SIG ('PE')BOOL InfectImport( IN char* szImageFilePath, IN char* szDllName, IN char* szDllExportFunName){ CImage Img; BOOL bResul...
2020-03-25 15:22:00
164
原创 CImage辅助类
#include "Image.h"#include<Shlwapi.h>#pragma comment(lib,"shlwapi.lib")CImage::CImage(){ m_hFile = INVALID_HANDLE_VALUE; m_hModule = NULL; m_pDosHeader = NULL; m_pFileHeader = NULL; m_p...
2020-03-23 15:29:12
245
原创 PE Section区块
最近学习状态严重下滑,自打过年以后,学习状态一天不如一天,也是疫情搞的我心惶惶,哎,难受。这是一篇关于PE Section位置的记录问题:我们知道PE文件有一个区块表,可是无论DOS头还是文件头都没有记录这部分的地址,那我们如何定位PE的区块表的位置呢?其实PE文件的区块表是紧邻IMAGE_NT_HEADERS的,也就是说,在OptionalHeader之后紧接着就是我们的区块表。我们可...
2020-03-15 23:32:19
514
转载 WinDBG常用断点命令
WinDBG提供了多种设断点的命令:bp 命令是在某个地址 下断点, 可以 bp 0x7783FEB 也可以 bp MyApp!SomeFunction 。 对于后者,WinDBG 会自动找到MyApp!SomeFunction 对应的地址并设置断点。 但是使用bp的问题在于:1)当代码修改之后,函数地址改变,该断点仍然保持在相同位置,不一定继续有效; 2)WinDBG 不会把bp断点保存工作空...
2020-03-09 19:51:32
420
原创 error LNK2019: 无法解析的外部符号 _RtlStringValidateDestW@12,该符号在函数 _RtlStringCchPrintfW
添加库文件:$(DDK_LIB_PATH)/ntstrsafe.lib;
2020-02-27 22:38:48
824
转载 Error 1275 - 此驱动程序被阻止加载
现摘录网上相关论述如下;1遇到驱动程序阻止加载,有多种原因,可以参考如下解决方法:方法一: 1.右键桌面上的“计算机”→“属性”。 2.选择左边选项卡的“高级系统设置”。 3.切换到左边的“硬件”选项卡→选择第二个“设备安装设置”。 4.在弹出来的窗口选择“否”→第三项→“从不安装”→“确定”即可。 方法二: 1.点击开始菜单(或使用“Win+R”键)→键入“g...
2020-02-22 11:48:31
7401
原创 Windows7 64位开启和禁用驱动程序签名强制
管理员身份命令行禁用:bcdedit.exe -set loadoptions DDISABLE_INTEGRITY_CHECKS开启:bcdedit.exe -set loadoptions ENABLE_INTEGRITY_CHECKS
2020-02-22 11:30:26
560
转载 iret指令
IRET(interrupt return)中断返回,中断服务程序的最后一条指令。汇编指令IRET【指令格式】IRET【指令功能】IRET(interrupt return)中断返回,中断服务程序的最后一条指令。IRET指令将推入堆栈的段地址和偏移地址弹出,使程序返回到原来发生中断的地方。其作用是从中断中恢复中断前的状态,具体作用有如下三点:1.恢复IP(instruction point...
2020-02-19 14:29:58
6018
原创 保护模式微型内核程序
;文件说明:保护模式微型系统内核程序;常量部分core_code_seg_sel equ 0x38;内核代码段选择子core_data_seg_sel equ 0x30;内核数据段选择子;注意内核数据段选择子为110000B就是第六个加三个0sys_routine_seg_sel equ 0x28;系统公用例程代码段的选择子video_ram_seg_sel equ 0x20;视频显示...
2020-02-17 06:00:36
151
原创 硬盘主引导扇区代码
;文件说明:硬盘主引导扇区代码core_base_address equ 0x00040000;常数,内核的起始内存地址core_start_sector equ 0x00000001;常数,内核的起始逻辑扇区号;初始化堆栈段和栈指针mov ax,csmov ss,axmov sp,0x7c00;计算GDT所在的逻辑段地址mov eax,[cs:pgdt+0x7c00+0x02...
2020-02-16 09:19:37
547
转载 汇编语言入门:CALL和RET指令
ret指令和retf指令ret指令用栈中的数据,修改IP的内容,从而实现近转移retf指令用栈的数据,修改CS和IP的内容,从而实现远转移CPU执行ret指令时,相当于进行:pop IP1CPU执行retf指令时,相当于进行:pop IPpop CS12call指令当执行call指令时,进行两步操作:1)将当前的IP或CS和IP压入栈中2)转移call指令不能实现短转...
2020-02-15 00:32:32
383
转载 Bochs 的调试命令
https://blog.youkuaiyun.com/stevenldj/article/details/100176852
2020-02-11 07:37:36
121
原创 windbg预览版,windbg preview配置win7x64双机调试
https://www.cnblogs.com/iBinary/p/11401141.html
2020-01-30 03:23:11
662
转载 WINDBG使用教程
什么是WinDBG?WinDbg是微软开发的免费源码级调试工具。下载地址为:http://www.microsoft.com/whdc/DevTools/Debugging/default.mspx.Windbg可以用于Kernel模式调试和用户模式调试,还可以调试Dump文件。由于大部分程序员不需要做Kernel模式调试, 我在这篇文章中不会介绍Kernel模式调试。Kernel模式调试对学...
2020-01-30 03:02:30
1361
转载 导出表 IMAGE_EXPORT_DIRECTORY
typedef struct _IMAGE_EXPORT_DIRECTORY { DWORD Characteristics; // 未使用,总为0 DWORD TimeDateStamp; // 文件创建时间戳 WORD MajorVersion; // 未使用,总为0 WORD MinorVersion; ...
2020-01-28 02:21:30
442
转载 IMAGE_IMPORT_DESCRIPTOR结构
IMAGE_IMPORT_DESCRIPTOR结构typedef struct _IMAGE_IMPORT_DESCRIPTOR {DWORD OriginalFirstThunk;DWORD TimeDateStamp;DWORD ForwarderChain;DWORD Name;DWORD FirstThunk;} IMAGE_IMPORT...
2020-01-28 00:56:48
1098
转载 以挂起的方式创建进程
用CreateProcess函数可以创建一个进程;正常情况下CreateProcess做以下事情:创建一个进程的内核对象、给进程分配一个4GB的空间、加载pe:包括exe、dll、修复dll、创建主线程,把程序入口地址交给EIP如果参数dwCreationFlags传入CREATE_SUSPENDED将以挂起的方式创建进程;以这种方式创建的进程只有一个壳;也就是进程的主线程没有开始运行;需...
2020-01-24 23:46:31
624
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人