10授人以鱼不如授之以渔●CALL入门篇二:CALL的寻找及分析.docVIP

10授人以鱼不如授之以渔●CALL入门篇二:CALL的寻找及分析.doc

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
10授人以鱼不如授之以渔●CALL入门篇二:CALL的寻找与分析 *所谓的call,其实本质上来说就是一条汇编指令. *只要找到了关键代码的地址,传入适当参数,就可以借用游戏中已有功能来完成内挂的功能。 目标:武易的喊话CALL 目的:以喊话CALL更深入了解所谓的CALL参数. 问:写一个CALL,如何传入适当的参数?什么是适当的参数?是不是一定要按照反汇编代码来写? 好了,废话就不说了, 用OD载入游戏,武易? 并 下bp send 断点. 在游戏中喊一句话,OD便断了下来. ? 好了,这里我们已经非常熟悉了,是send函数的内部,? ? 我们再来看看堆栈中的情况 ? 其中 是我喊出去的话的内容,喊话CALL一般比较好找,因为有比较明确的数据 好了,我们按CTRL+F9 返回 ? 这里是第一层,这里是游戏调用 send函数的发包的位置,这里也不说了 我已经在前面几篇 详细的介绍用法.我们继续返回 ? 好了 ,我们又来到这一层,这里 在上篇找打坐中也出现过,非常眼熟吧. 这里一层应该是封包组合之类的CALL 我们暂时跳过它. ? 这一层中,我们也在上一篇遇到过,上次断下来后是压入的加密后封包的内容.还有一个应该是时间戳一类的东西.(这里也是猜的,因为不经过深入分析,是无法确认最终的作用.) *时间戳? 是根据时间的变化 而变化的一个数值,经常被用来加在封包内,来检测 封包达到前后 ,或者用来验证封包的真伪. 好了 继续返回. ? 到了这一层,这里 OD显示了压入的封包地址中有我们喊话的内容 (因为写教程的原因不能暂停太长时间所以又喊了一遍,内容可能跟上面不同) 0047218F? ? 68 F0A77001? ? push? ? 0170A7F0? ? ? ? ? ? ? ? ? ? ? ? ; ASCII 1111111111111 这里 有一个地址 里面的内容是我们的喊话内容,我们来测试下 这个CALL是不是我们要找的喊话CALL ===========================CALL分析===================== 0047218F? ? 68 F0A77001? ? push? ? 0170A7F0? ? 这里 压入了 我们喊话的内容指针地址,这里到我们手里该怎么写呢? 是否一定要按照这个地址来写入我们的喊话内容呢?? 其实不然,我说过,一个CALL只要压入适当的参数,他这里 需要的是一个喊话内容的指针地址,而并非一定要 系统指定的,所以我们可以自己找一个空白的,? 或 在语言定义一个变量? 然后取他的指针地址 来压入堆栈都可以. 这里我说一个用CE+代码注入器 写喊话CALL的 方法. 用ce? 写入我们的喊话内容. 并用代码注入器调试. ? 随便 取一个地址 ,将类型改变为 文本型? 然后内容 变成我们要喊话的内容 ? 这里参数只有一个 我们已经弄好了,? push 4ED056? ? (4ed056是我选的 喊话内容地址,这里保存着我的喊话你让) ? E8 D7B9FBFF? ? call? ? 0042DB70 这里是CALL的地址 .? call? ? 0042DB70 写完参数和 CALL地址后? 我们还要干嘛? 当然是? 看CALL内部是否需要调用? 寄存器. ? 我们来看看 CALL内部调用了什么 寄存器 ,我在前几篇中用过很多次这种方法来找CALL所需要的寄存器.其实所谓的适当的参数就是如此,你想要什么我就给你什么~~ 当 内部CALL? 出现这种,mov ebx,eax? ? 或者? push eax? ? ? 这个时候 我们往上面看看有没有给EAX赋值的指令,如果没有 的话 ,那么我们需要给EAX赋值了.? 因为EAX 本身并不带数据,除了几个特殊的寄存器外,寄存器本身就是用来给我们存放数据的,他本身并没有数据. 0042DB7D? ? 50? ? ? ? ? ? ? push? ? eax? ? ? ? ? 我们在第四行 找到这样一句,但是上面有一行给EAX赋值的指令所以 EAX一句不需要我们来赋值了. 0042DB83? ? 64:8925 0000000 mov? ? dword ptr fs:[0], esp? ESP是堆栈指针? , 永远指向 栈顶,属于特殊寄存器,所以也不需要赋值. 0042DB8E? ? 53? ? ? ? ? ? ? push? ? ebx? 这里有一句 ,上面

文档评论(0)

187****5045 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档