本文以目前最新的DiskGenius Pro 4.2.0.100为例,设想是不通过“破解”,而是弄清楚它的注册算法,实现完美激活。乱套一下“不战而屈人之兵”,是谓伐谋与攻心,乃最高境界。
先官样文章地声明一下,纯技术探讨,觉得软件有用请购买。这里不会暴露具体的细节,故命题为“简析”,到是整个过程中一些好玩的东西可能更有趣。
三.实现一个简单的HTTP服务
前面讲到激活分网络和加密锁两种方式。没有加密锁可以写一个Driver来模拟,为使事情变得简单,我选择网络方式。在本地如果有现成的IIS或Apache[Tomcat],可简单地写个页面来响应请求。
这里我决定借用现成的模板写一个APP来实现简单的HTTP服务,我就不用在调试虚拟机上搞一大堆东西,也方便以后类似的工作。
可以找到很多类似的东西,但我希望尽可能简单,并一定要有详细的文档。来自IBM的Nigel Griffiths有一篇"nweb: a tiny, safe Web server (static pages only)"就非常不错,全部C源码仅200行,支持静态页面.html或.htm、图像、压缩文件。遗憾它需要UNIX系统,如Ubuntu、Fedora、OpenSUSE和Debian等。
我需要Windows环境的。MSFT的David Cook一篇"Write a Simple HTTP-based Server Using MFC and Windows Sockets"正是我要找的,文章发表于MSJ(Microsoft Systems Journal - MSDN的前身)February 1996。嗯…,这么古老的东西?没错,就是它。越早越容易被奉为经典。
它的工程名称为Webster,文章十分详细,涵盖HTML、HTTP、Sockets等,可设置Server的基本选项,高度可控;"MIME Data Types"可扩展;支持详细的调试和日志记录;支持"System Tray"图标;源码注释得也很好。
编译连接后,先用Telnet测试一下:
对工程Webster改了大概以下几处:
a) HTTP/1.1协议支持,96年那时还只有HTTP/0.9和HTTP/1.0。
b) URI缓冲区大小。
c) 由CScrollView派生的CWebView水平滚动条支持。
d) 由CPropertySheet派生的CWebProps各属性标签CPropertyPage里Controls的字体。