自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

软件调试的变革

新的理念,新的工具

  • 博客(105)
  • 资源 (5)
  • 收藏
  • 关注

原创 结构体中冒号的含义

C99规定int、unsigned int和bool可以作为位域类型,但编译器几乎都对此作了扩展,允许其它类型类型的存在。使用位域的主要目的是压缩存储,其大致规则为:1)如果相邻位域字段的类型相同,且其位宽之和小于类型的sizeof大小,则后面的字段将紧邻前一个字段存储,直到不能容纳为止;2)如果相邻位域字段的类型相同,但其位宽之和大于类型的sizeof大小,则后面的字段将从新

2012-05-11 17:04:32 4734 2

转载 STL中list用法

STL中list的使用:STL中的list就是一双向链表,可高效地进行插入删除元素。现总结一下它的操作。文中所用到两个list对象c1,c2分别有元素c1(10,20,30) c2(40,50,60)。还有一个list::iterator citer用来指向c1或c2元素。list对象的声明构造():A.      listc0;                 //空链表B.

2012-05-04 10:43:33 787

原创 访问硬件示例 访问键盘控制器

控制一个芯片首先要知道它的地址,大多数PC上的8259键盘控制器在地址0x60和0x64上是可寻址的,这些位置有时称为端口(port),因为它们提供了进入硬件芯片的入口。在使用DDK时,有多个宏可以读写这些端口:READ_PORT_UCHAR ();WRITE_PORT_UCHAR();另外也可以使用汇编指令.示例代码如下所示,感兴趣的话可以自己试试:#in

2012-05-03 21:31:22 2500 2

原创 Windows内核编程的一个小例子

#include "ntddk.h"void Example1Unload(IN PDRIVER_OBJECT pDrvobj){UNICODE_STRING usDosDevName;DbgPrint("Example1: Driver is being unload.\n");RtlInitUnicodeString(&usDosDevName, L

2012-05-03 12:40:56 1105

原创 访问硬件

大多数的硬件设备都有一个可以再某处进行寻址的微芯片。将数据移入和移出微芯片都需要一个地址,通常这个地址是预先知晓的并且固化到系统中的。地址总线包含许多细线,其中一些连至每个微芯片,因此通过在内存中指定一个要写入的地址,实际上就选择了一个微芯片。大多数的硬件都有某种控制器芯片,它给出一个可寻址的内存位置,有时称为端口(port),读写端口可能需要特殊的操作码指令:一些处理器具有特殊指令集,必须使用它

2012-05-01 14:21:28 881

转载 UML中几种类间关系:继承、实现、依赖、关联、聚合、组合的联系与区别

继承指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系;在Java中此类关系通过关键字extends明确标识,在设计时一般没有争议性;实现指的是一个class类实现interface接口(可以是多个)的功能;实现是类与接口之间最常见的关系;在Java中此类关系通过关键字 impl

2012-04-25 16:17:17 870

转载 解析UML箭头、线条代表的意义

在学习UML过程中,你经常会遇到UML类图关系,这里就向大家介绍一下UML箭头、线条代表的意义,相信通过本文的介绍你对UML中箭头、线条的意义有更明确的认识。AD:本节向大家学习一下UML箭头、线条代表的意义,UML中关系主要有依赖,聚合,合成,泛化和实现等,下面就让我们来看一下这些关系如何用UML箭头和线条来实现。UML箭头、线条程序关系后面的例子将针对某个具体目的来独立

2012-04-25 15:49:58 13269

原创 步步高应届生解约事件

据称是步步高20多年来首次解约,自称缘于对形势判断失误  传奇创始人段永平表示“内疚”,连发近30条微博回应学生  作为10年前的“老总”,我依然为公司需要裁人感到内疚。经营企业有时候确实需要去做一些非常艰难的决定。  ———步步高创始人段永平  “段总人非常好,不遮不掩,客观地直面问题,不像其他人还请公关公司做一些事。  ———被解约学生(微博名“雙唲”)  “作

2012-04-25 08:48:14 5971

原创 设计模式(1)

