- 博客(52)
- 资源 (50)
- 收藏
- 关注
原创 kgdb内核调试freebsd8.3
编译内核并用KGDB调试1. 配置vmware调试机与目标机的串口[虚拟机上添加串口]"power off"关闭虚拟机右击虚拟机-->选择"settings..."-->hardware-->Add...-->Serial Port-->output to named pipe-->两虚拟机都使用名称"\\.\pipe\com_1",对调试机使用"This en
2012-11-22 17:02:34
1627
转载 单vmware虚拟机中的FreeBSD调试内核
STEP1 编译不含sio的kernel(注释掉device.hints和device sio), 并以附件中的sio.c编译sio.ko2 备份当前系统的kernel和sio.ko,并更新kernel,并重启3 加载虚拟串口驱动#kldload /path/to/sio.ko4 测试串口#ll /dev/cuad* (可以看到2个串口,如cuad2,cuad3)
2012-11-20 21:49:30
1091
原创 服务器系统 选择Windows和Linux的理由
<br /> 你觉得哪个服务器操作系统更好,是微软的Windows还是开源的Linux?关于这个问题曾经引起无数的争论,但一位长时间使用过Windows和Linux的IT顾问讲,要说哪一个服务器操作系统最适合工作需要很难回答,因为在选择服务器操作系统时,我们需要结合成本,性能,安全和应用程序综合考虑。在讨论之前我们先做一下回顾,就在昨天51CTO为大家报道了TechEd 2010大会精要微软服务器路线图的五大亮点,可见微软企图继续称霸服务器行业。但是他的死对头Linux一直在为市场份额努力着。要想了解一个
2010-08-12 09:01:00
1825
原创 端口复用
<br />因为在winsock的实现中,对于服务器的绑定是可以多重绑定的,在确定多重绑定使用谁的时候,根据一条原则是谁的指定最明确则将包递交给谁,而且没有权限之分,也就是说低级权限的用户是可以重绑定在高级权限的用户使用端口。例如绑定某个服务的端口上。<br />这意味着什么呢?意味着可以进行如下的攻击:<br />1. 一个木马绑定到一个已经合法存在的端口上进行端口的隐藏,他通过自己特定的包格式判断是不是自己的包。如果是自己的数据包则自己进行处理,如果不是通过127.0.0.1的地址交给真正的服务器应用进
2010-08-09 13:16:00
1745
转载 特权级在保护模式下的应用
<br />在保护模式下提供4级特权级PL(Privilege Level),呈现环形保护(ring-protection)结构。最内的环具有PL=0的最高特权级,依内向外逐层PL值增加,特权级降低。最外的环PL=3,特权级最低。<br />特权级有以下几种形式表述:DPL(Descriptor Privilege Level):描述符的特权级,CPL(Current Privilege Level):当前任务的特权级,RPL(Requestor Privilege Level):请求特权级(选择符的特权级
2010-08-02 14:52:00
567
转载 特权级在保护模式下的应用
<br />在保护模式下提供4级特权级PL(Privilege Level),呈现环形保护(ring-protection)结构。最内的环具有PL=0的最高特权级,依内向外逐层PL值增加,特权级降低。最外的环PL=3,特权级最低。<br />特权级有以下几种形式表述:DPL(Descriptor Privilege Level):描述符的特权级,CPL(Current Privilege Level):当前任务的特权级,RPL(Requestor Privilege Level):请求特权级(选择符的特权级
2010-08-02 14:51:00
1230
1
转载 特权级在保护模式下的应用
<br />在保护模式下提供4级特权级PL(Privilege Level),呈现环形保护(ring-protection)结构。最内的环具有PL=0的最高特权级,依内向外逐层PL值增加,特权级降低。最外的环PL=3,特权级最低。<br />特权级有以下几种形式表述:DPL(Descriptor Privilege Level):描述符的特权级,CPL(Current Privilege Level):当前任务的特权级,RPL(Requestor Privilege Level):请求特权级(选择符的特权级
2010-08-02 14:50:00
1598
转载 重叠I/O的概念及使用
一. 重叠I/O的概念及使用 -- 重叠可以理解为并行<br />当调用ReadFile和WriteFile时,如果最后一个参数lpOverlapped设置为NULL,那么线程就阻塞在这里,直到读写完指定的数据后,它们才返回。这样在读写大文件的时候,很多时间都浪费在等待ReadFile和WriteFile的返回上面。如果ReadFile和WriteFile是往管道里读写数据,那么有可能阻塞得更久,导致程序性能下降。<br />为了解决这个问题,windows引进了重叠I/O的概念,它能够同时以多个线
2010-07-29 09:17:00
755
转载 关于windows服务的编程方法
windows服务有两种,一种是驱动服务程序,另外一种是win32服务程序,我们这里只谈win32服务程序,查看win32服务程序,可以这样:开始->运行->services.msc可以打开windows自带的服务程序控制程序。这个大家都应该很熟悉了吧。下面来讲讲利用vc编程来对win32服务程序进行管理,包括创建、删除已经对win32服务程序的运行状态进行管理。在进入编程之前先要理解几样东西:第一:服务控制管理器 service control manager(SCM),SCM在系统启动的时候就会启动,其
2010-07-21 16:50:00
932
转载 MFC的架构方法
一、WinMain()函数在哪儿<br />因为看不到WinMain()函数,许多初学者不知道程序究竟从哪儿开始,编程从哪儿下手,编写的代码何时运行等等,另外,还有很多看不懂的语句,最大的困难恐怕还是MFC的编程思想不太理解。各位既然选择小雅的教程来学习MFC,小雅就有责任将每一个你不明白的地方剖析清楚,因为小雅自己也曾为此而烦恼了几年。不过,饭还得一口一口地吃,最好的办法是先照葫芦画瓢,从容易的入手,再一步一步地深入。 <br />MFC把千篇一律的WinMain()函数写在①crtexec.c中,在编译
2010-07-21 09:51:00
1631
转载 C++类和接口的设计原则探讨
<br /> 我这篇文章的主旨是介绍一部分类和接口的高质量设计的准则。这些准则不但应该保证设计并且实现的类或者接口本身有高质量代码,而且更重要的是在工业领域应该尽可能的使代码的更新和维护不影响客户的活动,主要也就是保持二进制代码兼容(binary compatibility)和源代码兼容(source compatibility)。我希望这些准则能帮助刚从学校进入工业领域的朋友尽快适应更高标准的编程要求,尽快提升自己的设计能力。 <br /><br /> 文中以C++类的设计为讨论范围。<br /><br
2010-06-30 13:50:00
507
原创 MTD和MDd导致的问题
<br />MTD指的是使用的运行时库为静态库LIBCRTD.LIB,MDD则使用动态库MSVCRTD.DLL运行时库作为链接版本;<br /> <br />静态库LIBCRTD.LIB在引用它的工程里自定义了该静态库需要创建的全局变量;<br />动态库MSVCRTD.DLL已经在DLL模块内部定义了全局变量;<br /> <br />对MALLOC和FREE函数的调用问题:<br /> 工程A(EXE或LIB或DLL)使用MTD, A引用模块B.DLL, B.DLL使用MDD;此时A使用mallo
2010-06-30 12:30:00
4155
1
转载 程序员需要知道的97件事
http://programmer.97things.oreilly.com/wiki/index.php/Contributions_Appearing_in_the_Book Dont Touch that Code!From Programmer 97-thingsJump to: navigation, searchIt has happened to eve
2010-05-11 09:23:00
852
原创 WAV文件创建
typedef struct WAVE{ short wFormatTag; //编码格式,包括WAVE_FORMAT_PCM,WAVEFORMAT_ADPCM等 short nChannels; //声道数,单声道为1,双声道为2 int nSamplesPerSec; //采样频率 int nAvgBytesPerSec; //每秒的数据量 short nBlockAlign; //块对齐
2010-05-09 17:05:00
3017
原创 什么是实模式、保护模式和虚拟8086方式
1:实模式:寻址采用和8086相同的16位段和偏移量,最大寻址空间1MB,最大分段64KB。可以使用32位指令。32位的x86 CPU用做高速的8086。2:保护模式:寻址采用32位段和偏移量,最大寻址空间4GB,最大分段4GB (Pentium Pre及以后为64GB)。在保护模式下CPU可以进入虚拟8086方式,这是在保护模式下的实模式程序运行环境。 第
2010-04-30 10:11:00
569
转载 “进程后2G的空间是在什么时候映射的??? ”。
“进程后2G的空间是在什么时候映射的??? ”。应该是在Windows启动的时候,就创建好了一张所有进程共享的系统的页表,每当进程调用系统API陷入内核模式后,访问高端2GB地址时,会去查找系统的那张共享页表,得到实际物理内存地址。 如果用户程序自己去访问高端2GB地址,因其特权级是Ring3,而高2GB地址需要Ring0特权,因此会报错,访问违例。
2010-04-01 16:57:00
498
转载 关于进程间的访问权限等进程间控制资料收集
http://www.vckbase.com/DUPLICATEHANDLE函数可以实现将同步内核对象被拷贝并且将原内核对象关闭, 从而达到可以自由控制内核对象的目的, 这可以实现使得只能单一启用的进程成为多启用的进程的目的。实现方法:只要用钩子WH_GETMESSAGE挂钩并实现如下代码即可LRESULT HookProc(int code, WPARAM wParam, LPA
2010-01-05 19:27:00
965
转载 Detection of the hidden processes
找到线程链表地址之后我们就可以非常简单地枚举出那些进程了,代码如下:Code:void ProcessListHead(PLIST_ENTRY ListHead){ PLIST_ENTRY Item; if (ListHead) { Item = ListHead->Flink; while (Item != ListHead) { Co
2010-01-05 09:31:00
615
原创 DSHOW 中关于FILTER的连接内部实现过程
应用程序通过调用filter 图表管理器的方法来连接filter,并不是来调用filter或者pin本身的函数。应用程序可以调用IFilterGraph::ConnectDirect or IGraphBuilder::Connect来指定不同的filter直接连接,也可以通过IGraphBuilder::RenderFile间接连接。只有两个filter都在graph里,连接才能成功。应用程序可
2009-12-19 10:07:00
1184
1
原创 注册表
[编辑本段]如何打开注册表 Win98/98SE/Me 运行中输入regedit.exe 无权限限制 Win2000/XP 1.开始>>运行.中输入regedit 2.运行中输入regedit 第一种方法打开的注册表编辑器和Win98下的一样,而且功能相同,而使用第二种方法打开的注册表编辑器则可以方便的设置权限,建议网络管理员使用第2种方法打开注册表编辑
2009-12-04 11:14:00
784
转载 在注册表中注册应用程序的数据文件
注册表是Windows操作系统的信息存储中心,存放着包括计算机硬件配置、已安装软件的设置信息、当前用户的环境设置及某些文件类型与对其进行访问和操作的应用程序之间的联系等重要信息。Windows操作系统早期版本中存放在初始化文件(.ini)中的许多信息现在都存放在注册表中了。 我们开发的软件常常要建立具有独特数据格式的数据文件。作为一个专业化的商品软件,其安装程序有责任将其所用到的特殊格式的数
2009-12-04 10:49:00
723
原创 sysenter系统调用
在执行INT指令时,实际完成了以下几条操作: 1.由于INT指令发生了不同优先级之间的控制转移,所以首先从TSS(任务状态段)中获取高优先级的核心堆栈信息(SS和ESP);2.把低优先级堆栈信息(SS和ESP)保留到高优先级堆栈(即核心栈)中; 3.把EFLAGS,外层CS,EIP推入高优先级堆栈(核心栈)中。 4.通过IDT加载CS,EIP(控制转移至中断处理函数)5.然后就进入了中断0x80
2009-11-20 16:43:00
610
转载 如何建立内核级钩子控制操作系统实现程序隐身
我们知道,应用程序总是离不开系统内核所提供的服务,比如它要使用内存的时候,只要跟操作系统申请就行了,而不用自己操心哪里有空闲的内存空间等问题,实际上,这些问题是由操作系统的内核来代劳的。站在黑客的角度讲,如果能够控制内核,实际上就是控制了内核之上的各种应用程序。本文将向您介绍如何建立内核级钩子来控制操作系统向上提供的各种低级功能。有了内核级钩子,我们不但能够控制、监视其他程序并过滤有关数据,还能
2009-11-19 15:24:00
601
转载 进程基本结构说明
注:下面的某些结构因为很复杂,成员过多,有些没有写全,列在一起的成员变量不一定在源代码中就是连续的。1、_EPROCESS 结构 : Ps.h (/base/ntos/inc/ ) ;242typedef struct _EPROCESS { // 执行体进程块(Executive Process Block)KPROCESS Pcb; //进程控制块,即PCB 块EX_PUSH_LOCK
2009-11-18 08:56:00
1781
原创 映射MAP与映像IMAGE
映射文件一般是指一种通过特殊方式打开的文件,这个文件中的部分或全部会在内存中形成一种映射关系,读取或修改相应内存中的值也就等于操作那个文件。而映象文件一般是指普通文件,只不过这种文件的内容可能是某个磁盘或光盘等内容的一个完整的Copy。 映射文件把文件和内存一快区域对应,效率高 。
2009-11-06 13:48:00
924
原创 PE文件关于虚拟相对地址RVA与基于文件的偏移地址关系
由PE装载器将PE文件加到虚拟内存时使用的地址均是RVA地址, 而在文件中存放的数据的地址是基于文件的偏移地址, 因此存在一个从RVA到偏移地址的转换过程。当我们通过内存映射文件的方式获取文件数据内容时使用的是基于文件的偏移地址,这样才能正确获取我们所要获取的数据。template void DumpImportsSection(PBYTE pImageBase, T * pNTHeade
2009-11-05 11:31:00
2026
原创 函数调用规则的不同对回调函数使用的影响
typedef BOOL (_stdcall *pConvertProgress)(); BOOL _cdecl ConvertProgress(){...} void func(pConvertProgress pProcess){ ...... pProcess(); ......} void main(
2009-10-30 09:10:00
483
原创 关于设备类与设备接口
Device setup classes provide a mechanism for grouping devices that are installed and configured in the same way. A setup class identifies the class installer and class co-installers that are involv
2009-10-28 18:18:00
983
转载 C++实现CD抓轨转WAV
C++实现CD抓轨转WAV作者:黄利龙现在介绍一下C++实现CD抓轨转WAV,CD抓轨的方法有好几种,现在介绍其中一种。我们可以通过API函数CreateFile获得设备句柄,再用API函数DeviceIoControl来实现对设备的访问获取信息。再此还会用到WAVE文件结构WAVEFORMATEX,再把读到的信息写到文件里生成WAVE格式的文件。我们要用到的头文件有: ntddcdr
2009-10-19 11:31:00
844
转载 将代码注入其它进程的三种方法
在互连网络飞速发展的今天,网络的充分利用虽然方便了人们的生产和生活,但也随之带来了严重的网络安全问题。许多黑客可以利用各种操作系统或者应用软件的漏洞进入到一台联入互连网络的主机中,并且利用木马软件实现对该主机的长期控制。一些木马为了实现自身运行的隐蔽,往往会将自身代码注入到其它进程中来运行。有道是“知己知彼,百战不殆”,下面随本文的介绍来认识一下将代码注入其它进程的三种方法。将代码注入其它进程
2009-09-28 12:20:00
3096
转载 全局钩子DLL如何被挂接到其它进程地址空间中并正确映射函数
用DLL控制Windows中进程的方法 2.通过挂钩插入DLL 可以使用挂钩将D L L插入进程的地址空间。为了使挂钩能够像它们在1 6位Wi n d o w s中那样工作,M i c r o s o f t不得不设计了一种方法,使得D L L能够插入另一个进程的地址空间中。 下面让我们来看一个例子。进程A(类似Microsoft Spy++的一个实用程序)安装了一个挂钩
2009-09-26 14:49:00
2222
原创 CreateToolhelp32Snapshot快照表
CreateToolhelp32Snapshot枚举进程 CreateToolhelp32Snapshot枚举进程每一个应用程序实例在运行起来后都会在当前系统下产生一个进程,大多数应用程序均拥有可视界面,用户可以通过标题栏上的关闭按钮关闭程序。但是也有为数不少的在后台运行的程序是没有可视界面的,对于这类应用程序用户只能通过CTRL+ALT+DEL热键呼出"关闭程序"对话框显示出当前系统进程列表,从
2009-09-26 11:23:00
1045
转载 何时调用DllMain
最近在看dll的代码。由于是初学者就找了一些资料来看,这样可以很快地理解dllmain的工作方式。 系统是在什么时候调用DllMain函数的呢?静态链接时,或动态链接时调用LoadLibrary和FreeLibrary都会调用DllMain函数。DllMain的第三个参数fdwReason指明了系统调用Dll的原因,它可能是DLL_PROCESS_ATTACH、DLL_PROCESS_DETACH
2009-09-25 17:22:00
5202
1
转载 DLL_PROCESS_ATTACH通知
(15) DLL_PROCESS_ATTACH通知当DLL被初次映射到进程的地址空间中时,系统将调用该DLL的DllMain函数,给它传递参数fdwReason的值DLL_PROCESS_ATTACH。只有当DLL的文件映像初次被映射时,才会出现这种情况。如果线程在后来为已经映射到进程的地址空间中的DLL调用LoadLibrary(Ex)函数,那么操作系统只是递增DLL的使用计数,它并不再次用DL
2009-09-24 20:35:00
9591
1
转载 PE文件结构与虚拟地址空间
本章提要· PE文件格式概述· PE文件结构· 如何获取PE文件中的OEP· 如何获取PE文件中的资源· 如何修改PE文件使其显示MessageBox的实例2.1 引言通常Windows下的EXE文件都采用PE格式。PE是英文Portable Executable的缩写,它
2009-09-23 10:20:00
2760
转载 鼠标屏幕取词原理 (VC++)
“鼠标屏幕取词”技术是在电子字典中得到广泛地应用的,如四通利方和金山词霸等软件,这个技术看似简单,其实在windows系统中实现却是非常复杂的,总的来说有两种实现方式: 第一种:采用截获对部分gdi的api调用来实现,如textout,textouta等。 第二种:对每个设备上下文(dc)做一分copy,并跟踪所有修改上下文(dc)的操作。 第二种方法更强大,但兼容性不好,而第一种方法使用的截获w
2009-09-23 10:00:00
5290
2
转载 [转载]谈谈进程句柄表
[转载]谈谈进程句柄表信息来源:cvc文章作者:pjfWindows有许多种类的句柄,其中比较有趣的是内核对象(进程、线程、文件、事件、互斥量等)的句柄。此HANDLE值仅仅是句柄表的一个索引值。下面讨论一下进程句柄表相关结构以及一个应用例子:向一个正运行程序的文件Write。 一、Windows98、WindowsNT(NT未验证):句柄表的格式为一个DWORD指明大小,后跟若干项,每
2009-08-24 16:23:00
602
转载 windbg学习笔记 FOR 内核调试(三) --进程句柄表HANDLE_TABLE
windbg学习笔记 FOR 内核调试(三) --进程句柄表HANDLE_TABLE 想当年 初学核编 , 阅读第三章的内核对象的时候跟看天书没什么感觉 死命在想到底内核对象 , 句柄是个什么东西 干嘛用的 于是我们工作室的老大就对我说 这篇看过就过了 学到后面你自然会明白的 我想也是 ,
2009-08-24 16:18:00
1804
Visual+C+++界面编程技术.rar
2009-09-15
ViewDLL 用于观察DLL模块的导出函数和导入模块信息的工具
2009-09-15
vs2005 Build Driver(驱动引导).rar
2009-08-29
USB设备枚举 USB设备枚举 USB设备枚举
2009-08-27
Video capture DSHOW VS VFW
2010-06-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人