自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 收藏
  • 关注

缓冲区溢出报告

1概述1.1编写背景 网络防范技术的日益成熟,使木马、病毒这类恶意代码的植入变得困难。网络黑客开始针对系统和程序自身存在的漏洞,编写相应的攻击程序。其中最常见的就是对缓冲区溢出漏洞的攻击,而在诸多缓冲区溢出中又以堆栈溢出的问题最有代表性。目前,利用缓冲区溢出漏洞进行的攻击已经占到了整个网络攻击次数的一半以上。 对缓冲区溢出漏洞攻击,可以导致程序运行失败、系统崩溃以及重新启动等后果。更为...

2009-05-26 14:27:00 197

字节对齐详解

一、什么是字节对齐,为什么对齐现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某些特定地址开...

2009-05-26 14:20:00 42

Everything You Need To Know To Start Programming 64-Bit Windows Systems

Everything You Need To Know To Start Programming 64-Bit Windows Systemshttp://msdn.microsoft.com/en-us/magazine/cc300794.aspx

2009-05-26 14:09:00 53

VC++ & MFC实现的优秀的开源项目

List of Best Open Souce projects written in VC++/MFC7-Zip (http://sourceforge.net/projects/sevenzip/) : 7-Zip is a file archiver with the high compression ratio. The program supports 7z, ZIP, CA...

2009-05-25 14:53:00 142

在VS 2008下成功编译Chrome

http://blog.csdn.net/celestialwy/archive/2008/12/01/3422970.aspx

2009-05-25 14:52:00 56

XPCOM--跨平台的组件开发技术

XPCOM--跨平台的组件开发技术http://blog.csdn.net/celestialwy/archive/2006/05/02/705326.aspx

2009-05-25 14:49:00 79

C++ 学习 5 levels

当读者有一定c/c++基础推荐的阅读顺序:level 1从<<essential c++>>开始,短小精悍,可以对c++能进一步了解其特性以<<c++ primer>>作字典和课外读物,因为太厚不可能一口气看完level 2然后从<<effective c++>>开始转职,这是圣经,请遵守10诫,要...

2009-05-25 14:28:00 73

OTL资料简编

OTL资料简编1. 序.... 22. 简介.... 22.1. OTL介绍... 22.2. OTL的使用... 33. 常用otl类.... 63.1. otl_connect类... 63.2. otl_stream类... 73.3. otl的数据类型... 83.4. otl的错误处理... 93.5. 使用绑定变量... 93.6...

2009-05-25 14:14:00 60

进程与信号(一)

第11章 进程与信号进程与信号构成了Linux操作环境的基础部分。他们控制了几乎所有由Linux与其他的类Unix计算机系统所执行的活动。理解Linux与Unix如何管理进程将会使得系统程序员,程序编写者,或是系统管理处于一个有利的位置。在这一章,我们将会了解在Linux环境中进程中如何被处理的以及如何确定在指定的时刻计算机正在做什么。我们同时也会了解如何在我们自己的程序中启动与停止其...

2009-05-24 18:02:00 59

C++中 __stdcall,__cdecl, __fastcal区别简介

调用约定:__cdecl __fastcall与__stdcall,三者都是调用约定(Calling convention),它决定以下内容:)函数参数的压栈顺序,)由调用者还是被调用者把参数弹出栈,)以及产生函数修饰名的方法。1、__stdcall调用约定:函数的参数自右向左通过栈传递,被调用的函数在返回前清理传送参数的内存栈,2、_cdecl是C和C++程序的缺省调用方...

2009-05-21 16:38:00 199

交换a,b, 不使用中间变量

第一种方法:a = a + b;b = a - b;a = a - b; printf("a = %d, b = %d/n", a, b);----------------------------------------------------------------------------第二种方法:swap69(a, b, &a, &b); ...

2009-05-21 16:35:00 81

COM逐步教程

介绍对于我来说,理解COM(ComponentObjectModel,组件对象模型)绝不亚于一次长途旅行。我相信,每一个想要理解COM之后基本原理的程序员都必须使用普通的C++编写至少一个简单的COM对象,也就是说,不依靠MFC/ATL所提供的任何模板或宏的支持。在本文中,我将要逐步介绍如何从基本原理出发来创建简单的COM对象。这些组件可用于VC/VB的客户端程序。作为练习,我们将要尝试设计一个C...

