xbgprogrammer的专栏

私信 关注
xbgprogrammer
码龄14年
  • 367,601
    被访问量
  • 106
    原创文章
  • 16,469
    作者排名
  • 28
    粉丝数量
  • 于 2007-04-23 加入CSDN
获得成就
  • 获得20次点赞
  • 内容获得32次评论
  • 获得60次收藏
荣誉勋章
  • 最近
  • 文章
  • 资源
  • 问答
  • 课程
  • 帖子
  • 收藏
  • 关注/订阅

x86 和 x64平台下数据类型大小

x86平台 x64平台 从以上测试可知,不管是x86平台还是x64平台,int类型大小都是32位4个字节http://msdn.microsoft.com/en-us/library/aa383751%28v=VS.85%29.aspx而在x64平台上,指针类型大小为8个字节,所以为了源代码级的可移植能力,windows添加了类型XXX_PTR类型,你懂得!
原创
1447阅读
0评论
0点赞
发布博客于 10 年前

debian8安装完之后要做的N件事

jessie比起之前的wheezy安装方便了不少 比如支持普通用户提权 adsl联网而这些都是以前安装完之后要做的事 虽说这样 debian需要折腾的地方依旧很多 首先是换源 用中科大的 快deb http://mirrors.ustc.edu.cn/debian jessie main contribnon-freedeb-src http://mirrors.ustc.edu.
转载
1527阅读
0评论
0点赞
发布博客于 5 年前

OnInitDialog()中SetFocus()不起作用解决方法

OnInitDialog()中自动生成的注释:return TRUE;  // return TRUE unless you set the focus to a control回答了这个问题.Be careful 哦.
转载
2264阅读
0评论
0点赞
发布博客于 7 年前

使用Atl 创建Com对象需要注意的问题

今天我使用Atl创建了一个名为MyCalcObj的Com对象,然后在源代码(还是ATL工程)的某个地方我实例化了一个Com对象CMyCalcObj obj;编译报错:1>f:\bho\mymathsvc\mymathsvc\mymathsvc.cpp(20) : error C2259: “CMyCalcObj”: 不能实例化抽象类1>        由于下列成员:1>
原创
868阅读
0评论
0点赞
发布博客于 9 年前

vs添加现有def文件无法导出函数

今天给别人帮忙生成一个dll文件,所有文件(包括def文件)被添加至工程后,无论如何导出不了函数,最后发现将原有def文件删除,然后再添加,dll里有了导出函数,怪哉,异哉,不懂。今天暂且记下一笔,防止日后碰到后又要搞半天。如果我说的不对,请告知,谢谢啊!
原创
2701阅读
2评论
1点赞
发布博客于 7 年前

环境变量在注册表中的定义位置

1. HKEY_CURRENT_USER\Volatile Environment2. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
原创
5076阅读
1评论
2点赞
发布博客于 7 年前

关于控制台打印Unicode字符的测试

今天写了程序,需要在控制台上打印Unicode字符信息,白天在公司写完后运行,发现win7系统的控制台可以正确的打印出Unicode字符,而在一台Xp系统上运行,却打印不出字符信息,看来两个系统的控制台还是有差别的。
原创
621阅读
0评论
0点赞
发布博客于 10 年前

加入一个组播组

网络中的一台主机如果希望能够接收到来自网络中其它主机发往某一个组播组的数据报,那么这么主机必须先加入该组播组,然后就可以从组地址接收数据包。在广域网中,还涉及到路由器支持组播路由等,但本文希望以一个最为简单的例子解释清楚协议栈关于组播的一个最为简单明了的工作过程,甚至,我们不希望涉及到IGMP包。    我们先从一个组播客户端的应用程序入手来解析组播的工作过程:    #include
转载
7396阅读
0评论
1点赞
发布博客于 5 年前

windbg 查看参数应用方法

最近在调试ntNtCreateKey函数,每次触发断点后,查看究竟哪个键值被创建应用一下几个步骤1. dd esp指令得到nt!NtCreateKey第三个参数 aaa,类型为OBJECT_ATTRIBUTES2. dd aaa得到OBJECT_ATTRIBUTES结构体内存3. dd [aaa] + 8得到Unicode_String结构体内存4. du Unicode_Stri
原创
1303阅读
0评论
0点赞
发布博客于 6 年前

PE文件学习笔记(五):导入表、IAT、绑定导入表解析

fromhttp://blog.csdn.net/apollon_krj/article/details/774170631、导入表(Import Descriptor)结构解析:导入表是记录PE文件中用到的动态连接库的集合,一个dll库在导入表中占用一个元素信息的位置,这个元素描述了该导入dll的具体信息。如dll的最新修改时间、dll中函数的名字/序号、dll加载后的函数地址等
转载
279阅读
0评论
1点赞
发布博客于 4 年前

windows 10驱动签名相关问题

这篇文章绝大部分翻译自几篇英文文档,包括osronline和msdn。希望对windows 10驱动签名有困惑的同学有所帮助:Build 2017开发者大会上,微软官方宣布,将在今年秋天推出的Windows 10第四次重大更新“Redstone 3”,已经定名为“Fall Creators Update”(秋季创意者更新)。Windows 10此前已经进行了三次重大升级,其中2
翻译
3175阅读
0评论
0点赞
发布博客于 4 年前

Calling Other Windows Filtering Platform Functions

Many of the other Windows Filtering Platform functions that are available to user-mode management applications are also available to callout drivers. This enables a callout driver to perform managemen
翻译
454阅读
0评论
0点赞
发布博客于 4 年前