虽然小弟是夸专业学习的计算机,但对于第一次听说设计模式也是倍感羞愧。于是马上搜索了一些资料。原来设计模式真是在架构设计方面处于十分重要的地位。在网上搜索到一份笔记《设计模式精解-GOF23种设计模式解析》感觉不错,尤其是对初学者,我觉得设计模式可以先对其有个大概的感念,当在实际的工作中需要设计架构时,在详细研究每种结构的优缺点也不迟,下面就分享一下自己的感悟。设计模式分为三类模式:创建型模式,

2012-03-09 16:40:25 671

原创 朋友,你是图中的哪个

2012-02-16 21:22:27 627

原创 苹果黄牛事件真相

名为“蛊惑奇葩”的网友作为果粉在得出所谓的苹果黄牛事件真相后,写下了下面的文字,可是这真的是事情的全部真相吗?您又是如何看待这个问题的呢? 尽管之前已经猜到一些,但是当证实的时候还是震惊了我。 我想大多数人也已经发现了一些蛛丝马迹,比如为什么黄牛会有苹果的发货箱,比如为什么保安对黄牛态度的暧昧,比如为什么现在的媒体是偏向黄牛。可是,你们可曾想到,黄牛的后台真正大老板就是苹果自己。

2012-02-09 18:50:24 2405

翻译 Windows 8一推出就会死亡?

ZDNET作者尼克尔斯(Steven J. Vaughan-Nichols )昨天发表评论文章,称Windows 8一推出就会死亡。评论文章如下:我有一些顽固的Windows朋友,他们对于今年晚期推出的Windows 8十分激动。还有一些人则担心,Windows 8会重复Vista灾难。我自己呢?我也认为Windows 8会像Vista一样惨败。   我认为到2016年,大多的PC用户仍会使用

2012-02-09 18:49:47 1717

原创 STL温习

STL是提供了一组表示容器、迭代器、函数对象和算法的模板。容器类似数组,可以存储若干个值。迭代器能够用来遍历容器的对象,与能够遍历数组的指针类似,是广义指针;函数对象时类似于函数的对象,可以是类对象或函数指针,算法是完成特定任务的处方。   Vector对应容器,创建vector的方法如下:#include vectorusing namespacestd;vectorrating

2012-02-07 19:43:53 714

原创 最容易被老板炒掉的十类人

1、薪水太高,贡献平平:薪水随着年资和公司成长愈来愈高,但无法提供其它附加价值和同业比,薪水明显偏高,就必须很小心。假如又没有独特的附加价值,很容易被更年轻、要便宜的人才取代。老板通常是能少给一分钱决不会多给一分钱。找到机会,换血也是节省成本的一种方式。2、居功自傲,目无老板:对公司有些贡献就居功自傲,老提过分要求,索要过度资源,甚至不把老板放在眼里。其实这个世界缺少了任何人都照转,公司其

2012-01-17 08:30:03 2456 8

原创 C与C++的名称修饰符

一个完整的函数声明包括返回值类型,调用协议名称,函数名称,参数信息等若干部分,为了把函数的所有原型信息记录在单一的字符串中以便于标识和组织函数,VC编译器使用了一种称为名称修饰(Name Decoration)的技术,其宗旨就是将函数的本来名称,调用协议,返回值信息按照一定的规则编排成一个新的名字,称为修饰名称(Decorated Name)。下面看一个函数TestFunction的原型和它的修饰

2011-12-30 08:45:39 2857 3

转载 据说研读完这21个故事的人都成了富翁

故事1.甲去买烟,烟29元,但他没火柴,跟店员说:“顺便送一盒火柴吧。”店员没给。  乙去买烟,烟29元,他也没火柴,跟店员说:“便宜一毛吧。”最后,他用这一毛买一盒火柴。  这是最简单的心理边际效应。第一种:店主认为自己在一个商品上赚钱了,另外一个没赚钱。赚钱感觉指数为1。第二种:店主认为两个商品都赚钱了,赚钱指数为2。当然心理倾向第二种了。同样,这种心理还表现在买一送一的花招上

2011-12-29 08:34:49 2830

翻译 2011年离世的IT大师们

美国IT网站eWeek撰文,纪念了2011年去世的IT大师们,其中,苹果联合创始人史蒂夫·乔布斯位居首位。  以下为文章全文:  除了苹果联合创始人史蒂夫·乔布斯和C语言之父丹尼斯·里奇(Dennis Ritchie)之外,2011年还有许多科技行业的梦想家和技术先驱先后辞世。计算机行业从1950年代开始发展,期间曾有众多卓越的人才为现代化计算、智能电子和互联网的发展奠定了基础。2

