题目

步骤 9: 注入++: (密码=31337157)

这一步将会解释如何处理游戏中的共用代码, 这种代码是通用在除了自己以外的其他同类型对像上

常常你在修改游戏的时候, 你找到了一个单位的健康, 或是你自己角色的健康, 你会发现一种情况:
如果你把健康相关代码移除的话,其结果是你的角色无敌, 但你的敌人也无敌了。 在这种情况下, 你必须想办法区分自己与敌人。 有时候很简单,
你只要检查最前面的4个字节(函数指针表), 它通常指向一个独一无二的地址, 代表着游戏玩家角色,而有的时候它是一个团体号码,
或者也可能是一个指针, 它指向另一个指针, 该址针又指向下一个指针,搞不好还指向下下一个指针,
最后指向一个玩家名字。总之完全取决于游戏的复杂度, 以及你的运气

最简单的方法是以"找出是什么改写了这个地址"去找出游戏代码,然后使用"分析(新/旧)数据/结构"的功能去比较两种结构。(你的单位和敌人的单位)然后看看是不是可以找到一个区分两者的方法。
当你找到如何区分你和电脑单位的方法后,你可以注入一段自动汇编脚本来检查状态,然后看是要运行游戏的代码还是要做其他的修改。(例如一击必杀)
另外, 你还可以用这个方法去创建一般所说的"字节数组"的字串, 它可以用来搜寻并产生一份所有你的单位或是敌人单位的列表 在这个教程中,
我已经实现了你将会玩到的最惊人的游戏. 这个游戏有4个玩家。2个属于你的阵容, 另外两个属于电脑方。 你的任务是找到改写健康的代码,
并且修改以至于你可以获得胜利,但"绝不能"使用锁定HP的方法. 完成修改以后, 请按 “重新启动游戏并自动执行” 来测试你的修改是否正确

提示1: 健康是一个单浮点数 提示2: 解法不只一种

这关要掌握一种新的分析方法:分析结构体。

游戏有4个角色,玩家12是我方,34是敌方。双方共用扣血代码,也就是说不能简单地删除扣血的代码,这样双方都无敌。

解法

首先,随便找到一个玩家的血量地址,然后找到扣血的代码,需要注意的是血量存储类型是单浮点,如果不知道这个信息,可以用未知类型,未知初始值,数值减小等选项搜索。


找到扣血代码后,右键,选择“找出指令访问的地址”


然后让4个玩家都扣血,这样就会找到4个地址。


全选,然后选择“打开选中地址的分析数据”,一路确认。


这样就找到了4名玩家的结构体


可以看到 +04 是血量,+15 是玩家名,还有其他的信息意义不明。到这里我们可以判断玩家名来区别处理,不过更简单的方法是使用 +10 的偏移数据,不难猜测,这个是队伍编号。只需要让队伍1的玩家不掉血就行了。

回到反汇编窗口,选择自动汇编。


先选择CT表框架

然后选择代码注入


我的改法是如果是队伍1则血量设置为5000,然后原来的代码还是要执行的。最后分配到CT表,启用后发现锁血5000了。成功!

