- 博客(20)
- 资源 (4)
- 收藏
- 关注
转载 打印
<br />一、基于文档/视图的应用程序的打印及打印预览原理<br /><br />VC++基于文档/视图的应用程序中用MFC应用程序向导在步骤4对话框中选中Print and Print Preview选项,可以包含基本打印及打印预览的支持,应用程序文件菜单中会生成两个菜单项分别是打印(标识符ID_FILE_PRINT)和打印预览(标识符:ID_FILE_PRINT_PREVIEW),展开程序源代码,可以发现,是CVIEW类提供标准打印和打印预览菜单命令的消息处理函数:<br /><br />设应用程序视
2010-08-15 10:34:00 394
原创 Portable Executable (二)(转)
五、Section Table(节表) 节表是紧挨着 PE Header 的一结构数组。该数组成员的数目由 File Header (IMAGE_FILE_HEADER) 结构中 NumberOfSections 域的域值来决定。节表成员结构又命名为 IMAGE_SECTION_HEADER(四十字节)。其结构定义:typedef struct _IMAGE_SECTION_HEADER
2008-04-07 14:48:00 471
原创 一些基础
eip------------程序指针``指向当前`运行的代码,在OD中`有显示ebp-----------寄存器``在堆栈``使用esp-----------堆栈指针``jmp-----------无条件跳转指令nop-----------汇编指令``程序遇到该指令`什么也不做``运行下一条指令ES:BX(SI,DI) 提供附加段内单元地址 . AX,CX,BX和CX寄存器多用于运算和暂存
2008-04-07 10:39:00 426
原创 加壳脱壳(转)
加壳脱壳 新手必看 初学者必须掌握原理 (综合定义) 壳是什么?脱壳又是什么?这是很多经常感到迷惑和经常提出的问题,其实这个问题一点也不幼稚。当你想听说脱壳这个名词并试着去了解的时候,说明你已经在各个安全站点很有了一段日子了。下面,我们进入“壳”的世界吧。 一、金蝉脱壳的故事 我先想讲个故事吧。那就是金蝉脱壳。金蝉脱壳属于三十六计中的混战计。金蝉脱壳的本意是:寒蝉在蜕变时,本体脱离皮壳而
2008-03-31 16:30:00 1086
原创 Portable Executable (一)(转)
PE 的意思就是 Portable Executable(可移植的执行体)。PE文件结构的总体层次分布图: --------------|DOS MZ Header ||--------------||DOS Stub ||--------------||PE Header ||--------------||Section Table ||--------------|
2008-03-31 11:48:00 1244
原创 NT环境下进程隐藏的实现(转)
NT环境下进程隐藏的实现 在NT环境下隐藏进程,也就是说在用户不知情的条件下,执行自己的代码的方法有很多种,比如说使用注册表插入DLL,使用Windows挂钩等等。其中比较有代表性的是Jeffrey Richer在《Windows核心编程》中介绍的LoadLibrary方法和罗云彬在《windows环境下32
2008-03-28 16:49:00 340
转载 Win XP中NTLDR在系统引导过程中的作用
Win XP中NTLDR在系统引导过程中的作用 NTLDR一般存放于C盘根目录下,是一个具有隐藏和只读属性的系统文件。它的主要职责是解析Boot.ini文件。如果你对它的理解还不是很清楚,那么下面我们就以Windows XP为例介绍NTLDR在系统引导过程中的作用。 Windows XP在引导过程中将经历预引导、引导和加载内核三个阶段,这与Windows 9X直接读取引导扇区的方式来
2008-03-27 14:59:00 435
原创 利用VC++编程实现程序自动启动(转)
工作中经常遇到一些程序,它们在系统启动的过程中,自动打开并运行,以便实现对系统的监控或者病毒的检测等特定的目的,典型的例子就是常用的一些杀毒软件如:KV300及瑞星杀毒软件等。笔者在此,以自己的编程实践为基础,说明这些程序自动启动的原理和方法,同时对一些典型程序代码进行分析,以便
2008-03-27 09:13:00 431
原创 C/C++简单的文件操作
C读命令行#include#includechar *str = (char*)malloc(size*sizeof(char)); //size事先定义好,此处str必须分配空间,或者用静态数组int d,read;char *p;while(gets(str)!=NULL) //此处NULL作为循环结束条件{ p = str; while(sscanf(p,"%d",&
2008-02-20 10:59:00 750
原创 OnEraseBkgnd
A: WM_ERASEBKGNDReturn ValuesA:true表示已处理背景刷新,false表示需要在OnPaint里处理Q:在OnEraseBkgnd中绘制对话框的背景图片和在OnPaint中绘制对话框的背景图片由什么区别,另外OnEraseBkgnd和CtlColor有什么区别?A: OnEraseBkgnd是在窗口大小发生改变等情况下发生的,它将绘制窗口背景;而OnC
2008-02-17 21:22:00 423
原创 软件工程二:程序员与程序经理
工作在第一线的软件开发人员是程序员和程序经理,他们决定着软件的命运。良好的程序员队伍和出色的管理是软件项目成功的必要条件。管理不是管制,不是去卡住人家的脖子,因为程序员不是一群野鸭子。管理的目的是让大家一起把工作做好,并且让各人获得各自的快乐和满足。当一个组织被出色地领导时,雇员甚至不知道他们已被领导。在项目完成时,他们会自豪地说:“看看我们通过努力取得的成绩吧”。所以管理者不能老惦记着自己
2007-09-18 23:29:00 861 1
原创 软件工程一:软件工程基本观念
软件工程的目标是提高软件的质量与生产率,最终实现软件的工业化生产。质量是软件需求方最关心的问题,用户即使不图物美价廉,也要求个货真价实。生产率是软件供应方最关心的问题,老板和员工都想用更少的时间挣更多的钱。质量与生产率之间有着内在的联系,高生产率必须以质量合格为前提。如果质量不合格,对供需双方都是坏事情。从短期效益看,追求高质量会延长软件开发时间并且增大费用,似乎降低了生产率。
2007-09-17 21:10:00 603
原创 const
常变量变量用const修饰,其值不得被改变。任何改变此变量的代码都会产生编译错误。Const加在数据类型前后均可。例如void main(void){ const int i = 10; //i,j都用作常变量 int const j = 20; i = 15; //错误,常变量不能改变 j = 25;
2007-04-26 18:08:00 401
原创 泛型算法摘要
每个泛型算法的实现都独立于单独的容器类型。因为已经消除了算法的类型依赖性。泛型算法用iterator 抽象来解决对容器的遍历。算法遍历的元素范围由一对iterator 标记:一个first iterator 指问要操作的首元素和一个last iterator 标记要操作的末元素的下一位置,由last 指向的元素不是要操作的元素,它被用作终止遍历的哨兵sentinel ,同时也被用作指示没有
2007-04-09 00:12:00 865
原创 hash函数
对于string,就必须自定义hash函数。struct str_hash{ size_t operator()(const string& str)const {unsigned long __h = 0; for (size_t i = 0 ; i __h = 5*__h + str[i];//这里为什么要*5
2007-04-05 14:21:00 402
原创 字符串函数
bcmp 原型:extern int bcmp(const void *s1, const void *s2, int n); 用法:#include 功能:比较字符串s1和s2的前n个字节是否相等 说明:如果s1=s2或n=0则返回零,否则返回非零值。bcmp不检查NULL。 举例: // bcmp.c #include
2007-02-21 02:13:00 841
原创 STL总结
模板类 pair 的一个成员模板函数template pair(const pair&x):first(x.first),second(x.second) 如果两个变量都不是常量类型,可以使用make_pair(x,y),来产生一个pair的对象。对照上面的构造函数来看,其中的x是赋值给x.first,y是赋值给x.second。x.first是U1类型,x.second是U2
2007-02-16 05:30:00 950
原创 notes
register 说明用于提醒编译程序所说明的变量在程序中使用频率较高。(把变量放在机器的寄存器中,可以使速度更快)register的说明如下:register int x;积存器说明只实用于自动变量以及函数的形式参数如:fun(register unsigned n,register long n){ register int i;}
2007-01-30 12:56:00 518
原创 C++面试的一些总结
1、关于String的一些操作,遇到过几次,但我一次也没有去总结过。写出string 的赋值函数:class String{ // 赋值函数 String & operate=(const String &other); // 相加函数,如果没有friend 修饰则只许有一个右侧参数 friend String operate+( c
2006-11-24 12:49:00 860
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人