vc++
liuchanghe
这个作者很懒,什么都没留下…
展开
-
浅析国内某反外挂系统
该反外挂系统是某游戏公司的,只是好奇如有得罪,请谅解及联系版主删除!pig x因为听别人说有一牛b的反外挂系统,故而好奇分析之,由于没有壳让我十指大动,逐一分析之。看过后,逐步了解其工作原理,现将其工作原理简单阐述下:收到服务器返回的包,要求客户端根据包的内容进行解析和执行,将正确的结果返回服务,以到达验证的目的。因为服务器返回的执行代码,让客户端正确加载dll后执行,所以服务器可以让你客户端执行转载 2009-10-28 15:59:00 · 764 阅读 · 0 评论 -
堆和栈的区别
一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)—由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap)—一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静态区)(static)—全局变量和静态变量的存转载 2006-12-01 13:05:00 · 735 阅读 · 0 评论 -
VC6使用#pragma warning的一点经验
1. 在VC6.0中定义类CXMLError的头文件中起始处有如下#include语句#include #include class CXMLError { …}在使用Level 4编译时,报告C4100,C4511,C4512,C4663,C4245,C4018几种Warning 2. 修改为如下:#pragm转载 2006-11-27 11:32:00 · 819 阅读 · 0 评论 -
c与c++混合编程
//在纯C的系统中使用C++的类出现了编译错误!程序代码:/* begin mymain.c*/#include "thesocket.h"void main(int argc,char **argv[]){return;}/* end mymain.c*//* begin thesocket.h */class thesocket {public: thesocket(); vir转载 2006-11-17 11:44:00 · 829 阅读 · 0 评论 -
关于const的一点用法
const int a = 10 和 int const a = 10有什么区别?这应该没区别 指针的话有区别 引用以下: 对指针来说,可以指定指针本身为const,也可以指定指针所指的数据为const,或二者同时指定为const。 A const int* a; 或int const *a;//*a是const,但指针a可变 B const* int a;或int * const a;/转载 2006-11-10 11:05:00 · 616 阅读 · 0 评论 -
前序遍历二叉树(递归 & 非递归)
二叉树是很有用的一种数据结构,遍历则是其基本操作,这里列出实是保证完整性。几个备用的结构定义和函数: //二叉树节点定义 class TreeNodeElement { public:转载 2006-11-09 10:05:00 · 1929 阅读 · 0 评论 -
我奋斗了18年才和你坐在一起喝咖啡
我奋斗了18年才和你坐在一起喝咖啡 我的白领朋友们,如果我是一个初中没毕业就来沪打工的民工,你会和我坐在“星巴克”一起喝咖啡吗?不会,肯定不会。比较我们的成 长历程,你会发现,为了一些在你看来唾手可得的东西,我却需要付出巨大的努力。 从我出生的一刻起,我的身份就与你有了天壤之别,因为我只能报农村户口,而你是城市户口。如果我长大以后转载 2006-11-07 17:46:00 · 684 阅读 · 0 评论 -
趋势科技的笔试
趋势科技的笔试: 1、#include class A{public: A(){func(0);}; virtual void func(int data){printf("A1 :%d/n",data);} virtual void func(int data) const{printf("A2 :%d/n",data);转载 2006-11-06 15:19:00 · 1593 阅读 · 0 评论 -
函数调用规范
当高级语言函数被编译成机器码时,有一个问题就必须解决:因为CPU没有办法知道一个函数调用需要多少个、什么样的参数。即计算机不知道怎么给这个函数传递参数,传递参数的工作必须由函数调用者和函数本身来协调。为此,计算机提供了一种被称为栈的数据结构来支持参数传递。 函数调用时,调用者依次把参数压栈,然后调用函数,函数被调用以后,在堆栈中取得数据,并进行计算。函数计算结束以后,或者调用者、或者转载 2006-11-02 11:45:00 · 810 阅读 · 0 评论 -
Runtime Library
Runtime Library是个很糟糕的问题,假设你设计了一个库,这个使用的Runtime Library是单线程库(/ML)或是单线程Debug库(/MLd),然后你在MFC项目中使用多线程库(/MD)或多线程Debug库(/MDd)。就会出现大量链接错误:LIBCMT.lib(setlocal.obj) : error LNK2005: _setlocale already defined转载 2006-10-27 16:55:00 · 877 阅读 · 0 评论 -
向其他进程注入代码的三种方法(二)
向其他进程注入代码的三种方法(二)2006-11-20 03:50 写在最后的话 最后,我们总结一些目前还没有提到的东西: 方法 适用的操作系统 可操作的进程进程 I. Windows钩子 Win9x 和WinNT 仅限链接了USER32.DLL的进转载 2006-12-01 19:56:00 · 840 阅读 · 0 评论 -
ASSERT与VERIFY宏的区别
http://blog.vckbase.com/smileonce/articles/1184.htmlhttp://www.epubcn.com/edoctips/contents/computer/debug_release_diff.xml今天公司有同事问我ASSERT与VERIFY宏有什么区别,虽然平时常用这两个宏对一些变量在Debug模式下作判断,但一时还真答不上来二者之间的转载 2006-12-01 19:11:00 · 3966 阅读 · 1 评论 -
在非MFC程序中使用调试宏 ASSERT(),VERIFY()和 TRACE()
在非MFC程序中使用调试宏 ASSERT(),VERIFY()和 TRACE()转载 2006-12-01 19:56:00 · 1282 阅读 · 0 评论 -
一般游戏的反外挂保护方案
【文章标题】: 一般游戏的反外挂保护方案【文章作者】: pathletboy所谓知己知彼方能百战不殆,要想减少或避免外挂对游戏的侵害,必须从根本上知晓外挂的原理,及其常用的技术手段,从而在技术手段上对其进行封堵。一、外挂的分类 外挂一般的分为2类,脱机式 和 内挂式。脱机式外挂的定义:完全脱离官方发布的客户端程序,可以与游戏服务器自由的进行通讯的外挂程序,这类外挂的实现是2类外挂里最困难的,主转载 2009-10-28 15:59:00 · 1250 阅读 · 0 评论 -
MASM反汇编
由于汇编语言是与机器语言机器码一一对应的,所以程序的代码非常简洁,编译、链接程序不会在其中加入任何其它代码,所以,用Win32DASM等把汇编工具反汇编汇编语言写的程序,其列出的汇编代码几乎与编写的顺序、过程、代码一模一样,这也是汇编语言简洁的证据。 但是这种过于简洁的代码却给了破解者提供了方便,破解者只需要有一定的Windows SDK编程与汇编的经验,破解就非常简单,根本不需要用SoftIC转载 2009-10-27 10:28:00 · 1169 阅读 · 0 评论 -
Startup Code
In a nutshell, startup code is a technique that how to call a function before main(). You can find this technique in page204-205 of>. A better explaination is this:define a variable in a global sc转载 2009-10-27 09:56:00 · 607 阅读 · 0 评论 -
浅谈SOAP (2)
浅谈SOAP (2)SOAP不象DCOM一样试图定义分布式系统的所有元素,SOAP没有提供分布式类库,类型安全检查,版本控制等等,SOAP比它处于一个更低的层次,有点类似于IIOP在CORBA的作用,DCOM却提供了一些额外的协议功能,是IIOP 或者SOAP所不具备的。然而,许多. DCOM的额外功能只有在服务器――服务器间通信时才会用到,对于客户端――服务器之间的通信则是多余的。 SO转载 2007-05-11 14:10:00 · 648 阅读 · 0 评论 -
DllMain重复定义的错误
今天建立winsole dll工程,从mfc工程中拷贝过来文件,遇到如下问题:Linking...nafxcwd.lib(dllmodul.obj) : error LNK2005: _DllMain@12 already defined in LIBCMTD.lib(dllmain.obj)nafxcwd.lib(afxmem.obj) : error LNK2005: "void * __原创 2007-01-16 14:25:00 · 1749 阅读 · 0 评论 -
ATL布幔之下的秘密(2)
ATL布幔之下的秘密(2) 作者:Zeeshan Amjad译者:李马 (home.nuc.edu.cn/~titilima ) 原文出处: http://www.codeproject.com/atl/atl_underthehood_2.asp 介绍转载 2007-01-05 13:20:00 · 639 阅读 · 0 评论 -
《Windows程序设计》(第五版)勘误表
第61页倒数第二行,第一个DestroyWindow应改为DefWindowProc第76页图中的tmExternalLeading应改为tmInternalLeading第78页第一个文字行中的nLength应改为iLength第89页图中第二个“单击此处上滚一页或一整屏内容”中的“上”应改为“下”第115页倒数第二段最后一句话前面的“屏幕”和后面的“打印机”不相符第122页第五段第二行“每英寸转载 2006-12-19 15:02:00 · 958 阅读 · 0 评论 -
条款18:避免使用vector
条款18:避免使用vector做为一个STL容器,vector确实只有两个问题。第一,它不是一个STL容器。第二,它并不容纳bool。除此以外,就没有什么要反对的了。一个东西不能成为STL容器只因为会有人会说它是。一个东西要成为STL容器就必须满足所有在C++标准23.1节中列出的容器必要条件。在这些要求中有这样一条:如果c是一个T类型对象的容器,且c支持operator[],那么以下代码转载 2006-12-04 10:48:00 · 1178 阅读 · 0 评论 -
继承一个没有虚析构函数的类是危险的
继承一个没有虚析构函数的类是危险的[整理]一个没有虚析构函数的类意味着不能做为一个基类。如std::string, std::complex, 和 std::vector 都是这样的。当你公有继承创建一个从基类继承的派生类时,指向新类对象中的指针和引用实际上都指向了起源的对象。因为析构函数不是虚函数,所以当你delete 一个这样的类时,C++就不会调用析构函数链。举个例子说明下吧:转载 2006-12-04 10:34:00 · 848 阅读 · 1 评论 -
memmove 的实现
memmove 的实现2006-10-13 10:53 baidu的笔试题目 用C语言实现一个公用库函数void * memmove(void *dest,const void *src,size_t n)。该函数的功能是拷贝src所指的内存内容前n个转载 2006-11-02 13:52:00 · 10154 阅读 · 7 评论 -
深入浅出Win32多线程程序设计之线程通信
简介 线程之间通信的两个基本问题是互斥和同步。 线程同步是指线程之间所具有的一种制约关系,一个线程的执行依赖另一个线程的消息,当它没有得到另一个线程的消息时应等待,直到消息到达时才被唤醒。 线程互斥是指对于共享的操作系统资源(指的是广义的"资源",而不是Windows的.res文件,譬如全局变量就是一种共享资源),在各线程访问时的排它性。当有若干个线程都要使用某一共享资源时,任何时刻最多只允转载 2006-09-13 10:19:00 · 736 阅读 · 0 评论 -
sizeof用法与编译器对齐的问题
解析C语言中的sizeof 一、sizeof的概念 sizeof是C语言的一种单目操作符,如C语言的其他操作符++、--等。它并不是函数。sizeof操作符以字节形式给出了其操作数的存储大小。操作数可以是一个表达式或括在括号内的类型名。操作数的存储大小由操作数的类型决定。 二、sizeof的使用方法 1、用于数据类型 sizeof使用形式:sizeof(type)转载 2006-09-12 15:28:00 · 866 阅读 · 0 评论 -
一篇关于CString类型转换的文章
CString 因为一个MFC CString类的对象包含TCHAR类型的字符,所以确切的字符类型取决于你所定义的预处理符号。大体来说,CString 很像STL string,这意味着你必须把它当成不透明的对象,只能使用CString提供的方法来修改CString对象。CString有一个string所不具备的优点:CString具有接收MBCS和Unicode两种字符串的构造函数,它还有一个转载 2006-09-12 17:25:00 · 634 阅读 · 0 评论 -
CString/string/char *比较详解
(一) 概述string和CString均是字符串模板类,string为标准模板类(STL)定义的字符串类,已经纳入C++标准之中;CString(typedef CStringT> CString)为Visual C++中最常用的字符串类,继承自CSimpleStringT类,主要应用在MFC和ATL编程中,主要数据类型有char(应用于ANSI),wchar_t(unicode转载 2006-09-12 17:18:00 · 837 阅读 · 0 评论 -
关于串行化的介绍及简单实现(原帖地址:http://www.vckbase.com/document/viewdoc/?id=918)
串行化(Serialization)作者:阿荣 下载例子源代码串行化是微软提供的用于对对象进行文件I/O的一种机制,该机制在框架(Frame)/文档(Document)/视图(View) 模式中得到了很好的应用。很多人对什么是串行化、怎么使对象具有串行化能力和如何使用串行化功能等问题都不甚明了。本文试图对串行化做一个简单的解释。由于本人对串行化功能使用的也不多,不足之处敬请谅解。转载 2006-09-12 15:26:00 · 946 阅读 · 0 评论 -
c++语言与c语言的一点区别(vc6)
1。在c++中,如果用malloc分配内存,要强制转换一下,其实就是void类型向其他类型需要强制转换。2。在c++中,int类型的变量不能向enum类型的变量 直接赋值,也需要强制转换一下。3。在类中,变量不能定义成static int这样的类型,不然会报错,这个具体原因还不清楚,我是在类中定义的static 型变量,然后在构造函数中初始化,就会出现错误,还望高手指点。以上的环境是v原创 2006-09-12 09:35:00 · 777 阅读 · 0 评论 -
关于Debug和Release之本质区别
本文主要包含如下内容:1. Debug 和 Release 编译方式的本质区别2. 哪些情况下 Release 版会出错2. 怎样“调试” Release 版的程序-------------------------------------- 关于Debug和Release之本质区别的讨论一、Debug 和 Release 编译方式的本质区别 Debug 通常转载 2006-09-12 15:27:00 · 791 阅读 · 0 评论 -
VC++动态链接库(DLL)编程深入浅出(二)
VC++动态链接库(DLL)编程深入浅出(二)关键词: DLL VC 4.非MFC DLL4.1一个简单的DLL 第2节给出了以静态链接库方式提供add函数接口的方法,接下来我们来看看怎样用动态链接库实现一个同样功能的add函数。 如图6,在VC++中new一个Win32 Dynamic-Link原创 2006-09-06 12:59:00 · 1072 阅读 · 0 评论 -
c语言函数中引入dll的全局变量指针
c语言函数中引入dll的全局变量指针在dll工程中,用def导出如下的全局变量指针:extern int *a;在c语言的函数中,用如下方法导入变量a,开头:#pragma comment(lib, "../debug/xiaoliu.lib");int **b = (int **)a;或int * b = a;会出现如下错误unresolved synta原创 2006-09-07 17:52:00 · 1122 阅读 · 0 评论 -
解决头文件相互包含问题的方法----超前引用- -
解决头文件相互包含问题的方法----超前引用- - 所谓超前引用是指一个类型在定义之前就被用来定义变量和声明函数。 一般情况下,C/C++要求所有的类型必须在使用前被定义,但是在一些特殊情况下,这种要求无法满足,例如,在类CMyView中保留了一个非模式对话框对象指针,该对象用于显示/修改一转载 2006-09-13 14:07:00 · 1386 阅读 · 0 评论 -
关于VC++中,两种自定义消息的发送与接收的方法实现进行说明
说明:以下用一个自创的对话框类(MyMessageDlg)向视图类(MessageTestView)发送自定义消息为例,说明这两种不同方法的自定义消息的 总结:消息传递的方法一:使用ON_MESSAGE使用ON_ME转载 2006-09-13 16:11:00 · 884 阅读 · 0 评论 -
对352*288的RGB进行180度旋转
for(int i=0,int j=352*288*3;i=0;i+=3,j-=3){temp[i]=rgb[j-3];temp[i+1]=rgb[j-2];temp[i+2]=rgb[j-1];}此算法可实现windows下的图像的旋转转载 2006-09-13 16:22:00 · 819 阅读 · 0 评论 -
MIME 类型
经常有地方提到根据文件的 MIME 类型来打开文件等, 这里的 MIME 到底指的什么呢?MIME 是 Multipurpose Internet Mail Extensions 的缩写. 原始的定义在 http://www.hunnysoft.com/mime/ 可以查看到: MIME means Multipurpose Internet Mail Extensions, and r转载 2006-11-02 10:02:00 · 578 阅读 · 0 评论 -
用VC编写基于Windows的精确定时程序
在工业生产控制系统中,有许多需要定时完成的操作,如定时显示当前时间,定时刷新屏幕上的进度条,上位 机定时向下位机发送命令和传送数据等。特别是在对控制性能要求较高的实时控制系统和数据采集系统中,就更需要精确定时操作。 众所周知,Windows 是基于消息机制的系统,任何事件的执行都是通过发送和接收消息来完成的。 这样就带来了一些问题,如一旦计算机的CPU被某个进程占用,或系统资源紧张时,发送到消息队转载 2006-10-31 14:51:00 · 635 阅读 · 0 评论 -
使用浮点数和小数中的技巧和陷阱
许多程序员在其整个开发生涯中都不曾使用定点或浮点数,可能的例外是,偶尔在计时测试或基准测试程序中会用到。Java 语言和类库支持两类非整数类型 — IEEE 754 浮点(float 和 double,包装类(wrapper class)为 Float 和 Double),以及任意精度的小数(java.math.BigDecimal)。在本月的 Java 理论和实践中,Brian Goetz 探讨转载 2006-10-26 18:10:00 · 609 阅读 · 0 评论 -
memcpy和memmove函数的实现
memcpy和memmove函数的实现 memcpy代码:;***;memcpy.asm - contains memcpy and memmove routines;; Copyright (c) 1986-1997, Microsoft Corporation. All right reserved.;;Purpose:; memcpy() co转载 2006-11-02 14:00:00 · 1798 阅读 · 0 评论 -
《Visual C++技术内幕》读书笔记
第一章 Microsoft Window和Visual C++1. Windows操作系统运行程序时,它首先调用程序中的WinMain函数,该函数用来完成某些特殊的任务,其中最重要的任务就是创建该应用程序的主窗口。基于MS-DOS的程序和Windows的程序之间的一个最根本的差别,就在于前者是通过调用操作系统的功能来获得用户输入,而后者则是通过操作系统发送的消息来处理用户输入。转载 2006-11-02 11:48:00 · 1097 阅读 · 1 评论