编程的随想
文章平均质量分 78
李马
不过如此
展开
-
字符串黑箱的背后
去年的时候,由于某种原因,我需要将一个文件的二进制形式以文本的格式输出到一个文本文件中,类似下面这个样子:4D 5A 90 00 03 00 00 00 04 00 00 00 FF FF 00 00B8 00 00 00 00 00 00 00 40 00 00 00 00 00 00 0000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0000 0原创 2004-02-29 13:29:00 · 1900 阅读 · 2 评论 -
球胡麻差
按:球胡麻差,山西方言,乱七八糟之意。C++对于托管代码的封装一向不是很尽善尽美,从最初的static成员函数到MFC的消息映射表,及至ATL的thunk机制。真可谓花样百出、层出不穷了。究其原因,这乃是C++的this指针惹的祸,这个“祸害”也就是Borland的VCL是用Object PASCAL编写的,而C++ Buider只能提供VCL的动态链接之缘由了。然而,我在不经意之间却获得了另一个原创 2005-09-14 12:14:00 · 4953 阅读 · 5 评论 -
重载new造成的BoundsChecker误报
原文链接:http://www.titilima.cn/?action=show&id=273BoundsChecker是一个功能很强大的内存/资源泄漏检查工具,尤其是可以嵌入Visual Studio的环境中随着调试器一同运行,使用起来尤其方便。当程序退出后,BoundsChecker则会弹出一个视图,其中记录了代码中发生的内存泄漏。不过,如果我们在代码中对内存分配做了特殊的处理,就有可能导原创 2008-10-24 10:01:00 · 1619 阅读 · 1 评论 -
扫雷不死的秘密
原文链接:http://www.titilima.cn/?action=show&id=276Windows的扫雷游戏有这么一个秘密:在你第一次点击游戏区中的方块时,出现的绝对不会是地雷。实践是检验真理的唯一标准,我用IDA拆了winmine.exe,版本是5.1.2600.0。下面我只简要介绍分析的结果,不再特别列出晦涩的汇编代码。扫雷游戏的游戏区数据放在一个庞大的一维BYTE数组中原创 2008-10-28 10:39:00 · 2692 阅读 · 6 评论 -
不要在接口定义中使用 TCHAR 字符串
先上个图,July 早期版本的“运行”对话框。其实在我最初的构想中,这个对话框的提示文字并不是系统默认的文字,而应该是我写上去的——最起码把“Windows”替换成 “July”。但是我最后放弃了,因为我写上去的字到最后显示出来是乱码。由于 RunFileDlg 这个 API 并没有详细的文档支持,而且其时的我也没有任何逆向的能力,所以干脆把文本参数给了个 NULL,直接用默认提示算球了。原创 2009-09-29 14:37:00 · 4134 阅读 · 16 评论