2009-05-21 16:10:00 70

矩阵类

此次的矩阵类可以使用双下标,并且带有越界检查能力用例:jks::CMatrix<int> m(3,4);int i,j;for (i=0;i<m.getHeight();i++){for (j=0;j<m.getWidth();j++){m[i][j] = i*10+j;}}cerr<<m;==========================...

2009-05-21 13:27:00 92

ATL布幔之下的秘密(5)

介绍  很多人认为ATL只是用来编写COM组件的,其实你也可以使用ATL中的窗口类来创建基于窗口的应用程序。虽然你可以将基于MFC的程序转换为ATL,但是ATL中对于UI(译注:用户界面)组件的支持太少了。所以,这就要求你需要自己编写很多代码。例如,在ATL中没有文档/视图,所以在你想使用它的时候就需要自己实现了。在本篇中,我们将要探究一些关于窗口类的秘密,以及ATL技术实现的秘密。WTL(Win...

2009-05-21 13:15:00 77

ATL布幔之下的秘密(3)

介绍  如果你是个模板的高手,你就可以将ATL的学习作为一种享受。在这一节中,我将要尝试解释一些ATL使用的模板技术。我不能保证你读完本节后能成为一个模板高手,只能是尽我所能让你在读完本文后能够更轻松地理解ATL的源码。程序35.#include<iostream>usingnamespacestd;template<typenameT>TMaximum(constT&am...

2009-05-21 13:13:00 85

ATL布幔之下的秘密(4)

http://blog.csdn.net/titilima/archive/2004/07/30/56960.aspx

2009-05-21 13:13:00 50

ATL布幔之下的秘密(2)

介绍  在本系列的教程中,我要讨论一些ATL的内部工作方式以及它所使用的技术,这是本系列的第二篇文章。  现在让我们来探究一些虚函数背后更加有趣的资料。为了和上文保持一致,在本文的讨论中我将使用相同的顺序,程序的序号从20开始。  让我们看看下面这个程序:程序20.#include<iostream>usingnamespacestd;classBase{public:virtualv...

2009-05-21 13:12:00 60

ATL布幔之下的秘密(1)

介绍  在本系列的教程中,我要讨论一些ATL的内部工作方式以及它所使用的技术。  在讨论的开始,让我们先看看一个程序的内存分布。首先,编写一个简单的程序,它没有任何的数据成员,你可以看看它的内存结构。程序1.#include <iostream>using namespace std;class Class {};int main() { Class objClass; c...

2009-05-21 13:11:00 58

COM逐步教程

介绍对于我来说,理解COM(ComponentObjectModel,组件对象模型)绝不亚于一次长途旅行。我相信,每一个想要理解COM之后基本原理的程序员都必须使用普通的C++编写至少一个简单的COM对象,也就是说,不依靠MFC/ATL所提供的任何模板或宏的支持。在本文中,我将要逐步介绍如何从基本原理出发来创建简单的COM对象。这些组件可用于VC/VB的客户端程序。作为练习,我们将要尝试设计一个C...

2009-05-21 13:10:00 74

ATL的GUI程序设计(4)

第四章 对话框和控件对于Win32 GUI的程序设计来说,其实大部分的情况下我们都不需要自己进行窗口类的设计,而是可以使用Win32中与用户交互的标准方式——对话框(Dialog Box)。我们可以在VC IDE的资源设计器中设计对话框资源,并在其上放置各种控件资源——的确是非常方便。在本章里,李马将要向诸位介绍如何利用ATL来操作对话框,以及如何操作对话框上的各种控件。题外话先A...

2009-05-21 12:40:00 55

ATL的GUI程序设计(3)

第三章 ATL的窗口类CWindowImpl、CWindow、CWinTraits,ATL窗口类的奥秘尽在此三者之中。在本章里,李马将为你详细解说它们的使用方法。另外,本章的内容也可以算是本书的核心部分——如果你要进行ATL的GUI程序设计的话,就必须将ATL的窗口类设计理念了然于心。窗口的组成把ATL的窗口类撇开不谈先。我在上一章中提到:窗口类并非任何一种OOP语言中的类——它所...

2009-05-21 12:39:00 59

ATL的GUI程序设计(2)

第二章 一个最简单窗口程序的转型我知道,可能会有很多朋友对上一章的“Hello, World!”ATL版不以为然,因为它并不能算是什么ATL程序——毕竟它只不过是有了个CComModule而已。不过不管怎样我还是要说,它几乎仍然拥有了一个ATL GUI程序的所有组成部分:入口、初始化、程序体、卸载……“等等!”也许你会突然打断我,“——还有注册窗口类、消息循环呢?”当然,对于一个完...

2009-05-21 12:38:00 50

ATL的GUI程序设计(1)

ATL的GUI程序设计(前言)http://blog.csdn.net/titilima/archive/2006/01/17/581610.aspx第一章 不能免俗的“Hello, World!”在这一章里,就像所有的入门级教程一样,我也将不能免俗地以一个“Hello, World!”程序开始我的教程。然后,我将逐步深入,向你介绍这个ATL版本程序中所有必要的信息。此外,我还将介...

2009-05-21 12:35:00 48

WTL调用ActiveX

以调用Flash控件为例:1.包含相关文件:#include<atlcom.h>#include<atlhost.h>2.导入ShockwaveFlash类型库:#import"C:/WINDOWS/SYSTEM32/MACROMED/FLASH/Flash.ocx"usingnamespaceShockwaveFlashObjects;3.WinMain中进行初始化:At...

2009-05-21 12:34:00 65

WTL学习笔记(1)

一、ATL的GUI类1.ATL中和窗口相关的类ATL中的CWindow类定义了窗口的接口,它封装了绝大部分以HWND作为第一个参数的API函数,并直接将m_hWnd作为public成员提供。另外,它还重载了operator HWND,这样就可以将CWindow对象直接当作一个窗口句柄使用了。ATL中窗口的实现是由CWindowImpl完成的,其中包括窗口类的注册、窗口的子类化、消息映射以及一个基本...

2009-05-21 12:33:00 69

Winsock程序设计入门(2)

二、简单的TCP客户端介绍本文是《Winsock程序设计入门(1) - 简单的TCP服务器》一文的结局,如果你还没有读过第1部分的话,我还是建议你首先读一下。在本文中,我将示范给你如何编写一个简单的TCP客户端程序。我们要编写一个程序,这个程序将连接到一个HTTP服务器,并获得一个文件。一个简单的TCP客户端程序流程1、使用WSAStartup()初始化WinSock库。2...

2009-05-21 12:32:00 78

Winsock程序设计入门(1)

一、简单的TCP服务器介绍WinSock API是一套供Microsoft Windows操作系统使用的套接字程序库,它最初基于Berkeley套接字,但是其中加入了一些Microsoft的特殊改动。在这篇文章中,我要试着给你介绍如何使用WinSock来进行套接字程序设计,并假设你没有在任何操作系统上进行过网络编程的经验。如果你只有一台单独的机器,那么不用着急,你仍然可以进行WinSo...

2009-05-21 12:31:00 65

用SDK玩转ActiveX

调用ActiveX控件?呃,这实在不是一件容易的事情:用各种封装精良的Framework(MFC、VCL等等)的话,最后成品EXE的体积难免偏大;用SDK虽然可以有效地减小这个体积,但是往往又无从下手——总之,这似乎是一件鱼与熊掌不能兼得的憾事。还好,“不容易”并不代表“不可能”,李马在本文中要介绍给诸位的,就是“玩转”ActiveX的一种方法,这种方法包括了从ActiveX控件调用到Active...

2009-05-21 12:30:00 96

“QQ尾巴病毒”核心技术的实现

2003这一年里,QQ尾巴病毒可以算是风光了一阵子。它利用IE的邮件头漏洞在QQ上疯狂传播。中毒者在给别人发信息时,病毒会自动在信息文本的后边添上一句话,话的内容多种多样,总之就是希望信息的接收者点击这句话中的URL,成为下一个中毒者。下图就是染毒后的QQ发送的消息,其中中毒者只打了“你好”两个字,其它的就全是病毒的杰作了。  下面我将要讨论的,就是QQ尾巴病毒使用的这一技术。由于病毒的源代码无法...

2009-05-21 11:54:00 123

解说Win32的窗口子类化

也许你需要一个特殊的Edit来限制浮点数的输入,但是现有的Edit却并不能完成这项工作——因为它只能够单纯的限制大小写或者纯数字。当你在论坛上求救的时候,某个网友告诉你:“用子类化。”你也许会在看到一线曙光的同时多出了一连串的问题:何为子类化?子类化的原理是什么?如何实现子类化?下面就让我从一个简单的C++程序开始,一步步解开你的疑团吧。  首先,我为你列出以下这个C++程序:#include &...

2009-05-21 11:50:00 51

编程提交表单

char accept[] = "Accept: */*";char frmdata[] = "param1=str1&param2=str2&param3=str3";HINTERNET hSession = InternetOpen("MyAgent", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);HINTERNET hConnec...

2009-05-21 11:45:00 60

单链表的排序

#include <iostream>using namespace std; template <typename T>struct node // 节点结构{ node *next; T data;};template <typename T>class slist // 单链表结构{public: slist() { head.next = N...

2009-05-21 11:42:00 48

注册COM服务器

BOOL RegisterDLL(LPCTSTR lpszDLLPath){ BOOL bRet; HMODULE hDLL = LoadLibrary(lpszDLLPath); if (hDLL == NULL) return FALSE; FARPROC pfn = GetProcAddress(hDLL, "DllRegisterServer"); if (pfn != NULL) {...

2009-05-21 11:35:00 239

一个用来翻转、旋转的矩阵类

template<typenameT>class LMatrix{ int m_x; int m_y; T *m_data;public: // 构造函数,横坐标范围0~(x - 1),纵坐标范围0~(y - 1) LMatrix(int x, int y) : m_x(x), m_y(y), m_data(new T[x * y]) {} // 析构函数 ~LMatrix() { d...

2009-05-21 11:33:00 68

删除一个文件夹

BOOL DelTree(LPCTSTR lpszPath){ SHFILEOPSTRUCT FileOp; FileOp.fFlags = FOF_NOCONFIRMATION; FileOp.hNameMappings = NULL; FileOp.hwnd = NULL; FileOp.lpszProgressTitle = NULL; FileOp.pFrom = lpszPath; ...

2009-05-21 11:29:00 67

DLL的远程注入技术

DLL的远程注入技术是目前Win32病毒广泛使用的一种技术。使用这种技术的病毒体通常位于一个DLL中,在系统启动的时候,一个EXE程序会将这个DLL加载至某些系统进程(如Explorer.exe)中运行。这样一来,普通的进程管理器就很难发现这种病毒了,而且即使发现了也很难清除,因为只要病毒寄生的进程不终止运行,那么这个DLL就不会在内存中卸载,用户也就无法在资源管理器中删除这个DLL文件,真可谓一...

2009-05-21 11:17:00 65

向其他进程注入代码的三种方法

向其他进程注入代码的三种方法 本文章翻译自Robet Kuster的Three Ways to Inject Your Code into Another Process一文,原版地址见下面。本文章版权归原作者所有。 如果转载该译文,请保证文章的完整性,并注明来自www.farproc.com袁晓辉 2005/5/20原版地址:http://www.codeproject.com/thre...

2009-05-20 14:24:00 70

调试(四)

了解更多有关gdb的内容GNU调试器是一个强大的工具,可以提供大量的有关运行程序内部状态的信息。在支持一个名叫硬件断点(hardware breakpoint)的实用程序的系统上,我们可以使用gdb来实时的查看变量的改变。硬件断点是某些CPU的一个特性;如果出现特定的条件,通常是在指定区域的内存访问,这些处理器能够自动停止。相对应的,gdb可以使用watch表达式。这就意味着,出于性能考虑,当一个...

2009-05-11 22:51:00 92

调试(三)

使用gdb调试我们将会使用GNU调试器,gdb,来调试这个程序。这是一个可以免费得到并且可以用于多个Unix平台的功能强大的调试器。他也是Linux系统上的默认调试器。gdb已经被移植到许多其他平台上,并且可以用于调试嵌入式实时系统。启动gdb让我们重新编译我们的程序用于调试并且启动gdb。$ cc -g -o debug3 debug3.c$ gdb debug3GNU gdb 5.2.1Cop...

2009-05-09 09:15:00 84

空空如也

空空如也

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

TA关注的人

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