Using a Callout for Deep Inspection of Stream Data

Packet Inspection PointsIncoming packets that are destined for an address that is assigned to the receiving computer (local host traffic) traverse up WFP layers in the following order:计算机接收的数据包按照下
翻译
512阅读
0评论
0点赞
发布博客于 4 年前

Processing Classify Callouts

The filter engine calls a callout's classifyFn callout function when there is network data to be processed by the callout. This occurs when all the filtering conditions are true for a filter that sp
翻译
449阅读
0评论
0点赞
发布博客于 4 年前

Processing Notify Callouts

The filter engine calls a callout's notifyFn callout function to notify the callout driver about events that are associated with the callout.当发生与某个callout关联的事件时,过滤引擎调用这个callout的notifyFn函数通知callout d
翻译
226阅读
0评论
0点赞
发布博客于 4 年前

Initializing a Callout Driver

A callout driver initializes itself within its DriverEntry function. The main initialization tasks are as follows:callout driver在DriverEntry函数中初始化自己,主要的初始化功能如下:Specifying an Unload Function Cr
翻译
305阅读
0评论
0点赞
发布博客于 4 年前

Definitions

CalloutA callout provides functionality that extends the capabilities of the Windows Filtering Platform. A callout consists of a set ofcallout functions and a GUID key that uniquely identifies the
翻译
243阅读
0评论
0点赞
发布博客于 4 年前

Introduction to Windows Filtering Platform Callout Drivers

Purpose of Callout DriversA callout driver implements one or more callouts. Callouts extend the capabilities of the Windows Filtering Platform by processing TCP/IP-based network data in ways that ar
翻译
316阅读
0评论
0点赞
发布博客于 4 年前

Processing I/O Operations

过滤管理器简化了minifilter驱动处理IO操作的过程,传统过滤驱动必须将IO请求传递至下一层驱动、正确处理挂起、同步、IO完成等,而minifilter只注册必须处理的IO请求。对于一个给定的IO操作,只有当minifilter驱动注册了preoperation回调函数时,过滤管理器才会调用minifilter驱动。过滤管理器会代表minifilter驱动拷贝栈参数、传递IRP Pend
翻译
601阅读
0评论
0点赞
发布博客于 5 年前

Filter Manager and Minifilter Driver Architecture

The filter manager is a kernel-mode driver that conforms to the legacy file system filter model and exposes functionality commonly required in file system filter drivers. By taking advantage of this f
翻译
469阅读
0评论
0点赞
发布博客于 5 年前

如何设置对话框的最大(小)高度与宽度

关于如何设置对话框的最大(小)高度与宽度,网上有很多blog介绍了这个方面,我觉得有一篇写的比较好,先扒过来凑点字数以下内容转自http://www.youranshare.com/push/code/win-c-cpp/427.html:在MFC中,没有像QT那样的函数可以直接通过某个函数就可以完成对窗口的最大最小SIZE信息进行设置,但是这么强大的MFC,这种弱鸡的问题
原创
3230阅读
0评论
0点赞
发布博客于 5 年前

windows钩子在64位系统下行为分析

很多人对windows钩子比较熟悉,也可以轻易的写出一个全局钩子程序。但是一个32位钩子是否可以捕获64位进程的消息呢?又或者64位钩子能否捕获32位进程的消息呢?下面我们分析一下。MSDN在对SetWindowsHookEx函数有如下说明:SetWindowsHookEx can be used to inject a DLL into another process. A 32-bit
原创
2656阅读
1评论
1点赞
发布博客于 5 年前

WM_ERASEBKGND与WM_PAINT

