- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
标题变速齿轮再研究
标 ? 题:“变速齿轮”再研究 发信人:bbbkom ? ? 时 ? 间:2002-4 详细信息: ? ? ? ? ? ? ? ? ? ? ? ? 关键词 ? ? ? ? ? 变速齿轮 ? ? 调用门 ? ? ring0 ? ? ? ? ? 提起“变速齿轮”(以下简称“齿轮”)这个软件,大家应该都知道吧,该软件号称 是全球第一款能改变游戏速度的程序。我起初用时觉得很神奇,久而久之就不禁思考其实现原理了,但苦于个人水平有限,始终不得其解,成了长驻于脑中挥散不去的大问号。 ? ? ? 偶然一天在bbs上看到了一篇名为《“变速齿轮”研究手记》(以下简称《手记》)的文章,我如获至宝,耐着性子把文章看完了,但之后还是有很多地方不解,不过还是有了比较模糊的认识:原来齿轮是通过截获游戏程序对时间相关函数的调用并修改返回结果实现的呀。 ? ? ? 为了彻彻底底地弄清齿轮的原理,我这次打算豁出去了。考虑到《手记》的作者从是研究的“齿轮”的反汇编代码的,那我也照样从反汇编代码开始。不过自认为汇编功底不够,又从图书馆借了几本关于windows底层机制和386汇编的书,在经过差不多两周的“修行”之后,自我感觉有点好啦,哈哈,我也有点要迫不及待地把“齿轮”大卸八块了! ? ? ? 在动手之前,我又把《手记》看了一遍,这次可就清楚多了:通过调用门跳到ring0级代码段,修改各系统时间相关函数的前8个字节为jmp指令,转跳到“齿轮”映射到2g之上的代码,达到截获对各系统时间相关函数的调用的目的。但同时我的疑惑也更明确了: ? ? ? ? 1.“齿轮”怎样建立指向自己映射到2g以上内存的代码的调用门描述符的; ? ? ? ? ? 2.“齿轮”怎样将自己的代码映射到2g以上线性地址的; ? ? ? ? ? 3.映射到2g之上的代码是怎样做到在代码基址更改的情况仍能正确运行的 ? ? ? ? 带着这样的疑问,我正式开始了对“齿轮”反汇编代码的分析。工具嘛,不用说当 ? 然是softice ? for ? windows98、w32dasm,ok,出发啦! ? ? ? ? ? 我的“齿轮”版本是0.221 ? for ? win98和winme的,内含有两个文件(变速齿轮.exe 和hook.dll)。先看看hook.dll里面有些什么,用w32dasm将hook.dll反汇编,看看它的输出函数: ? ? ? ? ? ? ?ghwnd@@3pauhwnd__@@a ? ? ? ? ? ? ?gnhotkey1@@3ka ? ? ? ? ? ? ?gnhotkey2@@3ka ? ? ? ? ? ? ?gnhotkey3@@3ka ? ? ? ? ? ? ?gnhotkey4@@3ka ? ? ? ? ? ? ?nhook@@3ha ? ? ? ? ? ? ?sethook@@yahpauhwnd__@@@z ? ? ? ? ? ? ?unhook@@yahxz ? ? ? ? ? 看函数名好象该dll只是安装钩子捕获变速热键的,与我的研究目的没太大的关系, ? 跳过去! ? ? ? ? ? 再看看变速齿轮.exe的导入函数,timegettim、gettickcount等时间相关的函数都 在里面。嘿,还有createfilemappinga和mapviewoffileex,看来“齿轮”是用这两个函 ? 数创建映射文件的。以下列出几个关键的导入函数: ? ? ? ? ? hook.?gnhotkey1@@3ka ? ? ? ? ? ? hook.?gnhotkey2@@3ka ? ? ? ? ? ? hook.?gnhotkey3@@3ka ? ? ? ? ? ? hook.?gnhotkey4@@3ka ? ? ? ? ? ? hook.?sethook@@yahpauhwnd__@@@z ? ? ? ? ? kernel32.createfilemappinga ? ? ? ? ? ? kernel32.getmodulefilenamea ? ? ? ? ? ? kernel32.getmodulehandlea ? ? ? ? ? kernel32.gettickcount ? ? ? ? ? ? kernel32.mapviewoffileex ? ? ? ? ? ? kernel32.queryperformancecounte ? ? ? ? ? user32.killtimer ? ? ? ? ? ? user32.sendmessagea ? ? ? ? ? user32.settimer ? ? ? ? ? ? winmm.timegettime ? ?
文档评论(0)