CE教程第九关——处理共用代码相关推荐

  1. CE教程 第四章 《代码寻找》

    步骤 5: 代码寻找 (密码=888899) 有时一些东西的保存位置在你重新开始游戏时会改变,甚至是在你玩的时候也会变,在这种情况下,你 用2步仍然能做出可以用的内存列表. 在这一步会说明怎样用寻找代 ...

  2. CE教程 第七章 《多级指针》

    步骤 8: 多级指针: (密码=525927) 这一步教学将会解释该如何使用多级指针.在第 6 步的教学中你应该了解到简单的1级指针的概念和用途, 以及如何由数据的地址找到真正的基址.在本步教学中,你 ...

  3. TurboLinux入门教程:第九课文件与目录操作(转)

    TurboLinux入门教程:第九课文件与目录操作(转) 第九课 文件与目录操作 用户的数据和程序大多以文件的形式保存.用户使用Linux系统的过程中,需要经常对文件和目录进行操作.本章讲述了文件与目 ...

  4. Xamarin iOS教程之编辑界面编写代码

    Xamarin iOS教程之编辑界面编写代码 Xamarin iOS的Interface Builder Interface Builder被称为编辑界面.它是一个虚拟的图形化设计工具,用来为iOS应 ...

  5. python画代码-Python教程_Python画Mandelbrot集 代码

    Python教程_Python画Mandelbrot集 代码 作者:Comet 来源: 课课家 www.kokojia.com点击数:278发布时间:2015-06-19 11:17:19 曼德勃罗集 ...

  6. C++大学教程(第九版)2016-07 保罗·戴特尔 (Paul Deitel)、 哈维·戴特尔 (Harvey Deitel)_cafbe(C++中文版)

    C++大学教程(第九版)2016-07 保罗·戴特尔 (Paul Deitel). 哈维·戴特尔 (Harvey Deitel)_cafbe(C++中文版) 链接:https://pan.baidu. ...

  7. win8.1和wp8.1共用代码,需要注意的一些问题

    最近写了一个应有,使用了mvvmlight,把viewmodel.model.common之类的代码都放到了shared共享,写下来才发现,有不少问题是自已下手之前没注意到的,有些地方实在没法中途改了 ...

  8. 超轻量级DI容器框架Google Guice与Spring框架的区别教程详解及其demo代码片段分享...

    超轻量级DI容器框架Google Guice与Spring框架的区别教程详解及其demo代码片段分享 DI框架 Google-Guice入门介绍 转载于:https://www.cnblogs.com ...

  9. 树莓派python编程小车_树莓派小车教程(三)——软件代码

    原标题:树莓派小车教程(三)--软件代码 树莓派小车教程(三)--软件代码 2017-07-07 琳小豆 HelloWorld少儿编程 树莓派小车教程 (三) 在上一次教程中,我们已经完成了硬件连接. ...

  10. TensorFlow发布语音识别入门教程,附1GB数据集代码

    原标题:TensorFlow发布语音识别入门教程,附1GB数据集&代码 机械鸡的鸡友经常问:如何开始入门深度学习语音和其他音频识别,例如关键字检测或语音命令. 虽然有一些伟大的开源语音识别系统 ...

最新文章

  1. bcb 接收webservice tbytedynarray_文章推荐:基于分集接收技术的可见光接收机前端电路...
  2. 一 Struts2 开发流程
  3. Spring Boot中使用AOP统一处理Web请求日志
  4. 【建议收藏】二叉树的序列化与反序列化
  5. POI(java 操作excel,word等)编程
  6. gulp教程之gulp-concat
  7. virus.win32.xorer病毒
  8. aws rds监控慢sql_如何将AWS RDS SQL Server与AWS Glue连接
  9. Dedecms会员中心注入漏洞
  10. DBCC CHECKDB
  11. Mirth Connect 第三章 创建通道
  12. 微信数据解密-dat查看-免费dat转图片
  13. 公众号后台管理系统php开发,微信公众平台开发管理后台开发
  14. ubuntu 中下载openssh源码移植到 arm开发,出现you don't exist, go away问题的解决
  15. 史上最详细的LXR安装介绍
  16. wan端口未连接怎么弄_路由器WAN口未连接解决方法,WAN口未连接怎么办
  17. python使用matplotlib画折线图(详细)
  18. what is grid ?
  19. Java代码修改文件后缀名
  20. RosettaFold如何媲美AlphaFold?

热门文章

  1. 需求分析报告模板(免费)
  2. Eclipse的汉化
  3. [转载] python 语音识别 中文_python中文语音识别
  4. 蓝屏蓝屏代码查询器_这是创建您想要的任何颜色的死亡蓝屏的方法
  5. 通信网络基础知识复习
  6. 几种RIA技术(富互联网应用程序)比较
  7. HTTP缓存-http强制缓存与协商缓存
  8. 小米安卓java模拟器手机版_Android P(9.0) 行为变更完美适配WebView(小米手机也适用)...
  9. ubuntu 10.04解决Skype中麦克风不工作问题
  10. Android__ListView控件的使用