自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++ Internals: 序言

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

2007-12-16 13:21:00 4251

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

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

2007-11-01 13:43:00 2250

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

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

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

原创 藏经阁保护方式研究

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

2008-12-03 00:13:00 6775 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 on June 6-14. You can find the minutes here (n

2008-07-25 09:08:00 3303

原创 DreamSpark

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

2008-05-29 19:14:00 5079

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

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

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

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

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

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

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

注:资源的版权属相应的游戏公司所有,请勿将提取得到的资源用于非法的用途。中国EgoUnpacker    支持提取Studio e.go!公司的游戏。LeafUnpacker    支持提取Leaf公司的游戏。    这两款都是windseven的作品,采用类似于WinZip的界面,仅支持解包。不过他在ys168上的网盘已经不存在了。Kid Tools GUI v1.5 build 050905

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

翻译 VC Team Blog - TR1实现问答

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

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

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

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

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

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

返回目录5.7 + -对于涉及指针的算术运算,标准中有比较严格的限制条件:参与运算的指针必须指向数组对象中的元素,或者指向数组对象最后一个元素的下一个元素(这是STL中能够使用distance(v.begin(),v.end())计算元素个数的前提条件)。(注:对于指向普通对象的指针,可以将该对象当成长度为1的数组中的元素)(5.7-4)否则,会导致未定义的行为。指针加减一个整型类型,相当于对指针

2007-12-18 15:11:00 3729

原创 解密QQ消息文件格式

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

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

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

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

2007-12-09 17:12:00 4783

原创 GoogleBook页面地址获取工具

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

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

原创 CSDN Blogger小工具

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

2007-12-01 17:08:00 3539

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

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

2007-11-30 13:28:00 3853

原创 C++ Internals: VC RTTI - typeid

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

2007-11-29 21:54:00 4750

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

返回目录网上资料比较少,ms还是有研究的价值 ^_^相关资源:Reversing Microsoft Visual C++ Part II: Classes, Methods and RTTIReversing C++C++的RTTI一旦遇上了多重和虚继承,简直就是噩梦 -.-这里介绍一下VC中用来表示RTTI的内部数据结构(具体可以参考《Reversing C++》里的描述)。利用下面的程序可以

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

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

一套扩展MFC的界面库,可以很方便的实现各种界面风格。不过话说VC2008的MFC即将集成它竞争对手的产品BCGControl,呵呵 官方网站:http://www.codejock.com/products/toolkitpro 最新的11.20版本已经支持VC2008了,所以编译没有太大的问题。要注意的一点是,源文件的注释有一些非GBK字符,编译的时候命令行里最好加上/wd4819 使用

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

原创 Win98 is gone

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

2007-11-23 11:22:00 3233

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

工欲善其事,必先利其器。为了优化代码,我们需要准确的获取代码在运行期间的相关数据,比如最重要的运行时间。这里介绍若干种测量方法。目前有不少商业软件可以完成类似的测试,比如Intel VTune,AMD CodeAnalyst等等。VS2005的Professional版本中也有相应的Profiling功能。不过,对于轻量级的代码优化而言,杀鸡未必要用牛刀。首先,对于简单的计时需求,可以使用boos

2007-11-17 16:39:00 3964

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

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

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

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

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

2007-11-15 16:23:00 1733

原创 用Winhex dump exe

为了顺利地dump,你需要准备一个内存编辑工具,比如Winhex(www.winhex.com/winhex )。下面是dump的具体步骤:首先运行exe,然后执行Winhex菜单中的“Tools”-“Open RAM...”找到你要dump的exe对应的进程,打开相应的exe。比如我们要dump Explorer.exe:点击OK,这样你就可以在Winhex的编辑窗口中看到该EXE在内存中的镜像

2007-11-09 13:03:00 4345

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

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

2007-11-08 13:41:00 1539

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

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

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

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

写代码难免会有bug,所以我们会写很多Test来确保我们的代码能够正常工作。但是为什么不从源头上避免bug的发生呢?Compiler可以帮助我们探测到很多潜在的bug,我们所要做的只是合理的设置编译参数、并充分利用C++的各种特性。通常我们可以利用编译器提供的Syntax Check功能来检测代码,这样可以避免生成大量临时的obj文件。下面是用于代码检测的推荐编译参数。VC8:命令行参数/Zc:f

2007-11-07 18:13:00 1246

原创 Windows编程好书推荐

Writing Secure Code, Second Edition作者:Michael Howard, David C. LeBlancISBN:0735617228Microsoft Windows Internals, Fourth Edition作者:Mark E. Russinovich, David A. SolomonISBN:0735619174To be continued..

2007-11-07 17:07:00 1513

原创 Dot Net好书推荐

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

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

原创 C++好书推荐

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

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

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

虽然CSDN的Blog有“插入代码”的功能,但是不支持C++。CSDN的编辑器使用了开源的FCKEditor。虽然它支持从Word中粘贴带格式的文本,但是从其它地方则不行。比如直接从VS2005拷贝,就无法正确识别格式。但是从Word拷贝有一个问题 ,代码的行间距会变得特别大。经过研究之后,发现了解决方法。(要从VS中拷贝语法高亮的代码可以使用我写的小工具CSDN Blogger)没仔细研究过CS

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

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

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

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

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

或许你经常见到某些游戏安装的时候会拷贝无数小文件到你的硬盘,而某些游戏只有若干个大块头的数据文件。我们姑且称这些大块头为“档案文件”(Archive或者Package)。它里面包含了成千上万个小文件。把小文件打包成一个单一的档案文件有若干优点。首先,类似于我们常用的zip和rar格式,压缩打包之后,可以大大降低占用的磁盘空间。即使不进行压缩,打包之后也便于管理。其次,打包之后可以简化游戏程序访问资

2007-11-01 16:03:00 3974

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

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

2007-11-01 13:50:00 2082

原创 RPGViewer - 反馈页面

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

2007-11-01 11:09:00 31781 419

原创 Protected or Private?

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

2007-10-31 11:10:00 1179

原创 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 bytes 最小的能够从网上下载并运行一个程序的PE文件: 133 bytes

2007-10-30 18:36:00 1112

原创 Flexible C++

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

2007-10-30 16:00:00 1646

原创 Self Print in C++

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

2007-10-30 14:58:00 1212

CSDN Blogger

提供对CSDN Blog上文章的备份和代码语法高亮功能

2007-12-05

GoogleBook页面获取工具

批量获取GoogleBook的book中每一页图片的地址,方便批量下载到本地

2007-12-05

空空如也

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

TA关注的人

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