技术分析
文章平均质量分 81
watergear
这个作者很懒,什么都没留下…
展开
-
PSP3000破解原理——缓冲区溢出漏洞随谈
一直很惊叹,黑客是如何利用缓冲区溢出,达到入侵,破解系统的。就如IE浏览器上曾出现的图片格式病毒一样,这次对PSP的破解,正是借助一个TIFF格式图片完成的。由于对PSP有爱,决定去了解一下这里面都发生了什么事情。一个神奇的图片是如何破解系统的? 缓存区溢出,学名是memory overflow,实际上就是内存越界。其结果大致表现为,程序死机,系统崩溃。这本来是软件编写的bug,很常见。为什原创 2009-05-04 14:46:00 · 5752 阅读 · 3 评论 -
C++模板SFINAE实践
最近工作项目中,需要做一个字符串编码转换的工具库。在我之前的开发人员,提供了大量C风格的功能函数。每次转码之前,针对不同的编码,需要调用不同的功能函数。这种方式的问题很明显,就是每次都需要人工去判断字符串编码格式,并选择不同的功能函数。因此,还经常出现人为失误的情况。为了有效的改善这种情况,我决定采用C++模板技术,能够自动匹配字符串类型,并正确调用编码转换的功能函数。为此,我对C++模板SFINAE技术进行研究。原创 2018-09-07 17:42:55 · 360 阅读 · 0 评论 -
MFC与ATL在COM组件开发中的差异和优劣
从编写代码的角度,对比分析MFC(Microsoft Foundation Classes)与ATL(Active Template Library)在COM(component object model)组件开发中的差异和优劣。本文研究了ATL如何通过C++的多重继承和丰富的模板库,充分实现了COM组件多重接口的技术特点。原创 2018-08-31 00:13:07 · 2298 阅读 · 0 评论 -
在C#的Windows Forms中使用Preview Handler的实践
本文通过一个在C#语言编写的窗体中加载预览功能COM组件的例子程序,深入研究了如何在C#环境里调试C++代码的技术,以及分析COM组件的接口参数类型定义,并与C#语言中的参数类型定义进行比较,进而发现例子程序中的问题,并解决该问题。原创 2018-08-27 18:24:15 · 1141 阅读 · 1 评论 -
在x64架构下混合C++和ASM编程,堆栈调试器信息错误的问题
本文讨论一个调试C++和ASM混合代码的技术案例。其中涉及到PE文件结构中UNWIND_INFO和UNWIND_CODE等概念。背景说明: 我在一个大型软件的开发调试过程中,遇到堆栈信息错误的问题。这个大型软件基于C++语言,支持二次开发,提供了数量若干的DLL库,并且内置了Origin C语言(简称OC)。通过OC语言可以访问内部或第三方的DLL库。具体问题就出现在某个OC代码调用内部...原创 2018-03-08 18:57:25 · 1877 阅读 · 0 评论 -
Splendor宝石游戏的策略分析
《璀璨宝石》是一个很好玩的游戏,易于上手并难以精通。游戏中出现的各种场景,常常成为我们讨论分析的战场,由此也引申出各种策略流派。孰好孰坏一直争论不休。 下面,我们针对一个具体的案例,尽量从客观分析各种决策的优劣,并与主观直觉进行比较,从而得出一些有用的经验模式。原创 2015-05-29 11:44:27 · 7220 阅读 · 0 评论 -
代码中的概率学(从理论到仿真的实践)
某日,我们几个同事在玩一个叫Splendor(璀璨宝石)的游戏。在翻贵族牌的时候,出现了一个极致的情况,连续翻出5块3x3宝石组合的牌。在众人惊呼这个奇迹的时候,突然有人提出,“这个概率有多少啊?”。于是,一帮理工科的死宅,开始了脑区的激活。原创 2015-05-04 13:56:02 · 872 阅读 · 0 评论 -
交换变量A,B的代码运行效率分析
我们写代码时,经常会碰到需要将两个数值变量互相交换的情况。 例如,要求交换变量A,B的值,写如下C代码。情况1,利用临时变量T: T = A; A = B; B = T; 情况2,不利用临时变量: A ^= B; B ^= A; A ^= B;那么,这两种实现方式的运行效率如何呢?原创 2015-04-28 09:40:04 · 893 阅读 · 0 评论 -
VS2008调试器窗口假死问题
描述:Windows XP,Visual Studio 2008, C++ 环境下,调试控制台应用程序,中途强制退出。结果任务栏和任务管理弹出一个控制台窗口,点击关闭或结束任务无效。进程管理器里没有发现此窗口相关进程。如果选择关机,则无限等待ing,只能被迫关电源。 分析:很诡异的现象,以前没遇过,难道这个窗口是个幽灵窗口?嗯……科学不能迷信,虽然已是深夜,但还是着手研究一下。不能原创 2010-05-30 05:13:00 · 4744 阅读 · 2 评论 -
从ASM代码中分析MFC与ATL在COM组件开发中的差异和优劣
本文是[MFC与ATL在COM组件开发中的差异和优劣](https://blog.csdn.net/watergear/article/details/82219037)的续篇。主要是通过C++中的模板和多重继承的语言特性,从ASM汇编层面,来分析MFC与ATL的差异和优劣。原创 2018-09-14 17:36:16 · 444 阅读 · 0 评论