2011-12-27 20:52:27 1530 1

原创 windows下异常处理

异常的分发和处理时在线程范围内进行的,异常处理器的注册也是相对线程而言的。Windows系统中的每个用户态线程都拥有一个线程环境块(Thread Environment Block),TEB结构的具体定义。TEB结构的起始处总有一个被称为线程信息块(Thread information Block)的结构,简称TIB。TIB的第一字段ExceptionList记录的就是用来登记结构化异常处理链表的

2011-12-26 22:17:29 867 1

原创 Rootkits技术_直接内核操作(1)

直接内核对象操作(DirectKernel Object Manipulation, DKOM),通过直接内核对象操作可以在不安装钩子的情况下隐藏进程和驱动程序。在更改内核对象之前需要明确以下问题:1.      需要明确所要修改的对象是怎样的,包括结构的成员是什么2.      需要深入理解如何使用对象3.      要考虑不同操作系统的版本以及同一版本不同服务补丁之间的差异

2011-12-25 20:19:32 1400

原创 永远都不要做的事

1、跟知己上床 2、和情人结婚 3、把同事当成朋友4、到朋友公司打工 5、在上司面前知无不言6、轻信上司的许诺 7、喜怒哀乐都挂在脸上 8、在人堆里大声讲手机 9、习惯于给自己找借口 10、总觉得生活没意义11、。。。

2011-12-19 22:43:38 1151 3

原创 谁能告诉这是怎么回事?

同样是一样大的三角形,为什么摆法不同,会空一块!

2011-12-16 19:23:54 644 2

翻译 2011年科技界15大败笔

美国知名科技网站PCWorld近日对2011年科技界15大败笔进行一番盘点,其中索尼PlayStation网络被黑毫无悬念的排名榜首。  1. 索尼PlayStation网络被黑     今年4月,索尼PlayStation网络遭遇黑客入侵,索尼公司被迫关闭游戏服务长达一个月。除此之外,黑客还盗走了玩家资料等隐私信息,而索尼方面迟迟没有做出解释也令众多用户感到十分不满。

2011-12-16 08:14:26 1357 1

原创 堆(2)

Malloc calloc ,是CRT(C运行时库)的函数,运行时库初始化阶段会创建CRT堆,CRT堆是建立在Win32堆之上的,所以以上内存分配函数最终也是调用HeapAlloc函数来分配内存的。New操作符是通过中间函数间接调用HeapAlloc来分配内存。中间函数可以降低可以降低编译器与操作系统间的耦合度,还可以借助这些中间函数加入内存检查功能来辅助调试。下面介绍 HeapFree函

2011-12-15 08:28:00 1291

原创 PE文件地址与内存地址

1.      VC中可以通过#pragmadata_seg()可以将代码中的任意部分编译到PE的任意节中,节名也可以自己定义。如果文件经过了加壳处理,那么PE的节的信息就会变的非常“古怪”。2.      PE文件地址与VA(virtualAddress)之间的转换。文件偏移地址(file offset)文件相对于文件开头的偏移装载基址(image base)PE装入内存时的基地址,

2011-12-14 21:15:24 3069

原创

堆(heap)是组织内存的一种重要方式,是程序在运行期动态申请空间的主要途径。与栈空间是由编译器产生的代码自动分配和释放不同,栈上的空间需要程序员自己编写代码来申请 (如HeapAlloc)和释放(如HeapFree),而且分配和释放操作应严格匹配,忘记释放或多次释放是不正确的。       与栈上的缓冲区溢出类似,如果想堆上的缓冲区写入超过其大小的内容,也会因为溢出而破坏堆上的其他内容,可能

2011-12-07 09:25:08 1153 1

转载 从一个程序员笑话看软件开发管理

有一个笑话是这样的:1. 程序员写出自认为没有Bug的代码。2. 软件测试,发现了20个Bug。3. 程序员修改了10个Bug,并告诉测试组另外10个不是Bug。4. 测试组发现其中5个改动根本无法工作,同时又发现了15个新Bug。5. 重复3次步骤3和步骤4。6. 鉴于市场方面的压力,为了配合当初制定的过分乐观的发布时间表,产品终于上市了。7. 用户发现了137个新B

