自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(60)
  • 收藏
  • 关注

转载 Win7上函数ObReferenceObjectByName返回失败的问题解决

//IoDriverObjectType实际上是一个全局变量,但是头文件中没有,声明之后可以使用 //extern POBJECT_TYPE IoDriverObjectType; extern POBJECT_TYPE *IoDriverObjectType; //这里是重点 win7的Io驱动设备类型指针改成指针的指针了 status = ObReferenceObjectByName(...

2020-04-08 19:10:01 583 1

原创 分层驱动(设备栈,I/O栈)

添加链接描述

2020-04-01 15:20:53 309

原创 这篇是我看到的对IRP总结的最好的

添加链接描述

2020-03-31 18:29:56 320

原创 找到一位大佬的博客。有点东西

添加链接描述

2020-03-31 18:07:15 207

转载 关于IoCallDriver

通常我们所知IoCallDriver是把irp传递给下一层设备,传递到底是什么意思呢? IoCallDriver中实际调用了IopfCallDriver,其代码如下: NTSTATUS FORCEINLINE IopfCallDriver( IN PDEVICE_OBJECT DeviceObject, IN OUT PIRP Irp ) /*++ Routine Description: Thi...

2020-03-31 17:21:52 574

转载 IoAttachDeviceToDeviceStack() windows内核安全书中错误

吐槽一下,不管怎么说也是一本出版的书, 这么多明显的错误,作者理解错的离谱,作者不知道这么想的。 添加链接描述

2020-03-31 16:34:57 337

转载 MDL 数据结构

《Windows驱动开发技术详解》中说 在使用直接方式来读写设备的时候,操作系统会将用户模式下的缓冲区锁住,然后操作系统将这段缓冲区在内核模式地址再次映射一遍。这样,用户模式的缓冲区和内核模式的缓冲区都使用的是同一块物理内存,无论操作系统如果切换进程,内核模式的地址都保持不变。 操作系统先将用户模式的地址锁定后会使用MDL来记录这片内存。被记录的内存在物理内存上可能是离散的,但是在虚拟内存上一定是...

2020-03-30 19:28:31 416

转载 MDL详解

添加链接描述

2020-03-30 19:22:35 1092

转载 Windows驱动中通过MDL实现用户态与核心态共享内存

添加链接描述

2020-03-30 17:40:22 360

转载 在驱动和应用程序间共享内存

添加链接描述

2020-03-30 17:16:03 269

转载 设备对象(DEVICE_OBJECT)-----------------主要成员

添加链接描述

2020-03-30 16:23:12 258

转载 IO_STACK_LOCATION

添加链接描述

2020-03-29 18:02:11 209

转载 SynchronizationEvent书上写的很垃圾.转载一篇网上的

entercriticalsection用的同步方式就是采用的这个同步对象的方式,但是这个东西用的比较多,所以在内核调试的时候就不容易找到自己想要看的东西了 VOID KeInitializeEvent(IN PRKEVENT Event, IN EVENT_TYPE Type, IN BOOLEAN State); Type : 事件类型,可以是 NotificationEvent 和 而Sy...

2020-03-28 23:09:29 542

转载 Windows驱动开发-DPC定时器

添加链接描述

2020-03-28 21:07:18 321

转载 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 351

转载 IoSkipCurrentIrpStackLocation与IoCopyCurrentIrpStackLocationToNext区别

IoSkipCurrentIrpStackLocation与IoCopyCurrentIrpStackLocationToNext函数都是将系统的IO_STACK_LOCATION 数组指针向下移动一次,以实现将当前IRP转发给更低一层驱动,那么这两个函数有什么区别呢? IoSkipCurrentIrpStackLocation只是将IRP简单的转发给更低一层的驱动,至于结果怎么样就不得而知了。 ...

2020-03-27 19:10:14 287

转载 NOP 指令作用

nop指令的作用: 1)就是通过nop指令的填充(nop指令一个字节),使指令按字对齐,从而减少取指令时的内存访问次数。(一般用来内存地址偶数对齐,比如有一条指令,占3字节,这时候使用nop指令,cpu 就可以从第四个字节处读取指令了。) 2)通过nop指令产生一定的延迟,但是对于快速的CPU来说效果不明显,可以使用rep前缀,多延迟几个时钟;–>具体应该说是占用了3个时钟脉冲! 3)i/o...

2020-03-25 20:13:40 1544

原创 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 196

原创 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 307

原创 PE Section区块

最近学习状态严重下滑,自打过年以后,学习状态一天不如一天,也是疫情搞的我心惶惶,哎,难受。 这是一篇关于PE Section位置的记录 问题:我们知道PE文件有一个区块表,可是无论DOS头还是文件头都没有记录这部分的地址,那我们如何定位PE的区块表的位置呢? 其实PE文件的区块表是紧邻IMAGE_NT_HEADERS的,也就是说,在OptionalHeader之后紧接着就是我们的区块表。 我们可...

2020-03-15 23:32:19 596

转载 WinDBG常用断点命令

WinDBG提供了多种设断点的命令: bp 命令是在某个地址 下断点, 可以 bp 0x7783FEB 也可以 bp MyApp!SomeFunction 。 对于后者,WinDBG 会自动找到MyApp!SomeFunction 对应的地址并设置断点。 但是使用bp的问题在于:1)当代码修改之后,函数地址改变,该断点仍然保持在相同位置,不一定继续有效; 2)WinDBG 不会把bp断点保存工作空...

2020-03-09 19:51:32 511

原创 error LNK2019: 无法解析的外部符号 _RtlStringValidateDestW@12,该符号在函数 _RtlStringCchPrintfW

添加库文件: $(DDK_LIB_PATH)/ntstrsafe.lib;

2020-02-27 22:38:48 890

转载 Windows10环境下WDK开发使用IoCreateDeviceSecure无法解析的外部符号

添加链接描述

2020-02-26 12:04:17 417 1

原创 设备对象的 SDDL

添加链接描述

2020-02-25 14:24:27 424

转载 Error 1275 - 此驱动程序被阻止加载

现摘录网上相关论述如下; 1 遇到驱动程序阻止加载,有多种原因,可以参考如下解决方法: 方法一:   1.右键桌面上的“计算机”→“属性”。   2.选择左边选项卡的“高级系统设置”。   3.切换到左边的“硬件”选项卡→选择第二个“设备安装设置”。   4.在弹出来的窗口选择“否”→第三项→“从不安装”→“确定”即可。      方法二:   1.点击开始菜单(或使用“Win+R”键)→键入“g...

2020-02-22 11:48:31 8488

原创 Windows7 64位开启和禁用驱动程序签名强制

管理员身份命令行 禁用:bcdedit.exe -set loadoptions DDISABLE_INTEGRITY_CHECKS 开启:bcdedit.exe -set loadoptions ENABLE_INTEGRITY_CHECKS

2020-02-22 11:30:26 674

转载 iret指令

IRET(interrupt return)中断返回,中断服务程序的最后一条指令。 汇编指令IRET 【指令格式】IRET 【指令功能】IRET(interrupt return)中断返回,中断服务程序的最后一条指令。IRET指令将推入堆栈的段地址和偏移地址弹出,使程序返回到原来发生中断的地方。其作用是从中断中恢复中断前的状态,具体作用有如下三点: 1.恢复IP(instruction point...

2020-02-19 14:29:58 6681

原创 保护模式微型内核程序

;文件说明:保护模式微型系统内核程序 ;常量部分 core_code_seg_sel equ 0x38;内核代码段选择子 core_data_seg_sel equ 0x30;内核数据段选择子;注意内核数据段选择子为110000B就是第六个加三个0 sys_routine_seg_sel equ 0x28;系统公用例程代码段的选择子 video_ram_seg_sel equ 0x20;视频显示...

2020-02-17 06:00:36 210

原创 硬盘主引导扇区代码

;文件说明:硬盘主引导扇区代码 core_base_address equ 0x00040000;常数,内核的起始内存地址 core_start_sector equ 0x00000001;常数,内核的起始逻辑扇区号 ;初始化堆栈段和栈指针 mov ax,cs mov ss,ax mov sp,0x7c00 ;计算GDT所在的逻辑段地址 mov eax,[cs:pgdt+0x7c00+0x02...

2020-02-16 09:19:37 622

转载 汇编语言入门:CALL和RET指令

ret指令和retf指令 ret指令用栈中的数据,修改IP的内容,从而实现近转移 retf指令用栈的数据,修改CS和IP的内容,从而实现远转移 CPU执行ret指令时,相当于进行: pop IP 1 CPU执行retf指令时,相当于进行: pop IP pop CS 1 2 call指令 当执行call指令时,进行两步操作: 1)将当前的IP或CS和IP压入栈中 2)转移 call指令不能实现短转...

2020-02-15 00:32:32 482

转载 X86 保护模式下的段界限的计算

保护模式下的段界限的计算

2020-02-14 09:40:03 209

转载 Bochs 的调试命令

https://blog.csdn.net/stevenldj/article/details/100176852

2020-02-11 07:37:36 163

转载 《X86汇编 从实模式到保护模式》 关于Bochsdbg二次启动错误的解决方案

关于Bochsdbg二次启动错误的解决方案

2020-02-11 07:18:11 335

原创 VC中内联汇编容易产生的错误

https://www.52pojie.cn/thread-977599-1-1.html

2020-02-04 04:32:01 308

原创 微软最新winDbg开发团队博客

https://blogs.msdn.microsoft.com/windbg/

2020-01-30 03:27:18 159

原创 windbg预览版,windbg preview配置win7x64双机调试

https://www.cnblogs.com/iBinary/p/11401141.html

2020-01-30 03:23:11 735

转载 WINDBG使用教程

什么是WinDBG? WinDbg是微软开发的免费源码级调试工具。下载地址为:http://www.microsoft.com/whdc/DevTools/Debugging/default.mspx. Windbg可以用于Kernel模式调试和用户模式调试,还可以调试Dump文件。由于大部分程序员不需要做Kernel模式调试, 我在这篇文章中不会介绍Kernel模式调试。Kernel模式调试对学...

2020-01-30 03:02:30 1577

转载 导出表 IMAGE_EXPORT_DIRECTORY

typedef struct _IMAGE_EXPORT_DIRECTORY { DWORD Characteristics; // 未使用,总为0 DWORD TimeDateStamp; // 文件创建时间戳 WORD MajorVersion; // 未使用,总为0 WORD MinorVersion; ...

2020-01-28 02:21:30 562

转载 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 1273

转载 以挂起的方式创建进程

用CreateProcess函数可以创建一个进程; 正常情况下CreateProcess做以下事情:创建一个进程的内核对象、给进程分配一个4GB的空间、加载pe:包括exe、dll、修复dll、创建主线程,把程序入口地址交给EIP 如果参数dwCreationFlags传入CREATE_SUSPENDED将以挂起的方式创建进程; 以这种方式创建的进程只有一个壳;也就是进程的主线程没有开始运行; 需...

2020-01-24 23:46:31 728

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除