自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

软件调试的变革

新的理念,新的工具

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

原创 栈的增长和溢出

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

2011-11-29 08:54:57 1310

原创 Windows 文件系统(1)

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

2011-11-27 20:28:22 1891

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

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

2011-11-26 21:46:30 1013

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

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

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

原创 函数的调用协定

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

2011-11-23 19:32:51 1105

转载 C语言位运算详解

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

2011-11-22 21:50:29 506

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

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

2011-11-22 21:34:40 1453

原创 VC6的栈平衡检查

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

2011-11-21 17:30:39 1190

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

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

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

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

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

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

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

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

2011-11-18 21:48:50 1133

转载 Intel 8042键盘控制器详细介绍

本文转自http://shanzy.bokee.com/834368.htmlps/2 键盘硬件概述    对于驱动来说,和键盘相关的最重要的硬件是两个芯片。一个是 intel 8042 芯片,位于主板上,CPU 通过 IO 端口直接和这个芯片通信,获得按键的扫描码或者发送各种键盘命令。另一个是 intel 8048 芯片或者其兼容芯片,位于键盘中,这个芯片主要作用是从键盘的硬件中

2011-11-16 22:29:32 6962

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

利用驱动分层技术,可以将多个驱动程序连接在一起,通过这种方式,开发人员能够修改现有驱动程序的行为,无需重新编写整个驱动程序。几乎所有的硬件设备都存在着驱动程序链。最底层驱动程序处理对总线和硬件设备的直接访问,更高层的驱动程序处理数据格式化,错误代码以及高层请求转化为更细小更有针对性的硬件操作细节。分层机制是rootkit的一个重要概念,因为在数据出入更底层硬件的移动过程中涉及分层的驱动程序,分

2011-11-15 20:56:24 1595

原创 读书笔记_跨特权级调用

通常发起调用的函数和被调用的函数都是位于同一个特权级的代码中的,这种调用叫做同特权级调用,另一种情况是位于不同特权级代码段中的代码互相调用,被称为跨特权级调用。跨特权级调用通常是通过一个所谓的调用门(Call Gate)来完成的。调用门的全称是调用门描述符( Call-Gate Descriptor),其结构与中断描述符非常类似,调用门描述符可以出现在GDT和LDT表中,不可以出现在IDT表中。

2011-11-14 13:13:57 1029

原创 读书笔记_CALL和RET指令

CALL指令是x86CPU中专门用作函数调用的指令,它的作用就是将当前的程序指针(EIP寄存器)值保存到栈中(称为linking information),然后转移到(branch to)目标操作数所指定的函数(被调用过程)继续执行。   根据被调用过程是否位于同一个代码段,CALL调用被分为近调用(Near Call)和远调用(Far Call)两种。在近调用中CPU的操作如下:A.

2011-11-13 19:49:23 5265

