Codename: Ideal

//名词
API Hook:通过特定的手段拦截API调用,修改API功能
x64:微软对x86 64bit技术的简称,这个是基于AMD的说法,后来Intel为了和AMD64兼容,制定了所谓EM64T标准,在二进制上是兼容的
 
 
//历史
2005.09.12 Setup Microsoft Windows Xp 64bit edition…
2005.09.12 Setup Microsoft Visual Studio 2005 Beta 2…
2005.09.19 Setup Compuware DriverStudio 64bit with null modem cable
2005.09.22 Setup Intel C++ EM64T Compiler
 
//主题
Powerword 的64位之路
目前的屏幕取词,基本上是完全硬编码到32位x86平台的。很多人认为API Hook是一个很简单的事情,事实并非如此。业余挂接一个API和把这个技术应用在商业软件中,技术跨度远比想象中的大。例如采用何种方式注入代码,Hook的时机,是静态还是动态,针对特殊软件的特殊处理,广泛的硬件兼容性,都是要考虑的问题。
 
自2002年开始,计算机世界的软硬件发生了一些貌似和词霸无关的变化,IE5、DEP、64bit。而一切都让屏幕取词这个用起来很自然的功能,实现起来却愈加困难。
 
随着64位平台的崛起,新一轮的洗牌已经开始。有些言论说64位普及还需以时日,理由便是32位平台替换掉16位平台用了近10年的时间。然则我要说,技术的发展是有加速度的,个人计算机的内存从640k增长到16MB用了多少年?从16MB到2G又用了多少年?我们不能把头扎在沙土堆里任凭物换星移。
 
64位屏幕取词研究,已经进行了一段时间了。以API Hook技术而论,无疑微软走在最前沿,Detours 2.0早已实现了64位API Hook,但它的源代码授权费用却也让国内的软件厂商乍舌:10,000 $。国外某Delphi API Hook论坛上有位仁兄说得好:“On my god!”
 
目前拦在路上的技术问题大致有以下这么多:
开发工具:VC++ 2005 64bit不支持内联汇编,这个用Intel的EM64T编译器可以解决。
代码移植:可以说现有的代码,内核基本上是硬编码到 32位x86的,所有的内联汇编需要重写或者另寻他路;所有的指针计算需要扩展;内存块对齐需要重新设计;内置的反汇编器需要升级到x64。
 
所有的问题目前正在或者已经被解决,有些事情还是要亲自去做,空想是不能解决问题的。
Advertisements

About HyperIris

Wild Scientist
此条目发表在编程艺术分类目录。将固定链接加入收藏夹。

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s