自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 资源 (2)
  • 收藏
  • 关注

原创 temp

<br />#pragma once#include <iostream>#include <map>using namespace std;class CRootClass{public: virtual void Display() = 0;};typedef CRootClass* (*CREATECLASSOBJECT)();class CClassType{public: CClassType(char* szClassName, CREATE

2011-03-28 19:52:00 376 1

原创 thunk原理

<br /> <br />通常程序执行的都是代码段上的二进制流,堆栈上存储了函数调用过程中用到的变量,EIP很少有机会能指到堆栈上来,但是使用thunk技术可以在堆栈上以数据的形式加入一段可执行代码,并通过函数调用执行。就像这样:<br /> <br />#include <iostream>#include <windows.h>using namespace std;#pragma pack(push, 1)class Thunk{public: unsigned char

2011-01-22 22:42:00 578

原创 modern c++ design01

<br /> <br />基于Policy的Class设计<br /> <br /> <br />软件设计的核心理念是设计原则,设计原则讲的是为了使软件易维护,易扩展同时保持健壮性的一些“公理”。之所以说是公理是因为它是软件行业诞生以来的若干人经验的积累,经过检验符合客观实际,我猜也许最根本的是符合人们的思维习惯和认知规律。<br /> <br />同许多公理一样,软件设计的公理(设计原则)也是内涵简洁,外延无限大的东西。乍看之下很容易盲从,如果没有那么多的设计模式来支撑它,我们对它的认识也许永远只停留在内

2011-01-20 01:07:00 569

原创 modern c++ design系列

<br /><br /><modern c++design>是我学C++以来一直仰视的书,之所以说仰视是因为里面对模板的使用可以用匪夷所思来形容,它同时结合了另一门让我仰视的技术——设计模式,仰视+仰视=崇拜,所以长久以来我一直没有把它读懂的信心。但它就在我手边,心里一直都惦记着它,经过两年多的工作积累,今天已经可以翻一翻它了,虽然还是有很多的绊脚石,但勉强可以继续下去。初读一遍已经能理解所要表达的意思,能体会到它的好处,能明白涉及到的知识点,我想书读到这里离读懂也就不算太远了。<br />对于一个陌生

2011-01-20 00:41:00 723 1

原创 动态创建2

<br />上一篇提到了一种“分散式”型别保存方式,即每个具体产品里面保存了型别信息。类似于MFC的CRuntimeClass。这样做的缺点就是不容易管理,类别分布在各个类中,如果中间某个链接“断裂”,那么有可能导致整个型别网不可用。<br /> <br />在Modern C++ Design中提到了一种使用工厂来管理所有类别的解决方案,类别都保存在一个map里,每个具体的产品类向该工厂注册。创建对象时通过调用CreateObject(int iTypeID)就可以得到相应的类别。同前一种比起来,这种方法

2011-01-10 18:12:00 301

原创 动态创建1

如果把对象保存在文件上,读取的时候就会面临一个问题,如何解析文件中的数据?怎样才能把文件中的数据和具体的型别对应起来?这就是动态创建问题。最直接的想法是给每个类一个编号。假如有三个类,CDuckClass, CCockClass, CMonkeyClass他们都派生自CRootClass,下面是一种可行的方案。void LoadFile(char* pszFileName){ ifstream infile(pszFileName); int iType; infile >> iTyp

2011-01-08 21:33:00 237

原创 查看进程实例个数

查看进程实例个数需要用到两条语句#pragma daga_seg(“Shared”)volatile unsigned int gInstanceCount = 0;#pragma data_seg定义了一个Share段,这个段里只有一个全局变量gInstanceCount#pragma comment (linker, "/Section:Shared,RWS")让Shared称为共享段,也就是说所有该程序的实例都不会因为gInstanceCount而分配一个新的page,也就是说不会因为gInstanc

2010-10-28 00:45:00 666

原创 三种循环反汇编代码比较

for循环for (i = 0; i{    c = c+i;}1.       为循环变量赋值              mov dword ptr [i], 02.       跳转到循环变量比较处 jmp [比较地址]3.       修改循环变量                  mov eax, dword ptr[i]                                          add ,eax ,1                                     

2010-08-13 10:01:00 661

原创 学习计划

辞职期间学习计划 项目书籍方式比重基础知识,windows编程程序设计>核心编程>深入浅出MFC>编程实例>技术内幕>阅读开源代码notepad++,将书中经典实例消化吸收形成自己的代码库。50%操作系统相关知识自己动手写操作系

2010-04-01 16:50:00 382 1

原创 对中断和异常的理解

对中断和异常的理解1.       Dos中从0000h开始到0400h用户保存中断向量表。2.       Dos中断向量表每4个字节作为一个指针,指向中断处理程序。3.       用户应该可以自己扩展中断向量表,否则CIH病毒怎么实现?4.       Windows下用户没有类似于int n的指令执行中断程序,原来的一些中断服务现在是通过dll实现了。

2010-03-01 12:49:00 410 1

原创 80386保护模式下的分页机制

80386从硬件上支持分页机制,分页是由CR0寄存器的PG位控制的, 如果该位为1则表示启用分页机制,否则不启用。如果不启用线性地址就对应于实际的物理地址,如果启用就需要通过页目录、页表进行转换,最后找到物理地址。页目录,页表这两个概念以前一直没搞太明白,今天硬啃了一通,现在就来理顺一下思路:1.       一个线性地址被分为三部分,高10 位(31-22),中间10

2010-02-26 14:11:00 511

windows核心编程英文版

windows核心编程,学习windows编程必看

2010-08-23

重装系统后vc6.0编译debug版本补丁

重装系统后vc6.0不能编译debug版本,你需要这些dlls

2009-02-18

空空如也

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

TA关注的人

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