2011-12-05 08:28:09 957

原创 rootkit技术之IoCallDriver介绍

IoCallDriver是一个非常重要的内核例程,利用它可以过滤所有的系统请求,在IoCallDriver中调用IofCallDriver例程,几乎所有的内核驱动都调用了IofCallDriver。IoCallDriver的原型如下:NTSTATUS   IoCallDriver(    IN PDEVICE_OBJECT  DeviceObject,    IN OUT PIRP

2011-12-03 09:16:09 3213

原创 跳槽,你准备好了吗

做为挨踢界的一员,我工作在祖国北方只有一家公司的城市(我想大家能猜到哪里吧),面对每月微薄的工资,一种想法时常浮现在脑海,跳还是不跳?做为典型的恋家的爷们,毕业后就没打算离开生我养我的城市,想想就这样吧,尽管工资不高,同样的物价水平也不高吗,还基本上能过上小资的生活。但时过境迁,物价的飞涨,现在过上温饱已经不错了。在加上家境贫寒,还要为房子奋斗,理想与现实差得越来越大了。跳槽,记得

2011-12-02 21:08:37 851

转载 xde反汇编引擎源码

这是用c语言写的经典XDE反汇编引擎源代码1.写在前面的话                       eXtended (XDE) disassembler engine                       ----------------------------------                                 version 1.02

2011-12-02 20:20:57 5660

原创 栈的增长和溢出

VC编译器在构建一个x86程序时,为栈设置的默认参数是保留1MB,初始提交4KB,这意味着系统会为这个进程的初始线程创建一个1MB大小的栈,并先提交其中的一小部分(8KB,其中4KB为保护页)供程序使用。提交一小部分的目的是为了节约内存,如果提交的内存空间用完了就会触发栈增长机制来扩大提交区域。系统在提交栈空间时会故意多提交一个页面,称这个页面为栈保护页面(Stack Guard Page)。

2011-11-29 08:54:57 1303

原创 Windows 文件系统(1)

在现代操作系统中,文件系统为存储设备提供了流方式的数据管理,允许应用程序共享卷的存储空间,同时又可以独享不同的数据流。在Windows中,文件系统提供了一个层次状的名字空间,并集成了系统的全局名字空间中;文件对象既是设备对象的已打开实例的抽象,也代表了文件系统中一个已打开的数据流实例。Windows 的文件系统以卷设备对象为存储基础,不同种类的文件系统定义了不同的存储格式。文件系统格式的描述能力也

2011-11-27 20:28:22 1875

原创 读书笔记_Rootkit技术_文件过滤驱动程序(2)

第一部分介绍了基本的钩住磁盘驱动器,下面介绍使用调度例程来完成文件过滤。以下是标准的调度例程:NTSTATUS OurFilterDispatch ( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp){      PIO_STACK_LOCATION currentIrpStack;      …      currentIrpSta

2011-11-26 21:46:30 1008

转载 一个计算机专业毕业生工作5年后的困惑

天涯上一个网友写的帖子,比较长,其中有艰辛有痛苦也有迷茫,转来与大家分享。 本人06年毕业的,理工类三本,大学是地方小大学,大家应该是听都没听过的。当初听说计算机专业好找工作,就选了计算机,大学四年卖过学习资料,自 行车,假证书,但是大部分时间都在宿舍玩游戏,通常是晚上通宵,早上睡觉睡到晚上起来吃晚饭,晚上继续通宵。有个学期我一个同学总共上了7节课,我上了9 节。具体过程不说了,反正等到毕

2011-11-25 08:21:11 3640 1

原创 函数的调用协定

函数的调用协定(Calling Convention)包括了定义如何传递参数,接收计算结果,如何维持程序的上下文状态(context)和清理栈。我们写一个函数的完整模式应该为:BOOL WINAPI IsDebuggerPresent(VOID);其中WINAPI是调用协定的名称,如果没有调用协定,那么编译器会根据语言环境使用默认的调用协定。常用的调用协定包括:C调用协定、标准调用协定

2011-11-23 19:32:51 1099

转载 C语言位运算详解

位运算是指按二进制进行的运算。在系统软件中,常常需要处理二进制位的问题。C语言提供了6个位操作运算符。这些运算符只能用于整型操作数,即只能用于带符号或无符号的char,short,int与long类型。转至http://www2.tsu.edu.cn/www/cjc/online/cyuyan/C语言提供的位运算符列表:运算符 含义 描述& 按位与 如果两个相应的二进制位都为1

2011-11-22 21:50:29 497

原创 读书笔记_Rootkit技术_文件过滤驱动程序(1)

分层驱动程序可应用于文件系统。出于潜行的需求,文件系统对于rootkit有着特殊的吸引力。许多rootkit需要在文件系统中存储文件,并且这些文件必须是隐藏的。可以使用钩子技术来隐藏文件,但这种方法容易被检测出来。另外,如果文件或目录安装在SMB共享系统上,那么钩住系统服务描述表(system service descriptor table,SSDT)并不能隐藏它们。下面来看通过分层驱动的方法来

2011-11-22 21:34:40 1441

原创 VC6的栈平衡检查

栈的有序性依靠每个函数都遵守栈的使用规则,保证函数返回时栈指针(ESP)的值与进入函数时一致,即保持栈平衡。否则的话就会导致栈溢出,可能引起安全问题或程序崩溃。VC6会自动在每个函数的末尾插入指令来调用一个名为_chkesp的函数,_chkesp是C运行库(CRT)中的一个函数,用来检查栈指针的完好性,检查方法是比较ESP和EBP寄存器的值,看其是否相等,如果相等则通过,否则就准备参数调用_C

2011-11-21 17:30:39 1180

原创 读书笔记_局部变量和栈帧.

局部变量(Local Variable)是指作用域和生命周期都局限在所在函数或过程范围内的变量,它是相对于全局变量(Global variable)而言的。编译器在为局部变量分配空间时通常有两种做法:使用寄存器和使用栈。寄存器的访问速度快,但数量和空间有限,所以像字符串或数组不适合分配在寄存器中。编译器通常只会把频繁使用的临时变量分配在寄存器中,比如for循环中的循环变量。当编译器的优化选项打

2011-11-21 15:35:36 2912 2

转载 开发人员技术求精的十个步骤

From http://forum.eet-cn.com这篇文章,是从我的《高效开发人员的五个特征》一文中抽出的一个观点。从我自身的事业和习惯中,我考虑了很多方式怎么样才能有效地学习。 1. 要看书。在成千上万的编程图书中,可能很大一部分根本毫无用处。但是仍然有很多图书对你的(编程)能力有很大的提升。我一直坚持,相比在网络上查找很多有用信息,在同类图书中查找要来得更容易更快捷。阅读技术

2011-11-21 08:22:20 966 3

原创 读书笔记_键盘嗅探器(2)

为处理READ请求而调用的例程是DispatchRead。下面具体分析该函数:NTSTAUS DispatchRead ( IN PDEVICE_OBJECT pDeviceObject, IN PIRPpIrp){   当一个READ请求到达键盘控制器时,就调用该函数。这时IRP中并没有可用的数据。相反我们希望在捕获了击键动作之后查看IRP——当IRP正在沿着设备链向上传输时。关

2011-11-18 21:48:50 1123

OpenCV2.4.2开发文档

OpenCV的开发文档,视频与图片开发过的很好的学习资料,内容详细,供参考

2014-07-07

VC++获取键盘键值

获取键值的简单程序,通过键盘的按键显示输入的键值,VC编写,供参考学习

2014-07-07

金士顿U盘量产工具

金士顿量产工具,可以修复U盘,并可以制作U盘启动工具,里面含有教程,简单易懂,方便快捷

2011-11-27

鼠标模拟器实现鼠标模拟

可以记录鼠标的动作,然后进行回放,很好的开发工具,是学习的好帮手

2010-04-15

学生管理源程序VC可用于毕业设计进行参考

这是本人做数据库课程设计时的仓促之作,自我感觉实际应用价值并不大,但可以给学VC和数据库编程的朋友做个范例。在做之前也参看了不少同类型的管理系统,收获不小,现将这个学生管理系统贴出来,希望能对有需要的朋友有所帮助。系统不足之处肯定不少,还请高手多多指教,欢迎跟本人联系。 本人在系统中添加了直接通过SQL语句对后台的表进行修改的功能,颇有争议,还请有实际开发经验的朋友指教。

2009-11-03

空空如也

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

TA关注的人

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