最近开发一个Wtl自绘界面程序。我在WM_ERASEBKGND消息中绘制背景图,在客户区域的右上角绘制控制按钮。最初对话框是不可改变大小的,后来由于需求需要支持拖拉改变对话框大小,相应的控制按钮的位置也要随着对话框的大小变化而变化。于是我在WM_SIZE消息中改变控制按钮的位置: void OnSize(UINT nType, CSize size) { ::OutputDebugStr
原创
696阅读
0评论
0点赞
发布博客于 5 年前

WM_SETCURSOR消息

最近写一个拖拉无标题对话框改变大小的程序,这就需要用到改变程序的光标。最开始设想在消息WM_MOUSEMOVE中判断光标位置,改变光标形状,但是发现有光标的闪烁现象。baidu了一下,说是应该在WM_SETCURSOR消息中设置光标。这在Using Cursor文档中有说明。Your application can change the design of the cursor by us
原创
6049阅读
1评论
0点赞
发布博客于 5 年前

SAMPLE: Using HttpSendRequestEx for Large POST Requests

SummaryThis sample demonstrates proper usage of the HttpSendRequestEx function introduced in the Internet Explorer 4.0 WinInet.dll and documented in the Internet Client SDK. The original Htt
转载
606阅读
0评论
0点赞
发布博客于 5 年前

WinInet异步处理

wininet不仅支持同步的处理方式,也支持异步的处理方式。具体方法如下1. 调用InternetOpen时设置参数INTERNET_FLAG_ASYNChSession = InternetOpen(szAgent, INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, INTERNET_FLAG_ASYNC);2. 设置回调函数INTERNET_STA
原创
2392阅读
0评论
0点赞
发布博客于 5 年前

Wininet中Cookie管理

默认情况下,Wininet会根据自动的在请求中添加cookie头,并且自动的将返回的Cookie信息添加到Cookie数据库中。Cookie分为两种,持久化Cookie及会话Cookie。持久化Cookie就是带有失效日期的Cookie,根据进程的完整性级别,会被保存到Users\"username"\AppData\Roaming\Microsoft\Windows\Cookies目录或者Use
原创
2121阅读
0评论
1点赞
发布博客于 5 年前

WinInet随笔

Wininet是微软提供的利用FTP、HTTP协议访问Internet资源的API接口,接口处理底层协议的的变化,例如代理服务器,从而使利用winiet的应用程序具有一直的行为。使用Wininet最知名的程序就是IE,而很多第三方应用也使用它来方位互联网。最近做了些工作,特记录下一些随笔。Wininet利用HINTERNET句柄保存协议相关信息,并且HINTERNET句柄以树状的形式保存,其中
原创
1437阅读
0评论
2点赞
发布博客于 5 年前

Why do some structures end with an array of size 1?

from:https://blogs.msdn.microsoft.com/oldnewthing/20040826-00/?p=38043/Some Windows structures are variable-sized, beginning with a fixed header, followed by a variable-sized array. When these str
转载
475阅读
0评论
0点赞
发布博客于 5 年前

minifilter -- User Mode Communication

Filter Communication Port ObjectTo implement security and enable multiplecommunication channels, a new object has been introduced called a minifiltercommunication port.  It is intended to beused for
翻译
566阅读
0评论
0点赞
发布博客于 5 年前

绘制树结构

树的表示方法有双亲表示法、孩子表示法、双亲孩子表示法、孩子兄弟表示法,其中前三种基于数组,最后一种基于链表。我定义的数节点数据结构为typedef struct _TREENODE { char val; _TREENODE* Parent; _TREENODE* Child; _TREENODE* Sibling;}TREENODE, *PTREENODE;也就是孩子兄弟表示法,
原创
445阅读
0评论
0点赞
发布博客于 5 年前

Filter Initiated I/O

Certain minifilters need to perform I/O of theirown.  This I/O is only seen byminifilters below the current minifilter in the minifilter stack of theVolume.  For instance, an anti-virusminifilter may
翻译
524阅读
0评论
0点赞
发布博客于 5 年前

Minifilter - File Name Support

The Filter Manager provides library routinesthat retrieve the name of the object in the current operation through lookingat the operation parameters or querying the file system.  For improved efficien
翻译
871阅读
0评论
0点赞
发布博客于 5 年前

String buffers and IRQL

from https://blogs.msdn.microsoft.com/doronh/2006/03/03/string-buffers-and-irql/If you look at the docs for many Rtl string functions, you will see that they are callable only at IRQL == PASSIVE
翻译
310阅读
0评论
0点赞
发布博客于 5 年前

windows消息处理

事先声明,本文大部分为拷贝内容,本文的目的是验证这些内容。根据windows核心编程所述,线程调用一个与图形用户界面有关的函数(例如检查它的消息队列或建立一个窗口),系统就会为该线程分配一些另外的资源,以便它能够执行与用户界面有关的任务。特别是,系统分配一个THREADINFO结构,并将这个数据结构与线程联系起来。当一个线程等待SendMessage返回时,它基本上是处于空闲状态。但它可以
原创
253阅读
0评论
0点赞
发布博客于 5 年前

Modifying the Parameters for an I/O Operation

A minifilter driver can modify the parameters for an I/O operation. For example, a minifilter driver'spreoperation callback routine can redirect an I/O operation to a different volume by changing th
翻译
355阅读
0评论
0点赞
发布博客于 5 年前

Writing Postoperation Callback Routines

Like a completion routine, a postoperation callback routine is called at IRQL <= DISPATCH_LEVEL, in an arbitrary thread context.Because it can be called at IRQL = DISPATCH_LEVEL, a postoperation c
翻译
683阅读
0评论
0点赞
发布博客于 5 年前

Writing Preoperation and Postoperation Callback Routines

In its DriverEntry routine, a minifilter driver can register up to onepreoperation callback routine and up to one postoperation callback routine for each type of I/O operation that it needs to filte
翻译
875阅读
0评论
0点赞
发布博客于 5 年前

Writing a FilterUnloadCallback Routine for a Minifilter Driver

A file system minifilter driver can optionally register a PFLT_FILTER_UNLOAD_CALLBACK-typed routine as the minifilter driver'sFilterUnloadCallback routine. This callback routine is also referred to
翻译
720阅读
0评论
0点赞
发布博客于 5 年前

Com 组件的装载和卸载

转自http://www.cnblogs.com/zcgao/archive/2011/07/18/2109220.html进程内组件的装载: 客户程序调用COM 库的 CoCreateInstance 或 CoGetClassObject 函数创建 COM 对象,在 CoGetClassObject 函数中,COM 库根据系统注册表中的信息,找到类标识符 CLSID 对应的组
转载
2565阅读
0评论
0点赞
发布博客于 5 年前

增量备份与差异备份的区别(Incremental vs. differential backup: A comparison)

Differential backup -- 差异备份Differential backups copy those files that have been changed since the last full backup took place. So if a full backup was done on Day 1, Day 2's differential will copy
翻译
8184阅读
1评论
0点赞
发布博客于 5 年前

What really happens when you navigate to a URL

转自http://igoro.com/archive/what-really-happens-when-you-navigate-to-a-url/As a software developer, you certainly have a high-level picture of how web apps work and what kinds of technologies are i
转载
367阅读
0评论
0点赞
发布博客于 5 年前

win10 系统版本号获取

转自http://www.07net01.com/2015/04/813058.html   微软在Windows 10的版本号获取上留下一个坑,如果用GetversionEx获取版本号,则获取到的是6.2.9200          官方有如下说明[GetVersionEx may be altered or unavailable for releases
转载
2862阅读
1评论
0点赞
发布博客于 5 年前

WM_QUIT, WM_CLOSE, WM_DESTROY的一些区别

转自http://blog.chinaunix.net/uid-16318340-id-2748753.htmlWM_CLOSE:  在系统菜单里选择了“关闭”或者点击了窗口右上角的“X”按钮,你的窗口过程就会收到WM_CLOSE。DefWindowProc对 WM_CLOSE的处理是调用DestroyWindow。当然,你可以不让DefWindowProc处理,而是自己处理,例如
转载
3541阅读
1评论
3点赞
发布博客于 5 年前

COM套间和线程模型

转自http://blog.itpub.net/23410886/viewspace-1032239/在看组件的注册表时,对TreadingModel很不理解,所以网上查阅总结了下。大部分内容摘自《理解 COM 套间》,谢谢原作者。[@more@]套间的提出是为了组件在多线程环境下安全执行,因为有跨线程调用同一个组件方法的状况存在。若该组件接口是线程安全的,则无须套间,
转载
906阅读
0评论
0点赞
发布博客于 5 年前

STA 进程内Com组件剖析

1. 我们知道对单线程套间内Com对象的跨套间访问需要通过
原创
1139阅读
0评论
0点赞
发布博客于 5 年前

注册Com组件提示找不到指定的模块解决办法

开发了一个com模块,拿到一个干净的虚拟机上使用regsvr32注册,提示“xxxx加载失败.......找不到指定的模块。",见下图找不到指定的路径?莫非是我给的注册文件路径不对?可是我把我的钛合金狗眼都看瞎了,发现文件路径没错啊,妈的,自己写个注册程序,发现在Load这个com dll时提示无法启动此程序,计算机丢失ATL100.dll。至此,原因清楚了。原来是我的Com Dll没
原创
6192阅读
0评论
2点赞
发布博客于 5 年前

windbg设置调用堆栈显示深度

使用windbg调试进程调用堆栈时,有时候会发现调用堆栈显示的不完全,这是因为windbg默认最多显示20帧调用堆栈,可以使用.kframe [StackCount]设置最大的堆栈显示深度。另外也可以使用k系列命令时附加要显示的堆栈深度,k [FrameCount]设置要显示的栈帧数量。之前用的不太熟练,被逼的使用!for_each_frame ["CommandString"] 显示完整的堆
原创
2537阅读
0评论
0点赞
发布博客于 5 年前

scsi设备扫描特征分析

当驱动发现一个scsi适配器后,会扫描与其连接的scsi设备。每一个scsi设备的路径可以通过(PathId,TargetId,Lun)表示,当存储miniport驱动收到scsi指令SCSIOP_INQUIRY后,需要判断当前的查询路径上是否有scsi设备连接。   我们配置scsi适配器时会设置其支持的最大总线数(NumberOfBuses)、最大对应ID设备(MaximumNumberO
原创
1242阅读
1评论
0点赞
发布博客于 5 年前

结构体包含大小为零的数组时情况分析

在分析某代码时,发现某结构体定义为typedef struct _BUSENUM_PLUGIN_HARDWARE{ // // sizeof (struct _BUSENUM_HARDWARE) // __in ULONG Size; // // Unique serial number of the device to be enumerated. // E
原创
4429阅读
0评论
0点赞
发布博客于 5 年前

sql 行列转换

有如下表数据id name course score1 张三 语文 802 张三 数学 903 张三 英语 904 李四 语文 475 李四 数学 786 王五 数学 97想要生成如下报表name 数学 英语 语文李四 78 NULL 47王五 97 NULL NULL张三 90 90 80有如下方式1. select S.name, s
转载
198阅读
0评论
0点赞
发布博客于 5 年前

经典SQL练习题

from http://www.2cto.com/database/201402/282086.html 今天在网上找了几道经典的SQL练习题做了一下,虽然都不难,但是对打基础是很有好处的,在明白的基础上可以进一步做分析,来研究一下各种解法的优劣,甚至进行简单的优化。。现在将题目和答案分享一下。我使用的是MYSQL 5.0,但是绝大部分都是标准SQL。CREATE TABLE ST
转载
251阅读
0评论
0点赞
发布博客于 5 年前

死锁调试

先Copy个死锁的定义, 所谓死锁:是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。我觉得这里使用进程并不是十分准确,更准确点应该是线程。下面我从应用层和内核层分别讨论使用windbg调试死锁的方法。--------------------------------------应用层-------------------------
原创
3009阅读
1评论
3点赞
发布博客于 5 年前

!logexts调试指令

使用windbg调试程序时,可以使用!logexts系列指令记录windows api的调用情况。使用方法如下1. !logexts.logiThe !logexts.logi extension initializes logging by injecting Logger into the target application.将logger注入到目标进程中2. !logext
原创
696阅读
0评论
0点赞
发布博客于 5 年前

汇编解析随记

1. push register指令并不意味着保存寄存器内容,有可能是分配4个字节的栈空间,例如如下源代码int _tmain(int argc, _TCHAR* argv[]){ int* p =NULL; *p = 10; return 0;}汇编指令为int _tmain(int argc, _TCHAR* argv[]){00E91000 55
原创
255阅读
0评论
0点赞
发布博客于 5 年前

探究多网卡UDP广播发送源地址

使用UDP发送广播时,若绑定了指定的IP地址,则只使用此IP地址作为UDP广播源IP地址。若没有指定IP地址或者指定了INADDR_ANY,则在不同的操作系统上有不同的结果。在xp机器上,此广播会绑定 到所有的IP地址上发送广播,在windows 7上,会选择一个网卡的IP地址作为发送源(如何选择尚不清楚)。所以,如果要windows 7所有网卡都想外发送广播,需要枚举所有的IP地址并创建对应的s
原创
4247阅读
0评论
0点赞
发布博客于 5 年前

ICMP协议数据包捕获

今天使用wireshark调试一个PING功能,使用icmp过滤串,发现ping本地子网一个不存在的IP地址,wireshark没有捕获到任何的icmp数据包。而当ping另外一个子网不存在的IP地址,wireshark捕获到了ICMP数据。分析如下:一. ping本地子网的IP地址     1. 获取目标IP的Mac地址(ARP协议),若没有获取到目标IP的Mac地址,Ping失败 
原创
7589阅读
0评论
1点赞
发布博客于 5 年前

x64 Tail Call Elimination

今天编译一份x64发行版代码,发现调用某函数的代码反汇编代码并不是call,而是jmp指令。本人是读过x64 deep dive的,所以对这种情形并不陌生。这是编译器对代码的优化,但是什么情况下优化,本人有记不太清了。于是又看了下x64 deep dive,上面这样说的X64 compiler can optimize the last call made from a functio
原创
417阅读
0评论
0点赞
发布博客于 5 年前

Ubuntu 16.04 LTS安装好之后需要做的15件事

感谢系统极客的投递看到这篇文章说明你已经从老版本升级到 Ubuntu 16.04 或进行了全新安装,在安装好 Ubuntu 16.04 LTS 之后建议大家先做如下 15 件事。无论你是刚加入 Ubuntu 行列的新用户,还是有经验的老用户,你都会发现一些非常有用的调整和建议。1.了解Ubuntu 16.04 LTS新特性新选项!新应用程序!新内核!新的
转载
1254阅读
0评论
0点赞
发布博客于 5 年前

Linux堆管理实现原理学习笔记 (上半部)

0x00 前言前段时间偶然学习了这篇文章:https://sploitfun.wordpress.com/2015/02/10/understanding-glibc-malloc/comment-page-1/该文是我近段时间以来读到的最好文章之一,文章浅显易懂,条例清晰,作为初学者的我从中学到了很多linux堆内存管理相关的知识。但是估计由于篇幅的限制,该文对很多难点一带而过,
转载
3326阅读
1评论
1点赞
发布博客于 5 年前

组播MAC地址和各类IP地址

MAC地址是以太网二层使用的一个48bit(6字节十六进制数)的地址,用来标识设备位置。MAC地址分成两部分,前24位是组织唯一标识符(OUI, Organizationally unique identifier),后24位由厂商自行分配。    MAC地址有单播、组播、广播之分。单播地址(unicast address)表示单一设备、节点,多播地址或者组播地址(multicast ad
转载
5395阅读
0评论
0点赞
发布博客于 5 年前

WEB/HTTP 调试利器 Fiddler 的一些技巧分享

1、原理简介:Fiddler 是目前最强大最好用的 Web 调试工具之一,它能记录所有客户端和服务器的http和https请求, 允许你监视,设置 CGI 请求的断点,甚至修改输入输出数据。同类的工具还有httpwatch,firebug,wireshark,google审查元素。与这些基于网页浏览 器的工具不同,fiddler是一个富客户端桌面工具,不仅能监听浏览器对网页的请求和对浏览器
转载
898阅读
0评论
0点赞
发布博客于 5 年前

UDP广播通信

我的网络知识有限,当领导通知要开发一个udp广播通信时,心想这还不简单,于是快速的写了代码//--------------------------------------------- // Create a socket for sending data SendSocket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); //--------
原创
3040阅读
0评论
0点赞
发布博客于 5 年前

WinSock Recvfrom() now returns WSAECONNRESET instead of blocking or timing out

WinSock Recvfrom() now returns WSAECONNRESET instead of blocking or timing outThis article was previously published under Q263823This article has been archived. It is offered "as is" and will no
转载
311阅读
0评论
0点赞
发布博客于 5 年前

小端口驱动启动及关闭过程

网卡启动过程1. 进入DriverEntry后,调用NdisMRegisterMiniportDriver注册小端口驱动ChildEBP RetAddr 807e04ec 89222eec netvmini620!MPSetOptions [d:\td
ewframe\drivers-vd
etwork
etvmini620\miniport.c @ 299]807e0510
原创
1386阅读
0评论
1点赞
发布博客于 5 年前

网卡连接状态通知

开发网络小端口驱动(ndis 6.0)时,需要指示当前的网卡连接状态。当初始化小端口时(MPInitializeEx),可以调用NdisMSetMiniportAttributes设置结构体NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES的MediaConnectState成员。若在运行中要通知连接状态的变化,可以调用NdisMIndicateStatusEx向上层
原创
1553阅读
0评论
0点赞
发布博客于 5 年前

windows 网路驱动安装

最近在开发网路协议及小端口驱动,在http://www.ndis.com/下载了协议驱动安装的例子ProtInstall(http://www.ndis.com/ndis-general/ndisinstall/programinstall.htm),研究了一下,特记录一下。网络方面的驱动可以使用INetCfg接口安装,其安装步骤大致如下1. 使用CoCreateInstance创建Com
原创
1766阅读
1评论
0点赞
发布博客于 5 年前

使用Signature Tool自动生成P/Invoke调用Windows API的C#函数声明

转自 http://blog.csdn.net/donjuan/article/details/3865026在网上看到很多网友在.NET程序中调用Win32 API,或者调用自己的VC DLL里面提供的函数的时候,总是被生成正确的C函数在C#中的正确声明而困扰,而生成C++中结构体在C#中的声明 - 天,没有什么比这个更让人恶心的事情了。因为:1.         如果你的结构体里面包含
转载
507阅读
0评论
0点赞
发布博客于 5 年前

内核内存泄露查找方式

在内核中发生内存泄露时,一般利用pool tag定位内存泄露的地方。步骤如下:1. 首先要启用pool tag,对于xp系统,可以利用gflag工具启用pool tag并重启计算机。对于之后的操作系统,pool tag默认启用。2. 若使用windbg内核调试,可以使用!poolused指令列出当前核心内存的使用情况,并聚焦于指定的tag。3. 可以使用内核调试器编辑nt!poolhi
原创
1678阅读
0评论
0点赞
发布博客于 5 年前

函数名字重组

今天同事碰到个问题,dll中导出的函数利用GetProcAddress获取不到。他声明的函数如下:extern “C" VOID WINAPI PushServiceParam(GLBPARAM * pParam);我标识不可能,立即做了个测试,导出以下函数extern "C" TESTLIB_API int fnTestlib(int i, int j);利用GetProcA
原创
559阅读
0评论
0点赞
发布博客于 5 年前

路由转发过程的IP及MAC地址变化

A-----(B1-B2)-----(C1-C2)-------E就假设拓扑图是这个样子吧,B1和B2是路由器B上的两个接口,C1和C2是路由器C上的两个接口,A和E是PC,由主机A向主机E发送数据包,那么在主机A形成的数据包的目的IP就是E的IP,源IP就是主机A的IP地址,目标MAC地址就是B1的MAC地址,源MAC地址就是A的MAC地址由A发给路由器B,B经过重封装后,源
转载
7756阅读
0评论
1点赞
发布博客于 5 年前

异步读写

测试了下异步读写,记录一下。1. 若要进行异步读写,创建(或打开)文件时需要指定异步标志位(FILE_FLAG_OVERLAPPED)。2. 读写函数的返回值依赖底层实现,若底层直接完成操作,则函数返回成功,User Mode代码可立即操作缓冲区。若底层挂起操作,则函数返回false,GetLastError()返回997,若  为其它的错误代码,说明底层处理失败。3. 处理应用层发送
原创
1671阅读
0评论
0点赞
发布博客于 6 年前

使用FLIRT签名识别库

//转自http://blog.163.com/shanshenye2k@yeah/blog/static/8234054120121015102041843/第1章   使用FLIRT签名识别库现在,我们开始讨论IDA的高级功能。同时,我们将探讨在“最初的自动分析已经完成”[1]之后,该执行什么操作。在本章中,为了识别标准的代码序列,我们将讨论各种技巧,如静态链接二进制文件中
转载
4323阅读
0评论
0点赞
发布博客于 6 年前

探究float类型参数的传递方式

今天周老师在群里发了一段代码,如下:int _tmain(int argc, _TCHAR* argv[]){ int i = 15; float m = (float)i; printf("%d
",m); return 0;}并告知输出为0, 运行并且如此。查看反汇编代码如下int _tmain(int argc, _TCHAR* argv[]){00F5100
原创
2579阅读
0评论
0点赞
发布博客于 6 年前

调试wow64进程

当使用64位debugger调试wow64进程时,cpu context默认为64位,这是查看wow64进程调用栈时,会发现只有64位调用栈,而没有32位调用栈,例如查看32位notepad进程在64位Windows上的主线程调用栈:fffff880`0382b740 fffff800`03eea992: nt!KiSwapContext+0x7afffff880`0382b880 ffff
转载
3535阅读
0评论
0点赞
发布博客于 6 年前

汇编移位: SHL、SHR、SAL、SAR、ROL、ROR、RCL、RCR 汇编移位: SHL、SHR、SAL、SAR、ROL、ROR、RCL、RCR

转自http://blog.csdn.net/richerg85/article/details/27558005SHL、SHR、SAL、SAR: 移位指令;SHL(Shift Left):      逻辑左移;SHR(Shift Right):      逻辑右移;SAL(Shift Arithmetic Left): 算术左移
转载
4734阅读
0评论
2点赞
发布博客于 6 年前

dll自注册失败提示找不到指定的程序 - 问题排查

今天重新下载代码编译打包一系列流程后,安装报错提示某个dll注册看错误代码云里雾里,于是我启动cmd,使用regsvr32注册此dll,注册失败,提示loadlibrary失败比较有思路解决,但是后面提示找不到指定的程序,我就晕了。我理解的是注册程序找不到TopVDAddin文件,但是文件明明存在啊!于是我用Dependency Walker查看,解析的确出错, Error
原创
9968阅读
0评论
0点赞
发布博客于 6 年前

Active控件开发及部署遇到的问题

最近帮同事写一个安装程序用于部署activex控件,之前没写过,遇到了一些问题,特记录下来,与大家分享,若有不对,请不吝赐教!     安装程序会安装一个windows服务,也是一个Com Server,而activex控件会创建Com对象。安装完毕后,activeX控件创建com对象失败,错误代码E_ACCESSDENIED。经调查,以http方式访问web时iexplore进程的完整性级别
原创
706阅读
0评论
0点赞
发布博客于 6 年前

内存相关操作

1. 最近做一些hook的东西,对某些内存做操作时引发访问违规,于是利用内核函数更改了页面属性,在winxp下没有问题,但在win7下程序运行异常,只是简单的一句push ebp,检查esp、ebp都没发现什么问题,后!address eip发现代码页为PAGE_WRITE*属性,而正常的代码段属性为PAGE_EXECUTE_READONLY,于是推测之前的操作将代码段的属性修改后未复原,后经将代
原创
434阅读
0评论
0点赞
发布博客于 6 年前

strlen的汇编实现

最近看了点汇编的东西,书上书长度可以使用repne scasb指令获取字符串长度,于是我测试了一下代码__declspec(noinline) int getlen(const char* str){ return strlen(str);}int _tmain(int argc, _TCHAR* argv[]){ char* name2 = "BI"; int len
原创
2141阅读
0评论
0点赞
发布博客于 6 年前

C中的继承和多态

原文出处: CODE PROJECT   译文出处:吴秦的博客   欢迎分享原创到伯乐头条1、引言继承和多态是面向对象语言最强大的功能。有了继承和多态,我们可以完成代码重用。在C中有许多技巧可以实现多态。本文的目的就是演示一种简单和容易的技术,在C中应用继承和多态。通过创建一个VTable(virtual table)和在基类和派生类对象之间提供正确的访问,我们能在C中实现继承和多态。
转载
302阅读
0评论
0点赞
发布博客于 6 年前

调用函数后的堆栈平衡

对于__stdcall调用方式,调用函数的逻辑一般如下//Caller;prologpush xxpush ...call calleeadd esp x ; 恢复堆栈;epilog一般情况下,指令add esp x会恢复调用函数之前的栈顶指针。但并不是所有的情况都这样,例如,调用这个函数后,可能接着调用另外一个函数,这时候栈顶指针可能被修改为符合调用下个函数的esp值。例
原创
2384阅读
0评论
0点赞
发布博客于 6 年前

assembly note

neg operand //计算operand的相反数,并将结果保存在operand中跳转相对偏移地址jmp 机器码EBjne/jnz machine code : 0x75je/jz     machine code : 0x74
转载
247阅读
0评论
0点赞
发布博客于 6 年前

关于call及jcc指令地址的说明

今天看了点汇编的东西,上面写着jmp指令后面为偏移地址,这与反汇编代码中看到的汇编语言不太相符啊?不管我们自己写汇编还是使用反编译器查看汇编代码,jmp指令后面写的都是绝对地址啊!其实之前也想过这个问题,在理解WTL Thunk机制时,jmp机器码后面接的是相对偏移地址,但当时没有深究。为了便于研究,写了如下代码#include "stdafx.h"int fun(int a, int b
原创
1393阅读
0评论
0点赞
发布博客于 6 年前

CWnd截获WM_CREATE消息剖析

使用MFC开发应用程序时,发现CWnd(及其继承类)可以处理WM_CREATE消息。根据之前对MFC消息的理解,所有的MFC窗口类共享一个窗口函数,在窗口函数中利用全局句柄映射表得到CWnd指针,然后调用虚函数WndProc。问题来了,窗口创建完成后,得到窗口句柄,这时候CWnd对象与窗口句柄再做关联,此时WM_CREATE消息已经处理完毕了,CWnd对象应该捕获不了WM_CREATE消息啊!MF
原创
1220阅读
0评论
0点赞
发布博客于 6 年前

vc2010异常编译条件解析

vc2010中【启用C++异常】编译条件默认为【是(/EHsc)】,在此选项下,try catch模块只能捕获C++异常(throw语句),而捕获不到结构化异常。若编译条件为【是,但有SEH异常(/EHa)】,则两种异常都可以捕获。通过其它文档得知,try catch也是建立在SEH基础之上,那为什么不能捕获SEH异常呢?这背后又是怎么实现的呢?大家知道,throw语句最终也会调用RaiseE
原创
644阅读
0评论
0点赞
发布博客于 6 年前

解读《x64 deep dive》 2

1. All registers on the X64 CPU, with the exception of the segment registers and the EFlags register, are 64-bits which implies that all fetches from memory are 64-bit wide.2. Fastcall is the defaul
转载
523阅读
0评论
0点赞
发布博客于 6 年前

负数-补码

今天看网络小说热血传奇之路,提到游戏里的沙巴克刷钱bug,说是当沙城的钱负到21亿的时候会开始变正。虽然传奇玩的较晚,时间也不长也不深入,不知道这事,但是小说作者作为传奇的骨灰级玩家,提到的这事让我很感兴趣,就从21亿这个数来看,这事肯定是真的了。显然这21亿就是int的最大值2147483647了,而且涉及到负数的问题,想起以前关于负数补码的知识看过但没通透,今天把它弄明白。看了些补码的知识
转载
465阅读
0评论
0点赞
发布博客于 6 年前

Installshield制作x64安装包Dll自注册失败解决版本

今天同事写了一个64位的自注册dll要放置在安装包中,但是安装包执行过程中提示此模块自注册失败,错误代码为-2147220473,后经排查得知,此dll所在的component未被设置为64位模块,故引发此错误。
原创
2607阅读
0评论
0点赞
发布博客于 6 年前

直接调用类成员函数地址

转自http://www.cppblog.com/woaidongmao/archive/2010/03/11/109444.aspx摘要:介绍了如何取成员函数的地址以及调用该地址.关键字:C++成员函数 this指针 调用约定一、成员函数指针的用法  在C++中,成员函数的指针是个比较特殊的东西。对普通的函数指针来说,可以视为一个地址,在需要的时候可以任意转换并直接调用。但对成员
转载
260阅读
0评论
0点赞
发布博客于 6 年前

wpf pack uri理解

要理解wpf pack uri,首先要解释下应用程序数据文件,其实指的就是应用程序依赖的非可执行文件,例如xaml、图像、视频等。wpf支持对数据文件进行配置、识别及使用。在wpf中对数据文件分为三类:1. 资源文件---被编译进可执行文件或者类库的数据文件2. 内容文件---与程序集有显式关联关系的独立的数据文件3. 源站点文件---与程序集没有关联的独立数据文件 一 资源文
原创
2488阅读
0评论
0点赞
发布博客于 6 年前

ATL Com 开发

近期做.net com通信相关工作,又无奈的看了遍Com线程模型(脑袋不好用了,之前学习的已经随着粥下肚了)。特将此次学习成果展示给大家,有不对的请评论,不许骂街。开发ATL EXE或者ATL Service时,Com对象所在的套间不是由Com类线程模型定义决定的,而是由调用CoRegisterClassClassObject注册函数的线程的套间模型决定,而此线程的Com环境模型由预处理变量决
原创
1175阅读
0评论
0点赞
发布博客于 6 年前

WPF——找不到资源window1.xaml

在编译时使用的是en-US选项进行编译并生成了en-US为名的文件夹,里面包含了可本地化的内容;但是你的本地系统使用的是zh-CN,在你运行 exe的时候,运行时会检查本地culture,发现是zh-CN,于是就去找zh-CN文件夹,但是并没有生成该culture下的资源,所以出错。  解决方法:直接用记事本打开项目文件.csproj(Visual C# Project file )  将
转载
4026阅读
0评论
0点赞
发布博客于 6 年前

wpf 窗口激活事件顺序

读wpf文档时,发现了一句话,说的是When a window is first opened, the Loaded andContentRendered events are raised only after theActivated event is raised. With this in mind, a window can effectively be
原创
7614阅读
0评论
1点赞
发布博客于 6 年前

.net com开发

之前一直在c++下开发com,对在.net下进行com开发的方法不是很了解。经过一番摸索后,自定义了一下.net下com开发的方法,自定义的哟!--- 开发Com服务器   1. 使用ATL Com开发接口(包括回调接口)及一个接口实现类。    2. 创建一个.net dll类库,引入com类库    3. 查看com类库中的类型定义,你将会知道如何定义com接口、回调接口及实现
原创
350阅读
0评论
0点赞
发布博客于 6 年前

.net com开发

一个使用.net 开发com的样例,包括了几个独立的工程
rar
发布资源于 6 年前

WPF List控件的外观设置

最近用到wpf开发程序,使用了几种动态设置控件外观的方法,跟大家分享一下。List控件DataTemplate指的是如何表现数据呈现形式的模板(这并不包括包裹DataTemplate的控件部分),一个list控件条目可以根据自己的数据使用不同的模板,可以使用ItemTemplateSelector属性。若需要对整个条目做自定义设置,就要用到ItemContainerStyle,同样一个list
原创
507阅读
0评论
0点赞
发布博客于 6 年前

SMB协商过程

近日闲来无事,由于前段单位网络配置出现问题导致逻辑环路,使网络瘫痪,虽然后面重新配置后正常,但还是吸取了不少经验,所以对网络流量及数据分析产生兴趣。我单独模拟了一些简单了网络连接过程进行了抓包,但还是有很多疑问,下面是在网络搜到的一篇关于CIFS/SMB的文章,感觉很不错,分享过来,以备以后所需。   本文,我将向大家解释什么是CIFS和SMB,它们如何工作和这些协议里一些共同的不
转载
7496阅读
1评论
2点赞
发布博客于 6 年前

windows令牌创建过程

大家都知道,在windows vista及以后的操作系统,有管理员权限的用户登录成功后,会存在两个令牌,一个为权限完整的令牌,一个为权限被过滤的令牌。并且如果用sysinternal工具logonsessions查看的话,这两个令牌属于不同的Logon Session。以上情况是如何产生的呢?请听我胡乱讲解一番。用户交互认证登录时,登录信息被送至lsass进程中的指定认证包进行身份认证,认证通
原创
1647阅读
0评论
0点赞
发布博客于 6 年前

OutputDebugString在win7操作系统windbg内核调试下无法输出的解决办法

此blog作为一篇充数的blog吧!我用windbg内核调试认证包的时候,认证包本应利用OutputDebugString输出一些调试信息,但是在windows 7中并没有输出信息。左查右找,发现了两张方法,第一张更改注册表,好像还要重启,忽略掉了。主要介绍一下第二种方法。1. windbg连接好被调试的操作系统后,载入符号 (.reload)2. 枚举符号x nt!kd_defaul
原创
1438阅读
0评论
0点赞
发布博客于 6 年前