CE教程第九关——处理共用代码
题目
步骤 9: 注入++: (密码=31337157)
这一步将会解释如何处理游戏中的共用代码, 这种代码是通用在除了自己以外的其他同类型对像上
常常你在修改游戏的时候, 你找到了一个单位的健康, 或是你自己角色的健康, 你会发现一种情况:
如果你把健康相关代码移除的话,其结果是你的角色无敌, 但你的敌人也无敌了。 在这种情况下, 你必须想办法区分自己与敌人。 有时候很简单,
你只要检查最前面的4个字节(函数指针表), 它通常指向一个独一无二的地址, 代表着游戏玩家角色,而有的时候它是一个团体号码,
或者也可能是一个指针, 它指向另一个指针, 该址针又指向下一个指针,搞不好还指向下下一个指针,
最后指向一个玩家名字。总之完全取决于游戏的复杂度, 以及你的运气最简单的方法是以"找出是什么改写了这个地址"去找出游戏代码,然后使用"分析(新/旧)数据/结构"的功能去比较两种结构。(你的单位和敌人的单位)然后看看是不是可以找到一个区分两者的方法。
当你找到如何区分你和电脑单位的方法后,你可以注入一段自动汇编脚本来检查状态,然后看是要运行游戏的代码还是要做其他的修改。(例如一击必杀)
另外, 你还可以用这个方法去创建一般所说的"字节数组"的字串, 它可以用来搜寻并产生一份所有你的单位或是敌人单位的列表 在这个教程中,
我已经实现了你将会玩到的最惊人的游戏. 这个游戏有4个玩家。2个属于你的阵容, 另外两个属于电脑方。 你的任务是找到改写健康的代码,
并且修改以至于你可以获得胜利,但"绝不能"使用锁定HP的方法. 完成修改以后, 请按 “重新启动游戏并自动执行” 来测试你的修改是否正确提示1: 健康是一个单浮点数 提示2: 解法不只一种
这关要掌握一种新的分析方法:分析结构体。
游戏有4个角色,玩家12是我方,34是敌方。双方共用扣血代码,也就是说不能简单地删除扣血的代码,这样双方都无敌。
解法
首先,随便找到一个玩家的血量地址,然后找到扣血的代码,需要注意的是血量存储类型是单浮点,如果不知道这个信息,可以用未知类型,未知初始值,数值减小等选项搜索。
找到扣血代码后,右键,选择“找出指令访问的地址”
然后让4个玩家都扣血,这样就会找到4个地址。
全选,然后选择“打开选中地址的分析数据”,一路确认。
这样就找到了4名玩家的结构体
可以看到 +04 是血量,+15 是玩家名,还有其他的信息意义不明。到这里我们可以判断玩家名来区别处理,不过更简单的方法是使用 +10 的偏移数据,不难猜测,这个是队伍编号。只需要让队伍1的玩家不掉血就行了。
回到反汇编窗口,选择自动汇编。
先选择CT表框架
然后选择代码注入
我的改法是如果是队伍1则血量设置为5000,然后原来的代码还是要执行的。最后分配到CT表,启用后发现锁血5000了。成功!
CE教程第九关——处理共用代码相关推荐
- CE教程 第四章 《代码寻找》
步骤 5: 代码寻找 (密码=888899) 有时一些东西的保存位置在你重新开始游戏时会改变,甚至是在你玩的时候也会变,在这种情况下,你 用2步仍然能做出可以用的内存列表. 在这一步会说明怎样用寻找代 ...
- CE教程 第七章 《多级指针》
步骤 8: 多级指针: (密码=525927) 这一步教学将会解释该如何使用多级指针.在第 6 步的教学中你应该了解到简单的1级指针的概念和用途, 以及如何由数据的地址找到真正的基址.在本步教学中,你 ...
- TurboLinux入门教程:第九课文件与目录操作(转)
TurboLinux入门教程:第九课文件与目录操作(转) 第九课 文件与目录操作 用户的数据和程序大多以文件的形式保存.用户使用Linux系统的过程中,需要经常对文件和目录进行操作.本章讲述了文件与目 ...
- Xamarin iOS教程之编辑界面编写代码
Xamarin iOS教程之编辑界面编写代码 Xamarin iOS的Interface Builder Interface Builder被称为编辑界面.它是一个虚拟的图形化设计工具,用来为iOS应 ...
- python画代码-Python教程_Python画Mandelbrot集 代码
Python教程_Python画Mandelbrot集 代码 作者:Comet 来源: 课课家 www.kokojia.com点击数:278发布时间:2015-06-19 11:17:19 曼德勃罗集 ...
- C++大学教程(第九版)2016-07 保罗·戴特尔 (Paul Deitel)、 哈维·戴特尔 (Harvey Deitel)_cafbe(C++中文版)
C++大学教程(第九版)2016-07 保罗·戴特尔 (Paul Deitel). 哈维·戴特尔 (Harvey Deitel)_cafbe(C++中文版) 链接:https://pan.baidu. ...
- win8.1和wp8.1共用代码,需要注意的一些问题
最近写了一个应有,使用了mvvmlight,把viewmodel.model.common之类的代码都放到了shared共享,写下来才发现,有不少问题是自已下手之前没注意到的,有些地方实在没法中途改了 ...
- 超轻量级DI容器框架Google Guice与Spring框架的区别教程详解及其demo代码片段分享...
超轻量级DI容器框架Google Guice与Spring框架的区别教程详解及其demo代码片段分享 DI框架 Google-Guice入门介绍 转载于:https://www.cnblogs.com ...
- 树莓派python编程小车_树莓派小车教程(三)——软件代码
原标题:树莓派小车教程(三)--软件代码 树莓派小车教程(三)--软件代码 2017-07-07 琳小豆 HelloWorld少儿编程 树莓派小车教程 (三) 在上一次教程中,我们已经完成了硬件连接. ...
- TensorFlow发布语音识别入门教程,附1GB数据集代码
原标题:TensorFlow发布语音识别入门教程,附1GB数据集&代码 机械鸡的鸡友经常问:如何开始入门深度学习语音和其他音频识别,例如关键字检测或语音命令. 虽然有一些伟大的开源语音识别系统 ...
最新文章
- bcb 接收webservice tbytedynarray_文章推荐:基于分集接收技术的可见光接收机前端电路...
- 一 Struts2 开发流程
- Spring Boot中使用AOP统一处理Web请求日志
- 【建议收藏】二叉树的序列化与反序列化
- POI(java 操作excel,word等)编程
- gulp教程之gulp-concat
- virus.win32.xorer病毒
- aws rds监控慢sql_如何将AWS RDS SQL Server与AWS Glue连接
- Dedecms会员中心注入漏洞
- DBCC CHECKDB
- Mirth Connect 第三章 创建通道
- 微信数据解密-dat查看-免费dat转图片
- 公众号后台管理系统php开发,微信公众平台开发管理后台开发
- ubuntu 中下载openssh源码移植到 arm开发,出现you don't exist, go away问题的解决
- 史上最详细的LXR安装介绍
- wan端口未连接怎么弄_路由器WAN口未连接解决方法,WAN口未连接怎么办
- python使用matplotlib画折线图(详细)
- what is grid ?
- Java代码修改文件后缀名
- RosettaFold如何媲美AlphaFold?
热门文章
- 需求分析报告模板(免费)
- Eclipse的汉化
- [转载] python 语音识别 中文_python中文语音识别
- 蓝屏蓝屏代码查询器_这是创建您想要的任何颜色的死亡蓝屏的方法
- 通信网络基础知识复习
- 几种RIA技术(富互联网应用程序)比较
- HTTP缓存-http强制缓存与协商缓存
- 小米安卓java模拟器手机版_Android P(9.0) 行为变更完美适配WebView(小米手机也适用)...
- ubuntu 10.04解决Skype中麦克风不工作问题
- Android__ListView控件的使用