自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 C++ Internals: 序言

要深入了解一门语言,必须同时了解其内部机理,这样才能合理高效的使用它。本系列文章旨在介绍C++各种特性是如何实现的。VC RTTI C++ Internals: VC RTTI - 基本数据结构 C++ Internals: VC RTTI - typeidC++ Internals: VC RT...

2007-12-16 13:21:00 4075 0

原创 读C++标准系列 - 序言

闲暇之余读读C++的标准也是一件很有意思的事情, 我们可以在C++标准委员会的官方网站(http://www.open-std.org/jtc1/sc22/wg21/)下载C++0X标准的草案。目前最新的版本是2008.6.27发布的n2691.pdfISO/IEC 14882: Programm...

2007-11-01 13:43:00 2094 0

原创 搞挂你的C++编译器

Play  with the compiler是一件很有趣的事情,编译死循环的程序便是其中之一。让我们和编译器一起做游戏吧~1、Preprocessa、Self Include(GCC only)一般的编译器都有include嵌套层数的限制,所以你需要在适当的时候停止嵌套。利用GCC提供的__IN...

2007-10-30 13:03:00 5534 7

原创 藏经阁保护方式研究

藏经阁是比较著名的盗版系列,它对盗版光盘采取了保护措施。如果你将里面的安装程序拷贝到硬盘直接安装的话,会出现如下的提示:你买的不是gamez88的盘,请去退盘显然猫腻在光盘上。如果你用UltraISO打开光盘,可以看到隐藏的9999目录,里面有一个300000000字节的8888.dat文件(注:...

2008-12-03 00:13:00 5727 2

转载 Trip Report: June 2008 ISO C++ Standards Meeting

原文:http://herbsutter.wordpress.com/2008/07/04/trip-report-june-2008-iso-c-standards-meeting/  The ISO C++ committee met in Sophia Antipolis, France o...

2008-07-25 09:08:00 3141 0

原创 DreamSpark

DreamSpark是Microsoft公司向大学在校学生提供免费软件资源的项目,需用使用edu.cn的邮箱进行注册验证。注册之后可以获得一个验证码,这个验证码可以用于获取产品序列号和下载软件。学生可以在非商业性个人教学课程学习和科研中免费使用这些产品。对于非Express版本的软件来说,中国学生...

2008-05-29 19:14:00 4469 0

原创 程序分析实例 - 无双大蛇(Orochi)

下面以对KOEI的无双大蛇的一个bug的研究为例,介绍程序分析的基本方法。无双大蛇是KOEI公司推出的一款动作类游戏,3.20日发布了日文PC版。在游戏过程中发现,进入某些战斗的时候程序会陷入死循环,具体表现是在菜单中选择战斗场景之后,画面变黑,但是一直不出现战前配置的界面。Alt+F4关闭主窗口...

2008-03-26 10:08:00 6277 4

原创 RPGViewer - 游戏常用压缩算法的介绍和识别

deflatehttp://www.zlib.net/这是ZIP默认采用的压缩算法。ZIP格式使用非常广泛,不仅有开源的C实现-zlib,还有众多的商业解决方案。因此在游戏中采用deflate,可以大大降低编程的成本。很多国外游戏的档案都采用这种压缩算法,或者直接使用ZIP文件格式存储资源。目前不...

2008-02-25 11:26:00 11266 15

原创 游戏资源提取软件介绍

注:资源的版权属相应的游戏公司所有,请勿将提取得到的资源用于非法的用途。中国EgoUnpacker    支持提取Studio e.go!公司的游戏。LeafUnpacker    支持提取Leaf公司的游戏。    这两款都是windseven的作品,采用类似于WinZip的界面,仅支持解包。不...

2008-02-24 18:36:00 22566 27

翻译 VC Team Blog - TR1实现问答

原文:Q&A on our TR1 implementation大家好,我是Stephan,Visual C++库函数组的程序员。Visual Studio 2008扩展功能库的beta版已经发布(可以在这里下载,文档在这里),其中包含了TR1的实现,我想在这里回答一些关于TR1的问题 Q...

2008-01-14 16:28:00 5067 4

原创 汉之云的“免CD”,盗版商的胜利?

(注:因为评论中有回复说mycrack和MENTING不是一个人。慎重起见,对文章内容作了修改) 虽然破解汉之云并不是一件很困难的事情,但是这么快就出现盗版还是有些出人意料。操刀此次破解的是“MENTING”(不知是否就是看雪论坛的那位MENTING?),和盗版商同流合污,特意将10M+的解密数...

2008-01-03 11:34:00 6571 6

原创 读C++标准系列 - 5.6~5.15 双目运算符(指针运算)

返回目录5.7 + -对于涉及指针的算术运算,标准中有比较严格的限制条件:参与运算的指针必须指向数组对象中的元素,或者指向数组对象最后一个元素的下一个元素(这是STL中能够使用distance(v.begin(),v.end())计算元素个数的前提条件)。(注:对于指向普通对象的指针,可以将该对象...

2007-12-18 15:11:00 3487 0

原创 解密QQ消息文件格式

QQ的消息实际上是存放在本地的,位于"QQ安装目录/QQ号码/MsgEx.db"内。关于QQ消息文件格式的文章,网上有不少,但是没有一篇是完整并且可重现。结合QQ聊天记录察看器 5.1,我做了一些研究,重现了读取并显示历史消息的完整过程。一个很好的学习QQ相关算法的实例,是它的...

2007-12-14 21:16:00 17790 39

原创 C++ Internals: VC RTTI - dynamic_cast (2)

返回目录下面进入正题,让我们见识一下dynamic_cast到底是如何实现的。首先,在你调用dynamic_cast之前,编译器会帮你进行语法检查。如果指针的静态类型和目标类型相同,那么就什么事情都不做。否则,首先对指针进行调整,使得它指向vftable,并将其和调整之后的指针、调整的偏移量、静态...

2007-12-09 17:12:00 4539 0

原创 GoogleBook页面地址获取工具

Google给每个页面图片的地址都加上了验证码来防止批量下载。通过对网页源代码的分析,可以发现每个页面都包含1~5个相邻页面的图片验证码。同时,每个页面都包含所有其它页面的地址。因此可以很容易的写出一个批量获取图片地址的小工具(工具可以在CSDN下载)首先进入你要分析的book的某一页,将浏览器地...

2007-12-07 22:03:00 3713 6

原创 CSDN Blogger小工具

C#编写,需要.Net framework 2.0的支持(可以在我的网盘的“小工具”目录或者CSDN下载)提供文章备份和代码语法高亮功能1、文章备份首先输入你的用户名、密码,并根据图片输入验证码。这样就可以登陆了登陆之后会自动加载文章列表(里面的序号和PostEdit.aspx?后面的id对应)点...

2007-12-01 17:08:00 3402 0

原创 C++ Internals: VC RTTI - dynamic_cast (1)

返回目录相对而言,dynamic_cast的实现比较复杂,因此我们首先看一下它的简化版本dynamic_castvoid *>。根据标准5.2.7-7,dynamic_castvoid *>会将当前指针转化为指向实际对象(most derived object)的指针。比如说: c...

2007-11-30 13:28:00 3734 0

原创 C++ Internals: VC RTTI - typeid

返回目录在研究过VC的RTTI的基本结构之后,我们先来看看最简单的typeid是怎么实现的。在VC中,当你对多态类的指针ptr使用typeid(*ptr)之后,编译器会做两件事情:首先是将指针进行调整,使它指向当前类的vftable处(注意,类的vftable未必处在类的开始),然后再调用__RT...

2007-11-29 21:54:00 4591 0

原创 C++ Internals: VC RTTI - 基本数据结构

返回目录网上资料比较少,ms还是有研究的价值 ^_^相关资源:Reversing Microsoft Visual C++ Part II: Classes, Methods and RTTIReversing C++C++的RTTI一旦遇上了多重和虚继承,简直就是噩梦 -.-这里介绍一下VC中用...

2007-11-29 19:41:00 4910 1

原创 C++界面库 - Xtreme Toolkit Pro

一套扩展MFC的界面库,可以很方便的实现各种界面风格。不过话说VC2008的MFC即将集成它竞争对手的产品BCGControl,呵呵 官方网站:http://www.codejock.com/products/toolkitpro 最新的11.20版本已经支持VC2008了,所以编译没有太大的...

2007-11-23 13:20:00 17052 8

原创 Win98 is gone

Win98早已被MS抛弃,不过至少VC2005编译的程序仍然可以在98下运行。但是如今, 随着2008的发布,Win98终于完全被无视,悼念一下。VC2005的时候,虽然官方没有提供对Win98的正式支持,但是ANSI方式编译的程序仍然可以正常运行。对于使用Unicode方式编译的程序,相对而言麻...

2007-11-23 11:22:00 3152 0

原创 精确测量代码的CPU运行周期

工欲善其事,必先利其器。为了优化代码,我们需要准确的获取代码在运行期间的相关数据,比如最重要的运行时间。这里介绍若干种测量方法。目前有不少商业软件可以完成类似的测试,比如Intel VTune,AMD CodeAnalyst等等。VS2005的Professional版本中也有相应的Profili...

2007-11-17 16:39:00 3763 0

原创 IDA Pro中"The database is corrupted"的解决办法

ida pro默认不允许你打开由其他用户创建的idb文件,这给逆向分析带来很多不便。经过研究发现,ida pro会在idb文件中存放ida.key的信息,用于标示创建者。因此我们需要用自己的ida.key中的内容进行替换。注: 替换之后,打开idb文件会提示校验失败,保存一下就好了。另外当idb以...

2007-11-16 13:07:00 3879 2

原创 轻松浏览MSN Messenger的消息历史

和QQ一样,Messenger中必须登陆以后才能查看消息历史,非常的不方便。其实它们都是把消息存放在本地的,因此只需要一点点工作量,就能轻松的浏览Messenger的消息历史。以MSN Messenger7.0为例,它的消息存放在“My Document/我接收到的文件/帐号/历史记录”目录下。该...

2007-11-15 16:23:00 1500 0

原创 用Winhex dump exe

为了顺利地dump,你需要准备一个内存编辑工具,比如Winhex(www.winhex.com/winhex )。下面是dump的具体步骤:首先运行exe,然后执行Winhex菜单中的“Tools”-“Open RAM...”找到你要dump的exe对应的进程,打开相应的exe。比如我们要dump...

2007-11-09 13:03:00 3664 0

转载 汉语编程?汉语骗程?

原作者轩辕春秋文化论坛设计与修改区 Maxwell )Forth的历史渊源流长,90年的《电子与电脑》杂志就介绍过这门语言,当时举的例子是逆波兰表达式。想不到如今改头换面,被人挂上“汉语编程”的羊头。悲哉!惜哉!预告 汉语编程扫盲汉语编程的方方面面真品龙芯与赝品汉语编程之差别挑战汉语编程语言汉语编...

2007-11-08 13:41:00 1310 0

原创 读C++标准系列 - 8.3.6 缺省参数

返回目录缺省参数不能出现在函数指针、函数引用以及typedef中(8.3-3)缺省参数可以在不同的声明中逐步给出(8.3-4)不同作用域的声明中定义的缺省参数是独立的,互不影响;同一作用域的声明中不能重复定义同一个参数的缺省值。看个例子就明白了: void f(int, int); void f(...

2007-11-07 22:39:00 1326 1

原创 Prefer Compiler Error to Runtime Error - taking advantage of the syntax check flag

写代码难免会有bug,所以我们会写很多Test来确保我们的代码能够正常工作。但是为什么不从源头上避免bug的发生呢?Compiler可以帮助我们探测到很多潜在的bug,我们所要做的只是合理的设置编译参数、并充分利用C++的各种特性。通常我们可以利用编译器提供的Syntax Check功能来检测代码...

2007-11-07 18:13:00 1174 0

原创 Windows编程好书推荐

Writing Secure Code, Second Edition作者:Michael Howard, David C. LeBlancISBN:0735617228Microsoft Windows Internals, Fourth Edition作者:Mark E. Russinovic...

2007-11-07 17:07:00 1369 0

原创 Dot Net好书推荐

我读过的:Applied Microsoft .NET Framework Programming作者:Jeffrey RichterISBN:0735614229只针对1.0,不过介绍比较全面,适合巩固已有的知识。同时书中也涉及了一些CLR底层的实现。Effective C#作者:Bill Wa...

2007-11-07 16:59:00 1658 2

原创 C++好书推荐

排名不分先后 :-)Effective C++    作者:Scott MeyersISBN:0321334876    本人的C++启蒙读物,不过当时只有电子书,看完花了不少时间。如果是纸质书的话,估计几天也就看完了^_^More Effective C++    作者:Scott Meyers...

2007-11-07 16:24:00 4751 3

原创 在CSDN博客发表带语法高亮C++代码的小技巧

虽然CSDN的Blog有“插入代码”的功能,但是不支持C++。CSDN的编辑器使用了开源的FCKEditor。虽然它支持从Word中粘贴带格式的文本,但是从其它地方则不行。比如直接从VS2005拷贝,就无法正确识别格式。但是从Word拷贝有一个问题 ,代码的行间距会变得特别大。经过研究之后,发现了...

2007-11-05 00:16:00 3136 2

原创 读C++标准系列 - 5.6~5.15 双目运算符(算术运算)

返回目录首先,双目运算符在运算之前,会对操作数进行类型提升,以使两者的类型相同。同时,该类型也将会是最后结果的类型(5-10)1、如果任何一个操作数是long double、double或者float,那么两者都会提升到该类型2、否则,会对操作数进行integral promotion,在此之后3...

2007-11-03 21:03:00 2672 1

原创 RPGViewer - 档案文件格式概述

或许你经常见到某些游戏安装的时候会拷贝无数小文件到你的硬盘,而某些游戏只有若干个大块头的数据文件。我们姑且称这些大块头为“档案文件”(Archive或者Package)。它里面包含了成千上万个小文件。把小文件打包成一个单一的档案文件有若干优点。首先,类似于我们常用的zip和rar格式,压缩打包之后...

2007-11-01 16:03:00 3293 0

原创 读C++标准系列 - 2.13 Literals

返回目录C++支持以下5种类型的常数: 整型常数 字符常数 浮点常数 字符串常数 布尔常数1、整型常数(注:因为long long是C++0X才正式加入的,所以目前不同的编译器对它的支持和标准的描述还有些出入)有三类整型常数:十进制,以1~9开头八进制,以0开头十六进...

2007-11-01 13:50:00 1777 0

原创 RPGViewer - 反馈页面

如果你对RPGViewer的功能有什么建议,或者希望RPGViewer支持更多的游戏,可以在该页面提供你的反馈,谢谢! 下载地址:http://pigspy.ys168.com/最新版本:3.0 Build 2008.10.24(需要VC 2008 SP1运行库的支持) If you have a...

2007-11-01 11:09:00 29824 412

原创 Protected or Private?

作为父类的设计者,你可能会踌躇到底应该使用protected还是private来描述你的成员。那么,让我们来看看下面几个Sample吧:1、不相关的类访问protected成员 void B::yourfun(A &a) {     class ASpe:public A     {   ...

2007-10-31 11:10:00 1073 0

原创 How small can a functional PE executable be?

你知道最小的PE(Windows平台下EXE可执行文件的默认格式)有多大吗?你可以看一下这个:http://www.phreedom.org/solar/code/tinype/简而言之: 最小的PE文件: 97 bytes Windows 2000平台下最小的PE文件: 133 by...

2007-10-30 18:36:00 1048 0

原创 Flexible C++

C++是一门非常灵活的语言,只要充分发挥你的想象, 再普通的东西都能玩出新花样1、1~1000求和循环?递归?再简单不过的题目了。但是如果不允许你用判断语句呢?如果你熟悉switch的内部实现,那么你很容易想到使用函数指针数组。 #include  typedef int (*fun)(int)...

2007-10-30 16:00:00 1531 0

原创 Self Print in C++

所谓的Self Print(自打印程序),就是指代码编译之后运行输出的结果和原来的代码一样。换言之,假设把编译-运行-输出作为一个算子F,代码作为自变量s的话,Self Print 就是要寻找s,使得 F(s)=s下面的程序要实现的是另外一种形式的Self Print,F(F(F(F(s))))=...

2007-10-30 14:58:00 1032 0

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