翻译 美国工程师挣多少钱(from http://forum.eet-cn.com)

在美国不兴询问别人的工资,所以很难了解工程师们都挣多少钱。2005年看到过一个公开资料,列举了一些个人的工资情况,但不算统计资料。记得列举的资料中,工程师大概从刚毕业4-5W到资深的12-15W。相比之下供电公司和化学公司的工人可以到15W以上,管道工和医生可以到20W。不过管道工都有自己的工具车和一些设备,像是小业主一样,也雇用助手,医生也自己有诊所。卖保险和银行贷款员都可以到20W,一般公司老

2011-11-09 08:17:13 5522 1

原创 读书笔记_栈的创建过程

首先看内核栈的创建过程:PspCreateThread函数是windows内核中用于创建线程的一个重要的内部函数,无论是创建系统线程(PsCreateSystemThread)还是用户线程(NtCreateThread),都离不开这个函数,除了创建重要的ETHREAD结构,PspCreateThread函数的另一个重要的任务是创建内核态栈。对于GUI线程,Windows会为其创建大内核栈,但是

2011-11-08 17:08:25 2156 1

原创 读书笔记_Rootkit技术_深入补丁

之前介绍的都是在函数的入口处进行代码补丁,因为在内存中很容易找到函数,所以这个方法很容易实现。但anti-rootkit也同样容易检测到这种补丁,因为它可以只检查函数起始的20个字节的完整性就能够发现是否被打补丁。若将代码改动置于初始的20个字节之后,那么这些软件就无法检测到。可以通过搜索函数中特定的代码字节来进行打补丁。如果这些代码是唯一的,那么只需要在内存中搜索它们并对其打补丁。如果代码不

2011-11-07 20:54:43 816

原创 读书笔记_栈

栈的概念:从数据结构角度来看,栈是一种存储数据的容器(container),放入数据的操作被称为压入(push),从栈中取出数据的操作称为弹出(pop),采用的是后进先出的规则,即LIFO。而从计算机系统的角度而言,栈是存储局部变量和进行函数调用所必须不可少的连续内存区域。编译器再编译时会将函数调用和局部变量存取编译为合适的栈操作。操作系统在创建线程时,会为每个线程创建栈,包括分配栈所需的内存空间

2011-11-07 14:53:01 851 2

原创 读书笔记_Rootkit技术跳转模板

下面来介绍中断表的钩子,由于每个中断服务例程都位于不同的地址,因此每项的重入地址都是唯一的,这就需要一个跳转模板来调用到rootkit代码中,这种技术就称之为跳转模板(jump template)技术。     所有模板调用相同的rootkit代码,函数总是返回到的它的调用者,因此不必担心rootkit代码中的运行时地址修正。这种技术将唯一的特定代码作用于每个ISR(Interrupt Ser

2011-11-06 11:14:28 771

原创 Rootkit技术基础(5) anti-rootkit

现在RK(rootkit)和ARK(anti-rootkit)的斗争已经进行了很久,在印象中最早出来的ARK工具是冰刃(IceSword),从冰 刃开始出来到现在RK和ARK的斗争一直在继续,目前冰刃还是在流行当中,自己感觉也正是冰刃的出来才带动了当前流行的RK和ARK的斗争呵呵,现在很多 病毒木马已经广泛的带有驱动,使用一些RK的技术和方法使自己更底层些更强大些,当前流行的ARK工具主要包括:隐

2011-11-05 10:18:28 1387 1

原创 Rootkit技术基础(4)

Rootkit自身也是木马后门或恶意程序的一类,只是,它很特殊,为什么呢?因为,你无法找到它。 正如自然界的规则一样,最流行的病毒,对生物的伤害却是最小的,例如一般的感冒,但是 最不流行的病毒,却是最夺命的。Rootkit木马就是信息世界里的 AIDS(爱滋病),一旦感染 ,就难以用一般手段消灭了,因为它和自然界里的同类做的事情一样,破坏了系统自身检测 的完整性——抛开术语的描述也许难以理解,但是

2011-11-05 10:16:51 1757 1

原创 Rookit技术基础(3)

.端口隐藏很多人检查自己中没中木马或后门,都会一些方法来查看自己本机所开的端口来判断是否有木马监听,而有些rootkit就开始想如何隐藏端口了。最 简单的枚举当前所开放的端口信息是调用iphlpapi.dll中的AllocateAndGetTcpTableFromStack和 AllocateAndGetUdpTableFromStack函数,或者AllocateAndGetTcpExTa

2011-11-05 10:14:38 1024

原创 rootkit基础(2)

一、系统调用表 系统调用表又称系统服务表或者服务描述符表,是Windows 内核在进行各种系统操作时所需的一个函数指针表。也就是说,这个表中存放的是提供系统服务的各种函数的地址。当然,该表所指向的都是系统自身的一些函数, 但是,如果我们对它做了手脚后,就可以让它指向我们自己的函数。这正是本文要讲解的重点。读者一定要注意,修改系统调用表及替换内核函数时,会对系统全局产生影响,稍有不慎就会导致

2011-11-05 10:11:11 976 3

原创 Rootkit基础(1)

1. rootkit的主要分类: 应用级->内核级->硬件级 早期的rootkit主要为应用级rootkit,应用级rootkit主要通过替换login、ps、ls、netstat等系统工具,或修 改.rhosts等系统配置文件等实现隐藏及后门;硬件级rootkit主要指bios rootkit,可以在系统加载前获得控制权,通过向磁盘中写入 文件,再由引导程序加载该文件重新获得控制权,也可

2011-11-05 09:15:08 1187

原创 读书笔记_Rootkit技术之detour补丁

下面介绍一下内联函数钩子。这种钩子远比IAT钩子强大,并不存在与Dll绑定时间相关的问题。在实现内联函数钩子时,rootkit实际上是重写了目标函数的代码字节,因此不管应用程序如何或者何时解析函数地址,都能够钩住函数。该方法在内核或用户空间都可以使用,但更常见于用户空间。     通常实现的内联函数钩子时会保存钩子要重写的目标函数的多个起始字节。保存了原始字之后,常常在目标函数的前5个字节中放

2011-11-02 21:08:27 1254 1

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关注的人

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