- 博客(87)
- 资源 (29)
- 收藏
- 关注
转载 VMware+Windgb+Win7
本文主要记录个人安装VMware+Windgb+Win7内核驱动调试的笔记。一、安装环境主机:Windows Vista Bussiness虚拟机:VMware 7GUestOS: Win7Windbg: 6.11二、虚拟机配置打开相应 vmware 虚拟机上的 “Virtaul Machine Settings“ “Hardware ”选项中 ---->
2013-05-16 20:49:03 1046
转载 [HEVC/H265] 另一个开源项目openHEVC
今天才在群里看见openHEVC项目,过去看了下,是基于FFMPEG结构写的,代码也进行了优化,比我为了调试方便而保持和HM函数名/结构兼容时效率提高不少。推荐大家去看看。似乎目前只支持解码,也许不久会加入编码功能吧。 地址:http://github.com/OpenHEVC/
2013-05-31 14:21:48 5754
原创 RegOpenKeyEx在64位与32位系统编程注意事项
RegOpenKeyEx在64位系统上安装32位的应用程序,应用程序写的注册表在64位中路径示例如下:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Tencent\QQ2009这个时候如果我们自己编写32位应用程序去读的时候就不是下面的路径了:HKEY_LOCAL_MACHINE\SOFTWARE\Tencent\QQ2009一定要加上Wow6
2013-05-30 10:42:11 2017
转载 Specifying Device Types
Specifying Device TypesEach device object has a device type, which is stored in the DeviceType member of its DEVICE_OBJECT structure. The device type represents the type of underlying hardware for
2013-05-28 15:52:11 690
转载 VC画图不闪烁的方法(双缓冲技术)
在VC中画图不闪,可以使用内存画图,然后将图片拷贝到设备上,但结果是加快图像显示速度,但还是很闪,显示图形如何避免闪烁,如何提高显示效率,而且多数人认为MFC的绘图函数效率很低,总是想寻求其它的解决方案。MFC的绘图效率的确不高但也不差,而且它的绘图函数使用非常简单,只要使用方法得当,再加上一些技巧,用MFC可以得到效率很高的绘图程序。1、显示的图形为什么会闪烁?我们的绘图过程大多
2013-05-28 15:12:17 767
转载 _EPROCESS结构简单了解!
[cpp] view plaincopylkd> dt _EPROCESS nt!_EPROCESS +0x000 Pcb : _KPROCESS +0x06c ProcessLock : _EX_PUSH_LOCK +0x070 CreateTime : _LARGE_INT
2013-05-28 15:06:09 650
转载 SetProcessShutdownParameters(防程序被另类退出)
VB声明 Declare Function SetProcessShutdownParameters Lib "kernel32" Alias "SetProcessShutdownParameters" (ByVal dwLevel As Long, ByVal dwFlags As Long) As Long 说明 在系统关闭期间,为指定进程设置他相对于其它程序的关闭顺序 返回值 Lon
2013-05-28 14:25:16 1684
转载 利用windows内核驱动创建虚拟磁盘设备
最近看了一下一个叫做filedisk的开源程序的代码 了解了关于磁盘设备驱动的一些东西总结一下filedisk的功能就是可以把磁盘上的某个文件映射成一个磁盘驱动器像一般的磁盘卷一样来使用关于filedisk的原理简单来说就是利用驱动程序创建一个磁盘设备(IoCreateDevice)然后在用户态程序中用DefineDosDevice将这个设备挂载到某个盘符下
2013-05-20 00:35:19 2530 1
转载 vs2010:fatal error C1010: 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include "StdAfx.h"”?
用 vs2010 编程,因为它自动生成的StdAfx.h 和 StdAfx.cpp没什么用, 所以索性就把它们删了但是F5运行报错:fatal error C1010: 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include "StdAfx.h"”?错误分析: 此错误发生的原因是编译器在寻找预编译指示头文件(默认#include "stdafx.h
2013-05-19 15:30:02 5159
原创 托盘图标及托盘菜单-问题及解决方案-编程-经验
1.托盘菜单关闭不了-点击空白处托盘菜单无法关闭解决方案:在 PopupMenu 语句前加上 SetForegroundWindow Me.hwnd例如:if (LOWORD(lParam) == WM_RBUTTONUP){HMENU hMenu = LoadMenu(This->Instance, MAKEINTRESOURCE(This->No
2013-05-15 23:27:27 722
转载 安装和卸载INF文件DOS命令【备忘】
安装INFDOS命令:命令如下: Rundll32 Setupapi.dll,InstallHinfSection DefaultInstall 128 .\install.inf只要更给C:\Windows\iinf\ie.inf为自己要安装的inf文件文件路径和文件就可以了卸载Windows MessengerRunDll32 advpack.dll,L
2013-05-14 04:02:26 2392
原创 关于INF文件的一些用法
C:\WinDDK\7600.16385.1\tools\Chkinf>C:\WinDDK\7600.16385.1\tools\Chkinf>chkinf.bat E:\Symbio\APS\HDDfilter.inf /O E:\Symbio\APS\chkinfC:\WinDDK\7600.16385.1\tools\Chkinf>chkinf.bat INF文件
2013-05-14 00:12:53 1018
原创 VS对话框资源中编辑控制的TAB键序
TAB键序在用户输入多个数据的时候是很方便的功能,但是若是顺序不合理反而会成为累赘。 VC中的TAB键序很容易设置,我在控件属性里找了半天,只找到了TABSTOP属性。发现对话框编辑器提供了一个功能:按Ctrl+D就会进入TAB键序编辑状态,所有的控件左上角都有一个蓝底白字的数字,只要按顺序依次点击,序号就会在点击的控件上依次递增,也就是说,点击的顺序就是控件TAB键序的顺序。
2013-05-12 20:18:37 953
原创 VS2012创建的工程让VS2010可编译的方法
第一步:*.sln 文件中有如下两句:Microsoft Visual Studio Solution File, Format Version 12.00# Visual Studio 2012在VS2010中编译要改成下面的格式Microsoft Visual Studio Solution File, Format Version 11.0
2013-05-08 19:46:32 783
转载 windbg调试命令9(dt、d)
dt命令显示局部变量、全局变量或数据类型的信息。它也可以仅显示数据类型。即结构和联合(union)的信息。 0: kd> dt _PEB nt!_PEB +0x000 InheritedAddressSpace : UChar +0x001 ReadImageFileExecOptions : UChar +0x002 BeingDebugged : U
2013-05-07 19:25:01 838
转载 windbg调试命令8(bp、bu、bm、bl、bc、ba、be、bd)
windbg调试命令8(bp、bu、bm、bl、bc、ba、be、bd)以下以skinhgy为例,windbg附加运行1.bp 命令是在某个地址下断点, 可以 bp 0x7783FEB 也可以 bp MyApp!SomeFunction 。对于后者,WinDBG 会自动找到MyApp!SomeFunction 对应的地址并设置断点。 但是使用bp的问题在于:1)当代码修
2013-05-07 19:24:30 1125
转载 windbg调试命令7(!runaway、~)
windbg调试命令7(!runaway、~)1.!runaway!runaway命令显示每个线程消费的时间Bit 0 (0x1) 让调试器显示每个线程消耗的用户模式时间(user time),默认不加就是0x1Bit 1 (0x2) 显示每个线程消耗的内核时间(kernel time)。Bit 2 (0x4) 显示每个线程从创建开始经历了多少时间。就是三者的组合:1 2 3 4
2013-05-07 19:24:02 654
转载 windbg调试命令6(!peb、!teb)
windbg调试命令6(!peb、!teb)PEB(Process Environment Block,进程环境块)存放进程信息,每个进程都有自己的PEB信息。位于用户地址空间。TEB(Thread Environment Block,线程环境块)系统在此TEB中保存频繁使用的线程相关的数据。位于用户地址空间,在比 PEB 所在地址低的地方。进程中的每个线程都有自己的一个TEB。调
2013-05-07 19:23:37 717
转载 windbg调试命令5(ln、伪寄存器)
windbg调试命令5(ln、伪寄存器)1.lnln 命令显示给定地址处的或者最近的符号。ln表示list near,ln命令将尽可能地给出与特定地址相关的符号,如果没有符号能够精确地与这个地址匹配,那么调试器将通过指针算法对靠近这地址的符号进行运逄,并返回运算结果符号0:000> ln 01012475(01012475) calc!WinMainCRTStart
2013-05-07 19:23:06 603
转载 windbg调试命令4(用户层.dump)
Windbg生成dump文件的方法:程序崩溃(crash)的时候, 为了以后能够调试分析问题, 可以使用WinDBG要把当时程序内存空间数据都保存下来,生成的文件称为dump 文件。 步骤:1) 打开WinDBG并将之Attach 到crash的程序进程2) 输入产生dump 文件的命令WinDBG产生dump 文件的命令是 .dump ,可以选择不同的参数来生成不同类型的dump
2013-05-07 19:22:35 599
转载 windbg调试命令3(sx、ld)
1.sxsx* 命令用来控制被调试的程序发生某个异常或特定事件时,调试器要采取的动作sx 命令显示当前进程的异常列表和所有非异常的事件列表,并且显示调试器遇到每个异常和事件时的行为。sxr 命令将所有异常和事件过滤器的状态重设为默认值。命令被清除、中断和继续选项被重设为默认值,等等。sx这个命令的输出信息可以分为三个部分:第一部分是事件处理与相应处理模式的交互,第二部分是标准的
2013-05-07 19:22:03 1408
转载 windbg调试命令2(!gle、g、p)
!gle 扩展显示当前线程的最后一个错误码。这个太好记了,getlasterror取首字母:0:002> !gle LastErrorValue: (Win32) 0 (0) - LastStatusValue: (NTSTATUS) 0 - STATUS_WAIT_0 0:002> !gleLastErrorValue: (Win32) 0 (0) - L
2013-05-07 19:21:21 1130
转载 windbg调试命令1(k、u、x)
k*命令显示给定线程的调用堆栈,以及其他相关信息~0 k表示打印0号线程的调用堆栈,直接用k表示打印当前线程的调用堆栈kd> ~0k ChildEBP RetAddr 0007fddc 77d191be ntdll!KiFastSystemCallRet 0007fdfc 010021b0 USER32!NtUserGetMessage+0xc 0007ff1c 0
2013-05-07 19:20:53 716
转载 设备对象(DEVICE_OBJECT)-----------------主要成员
一、设备对象(DEVICE_OBJECT)kd> dt _device_objectntdll!_DEVICE_OBJECT +0x000 Type : Int2B +0x002 Size : Uint2B +0x004 ReferenceCount : Int4B +0x008 DriverObject
2013-05-07 19:18:43 673
转载 设备对象(DEVICE_OBJECT)-----------------设备名称
设备对象(DEVICE_OBJECT)-----------------主要成员一、设备对象(DEVICE_OBJECT)kd> dt _device_objectntdll!_DEVICE_OBJECT +0x000 Type : Int2B +0x002 Size : Uint2B +0x004 Referen
2013-05-07 19:17:45 1115
转载 StartIO例程------------IoStartPacket、IoStartNextPacket、IoCancelIrp实现代码
StartIO例程------------IoStartPacket、IoStartNextPacket、IoCancelIrp实现代码根据wdk代码做的IoStartPacket、IoStartNextPacket、IoCancelIrp简化版:VOID IoStartPacket( IN PDEVICE_OBJECT DeviceObject, IN PIR
2013-05-07 19:15:53 963
转载 ObReferenceObjectByHandle内核函数
大槪就是看这个句柄是当前进程的句柄还是当前线程的句柄,最后再看看这AccessMode是内核还是用户态下,内核的话,句柄表就用ObpKernelHandleTable,用户态的话就用当前进程的句柄表NTSTATUSObReferenceObjectByHandle ( __in HANDLE Handle, __in ACCESS_MASK DesiredAccess,
2013-05-07 19:15:20 1508
转载 MDL
在MSDN中有这样的定义内存描述符列表 (MDL) 是一个系统定义的结构,通过一系列物理地址描述缓冲区。执行直接 I/O 的驱动程序从 I/O 管理器接收一个 MDL 的指针,并通过 MDL 读写数据。一些驱动程序在执行直接 I/O 来满足设备 I/O 控制请求时也使用 MDL。http://msdn.microsoft.com/zh-cn/windows/hardware/gg46319
2013-05-07 19:12:46 871
转载 实现一个具有还原功能的磁盘卷过滤驱动
磁盘过滤驱动的概念1.设备过滤和类过滤在之前的文章里,我们已经介绍过滤的概念,所谓过滤技术就是在本来已有的设备栈中加入自己的一个设备。由于Windows向任何一个设备发送IRP请求都会首先发送给这个设备所在设备栈的最上层设备,然后再依次传递下去,这就使得加入的设备在目标设备之前获取Irp请求称为可能,这时候就可以加入自己的处理流程。在这里把插入设备栈的用户设备叫做过滤设备,建立这个设备并使
2013-05-07 19:08:05 1141
转载 键盘过滤之内核级Hook(二)
键盘过滤之内核级Hook(二)如果不想让键盘过滤驱动程序或回调函数首先获得按键,则必须比端口驱动更加底层一些。早期版本的QQ反盗号驱动的原理是这样的:用户要输入密码时(比如把输入焦点移动到了密码框里),就注册一个中断服务来接管键盘中断,比如0x93中断,之后按键就不关键驱动的事了。首先就来介绍一下Hook键盘中断。1.中断:IRQ和INT学过计算机体系结构的人都知道硬件
2013-05-07 19:04:30 645
转载 键盘过滤之内核级Hook(一)
原文链接:http://www.cnblogs.com/guanlaiy/archive/2013/02/18/2915332.html键盘过滤之内核级Hook(一)Hook分发函数 前一篇文章讲述了进行键盘过滤,截取用户输入的方法。本篇文章开始更加深入地讨论键盘的过滤与反过滤对抗。无论是过滤还是饭过滤,原理都是过滤,取胜的关键在于谁第一个得到信息。
2013-05-07 17:38:58 767
转载 Ramdisk源代码详解
原文链接:http://www.cnblogs.com/guanlaiy/archive/2013/02/18/2915315.html紫 陌Ramdisk源代码详解这篇文章来介绍一下WDK中提供的一个案例源码--Ramdisk虚拟磁盘。这个例子实现了一个非分页内存做的磁盘储存空间,并将其以一个独立磁盘的形式暴露给用户,用户可以将它格式化成一个W
2013-05-07 17:37:51 738
转载 内核模式开发笔记
* 通过 NTSTATUS 获得相应的字符串 使用函数RtlNtStatusToDosError可以获得与NTSTATUS相对应的Windows错误码。 微软网站上说用API函数 FormatMessage 可获得相应的字符串,但是在调用前必须先用 LoadLibrary 载入 "NTDLL.DLL"。 文章链接 - http://support.microsof
2013-05-05 01:17:02 514
转载 删除目录,包含删除子文件夹以及其中的内容
BOOL DeleteDirectory(char *DirName)//如删除 DeleteDirectory("c:\\aaa"){ CFileFind tempFind; char tempFileFind[MAX_PATH]; sprintf(tempFileFind,"%s\\*.*",DirName); BOOL
2013-05-05 01:16:27 810
转载 关于Debug和Release之本质区别的讨论
一、Debug 和 Release 编译方式的本质区别 Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。Debug 和 Release 的真正秘密,在于一组编译选项。下面列出了分别针对二者的选项(当然除此之外还有其他一些,如/Fd /
2013-05-05 01:15:52 440
转载 C语言的宏定义
写好C语言,漂亮的宏定义很重要,使用宏定义可以防止出错,提高可移植性,可读性,方便性 等等。下面列举一些成熟软件中常用得宏定义:1,防止一个头文件被重复包含#ifndef COMDEF_H#define COMDEF_H//头文件内容#endif2,重新定义一些类型,防止由于各种平台和编译器的不同,而产生的类型字节数差异,方便移植。typed
2013-05-05 01:14:04 577
转载 同步,异步IRP的处理
Before you examine the scenarios, you must understand the differences between a driver-created synchronous input/output request packet (IRP) and an asynchronous request.Collapse this tableExpand
2013-05-05 01:13:26 676
转载 irp的处理,免得忘了
IntroductionOne of the most frequently done tasks in Windows Driver Model (WDM) drivers is sending input/output request packets (IRPs) from one driver to another driver. A driver either creates it
2013-05-05 01:12:46 602
转载 Windows NT 驱动程序开发人员提示 -- 应注意避免的事项
1. 一定不要在没有标注 I/O 请求数据包 (IRP) 挂起 (IoMarkIrpPending) 的情况下通过调度例程返回 STATUS_PENDING。 2. 一定不要通过中断服务例程 (ISR) 调用 KeSynchronizeExecution。 它会使系统死锁。 3. 一定不要将 DeviceObject->Flags 设置为 DO_BUFFERED_IO 和 DO_D
2013-05-05 01:01:52 565
winhex编辑器
2014-03-29
w32dsm静态反汇编工具
2014-03-29
OllyDBG_1.10
2014-03-29
PEiD 0.94版本
2014-03-29
漫谈兼容内核
2013-05-02
bochs 2.6 source code
2012-09-27
Import REConstructor V1.4和V1.6两个版本
2009-02-01
万能图标提取器 V1.0(100%不变色)
2009-02-01
win2000API学习资料
2009-02-01
Asp 文件加密器(MyAsp) v2.0,网马免杀,免杀
2009-02-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人