热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

红色警戒2修改器原理百科(二)

上一篇中介绍了,金钱的修改,瞬间建造以及快速建造。不多说,本篇开始(四)无限电力——共用代码处理电力和负载的精确数值,可以选中任意一个发电厂来查看直接给出电力的地址:[game.exe

上一篇中介绍了,金钱的修改,瞬间建造以及快速建造。不多说,本篇开始

(四)无限电力——共用代码处理

电力和负载的精确数值,可以选中任意一个发电厂来查看

dl

直接给出电力的地址:[game.exe+635DB4]+52D0

负载地址:[game.exe+635DB4]+52D4

    红警2中,电厂提供的电力根据其健康程度是不同的,生命值越少提供的电力越少。所以当电厂被攻击时会更新电力值。当新放置建筑,或建筑被摧毁,卖掉建筑物,都会更新电力和负载。要实现无限电力,可以把电力改大,也可以将负载减小。我选择第二种,将负载清零。第一种方法改多大是个问题,个人不喜欢显示99999,不优雅。

    直接查找谁改写了负载,进入游戏没进行任何操作就有一个地址004E44FE - mov [esi+000052D4],eax,根据经验八成不是,因为你还没进行操作,经测试NOP后也没效果。新建一座发电厂,出现3条指令,然后强制攻击自己的电厂,发现这条指令004F2D9B - mov [esi+000052D4],ecx计数增加,就是它了,NOP掉大笑,当你让电力发生变化时,负载成功清零。

    那么问题来了,这段代码是共用的,电脑AI也实现了无限电力,不信去试试打掉电脑的所有发电厂,防御建筑还在工作,而且电脑也只建造一个电厂。这就要处理共用代码了,我的实现是,判断是不是玩家的负载地址,如果是则清零,如果不是则正常操作,如下CE脚本。

[ENABLE]
alloc(newmem,2048)
label(returnhere)
label(originalcode)
label(exit)

game.exe+F2D9B:  //要修改的指令地址
jmp newmem
nop
returnhere:

newmem:
push eax
mov eax,game.exe+635DB4  //玩家数据地址
mov eax, dword ptr [eax]
cmp eax, esi
pop eax
jnz originalcode   //如果不是我方则跳转 
mov [esi+000052d4],0  //修改后的指令 
jmp exit

originalcode:
mov [esi+000052d4],ecx

exit:
jmp returnhere

(五)金钱只增不减

    方法同上,查找让金钱减少的代码,同样需要处理共用代码。

(六)地图全开——简单CALL,却找得不易

    最初一直没有如何地图全开的思路,找过地图迷雾数组,搜索未知,然后一直搜索变化实在是不靠谱,是否有大神告知这种如何操作?

    然后看红警2对战直播的时候,发现地图上的随机箱子可以获得开全图。得到思路,遂从此下手,一般的箱子都是加钱的,就查找谁更改了金钱(让你的矿车都停下来,减少干扰),然后去吃箱子,得到一个地址(后来发现这个地址也是所有与金钱增加有关的地方)。用OD在这个地址下断点,然后继续找箱子,遇到加钱箱子,程序断下来。

jq

    然后查看调用堆栈,一层层下断点。返回一层:

d1c

    返回二层:

d2c

    最初寻找的时候,下断了4层,有些你会发现,刚进游戏,就被断下来,这样的断点直接取消就好。根据上图已经有的注释,实际两层就好。而且当你返回一层的时候,往上面翻,你会看到如下关键字符串:

dsm

    再往上翻还有其他的,比如开全图的,和重新关闭全图的:

zsm

最后开全图的CALL就是:

pushad
mov ecx,008324E0  //游戏数据区
call 0055A120
popad
ret

代码注入器CodeinEx,调用即可。这个函数里面就是把全图的迷雾改写为已经探索。不深究。

To be continued…

署名许可转载请注明来源,http://www.cnblogs.com/viewll/p/4769346.html


推荐阅读
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • EPICS Archiver Appliance存储waveform记录的尝试及资源需求分析
    本文介绍了EPICS Archiver Appliance存储waveform记录的尝试过程,并分析了其所需的资源容量。通过解决错误提示和调整内存大小,成功存储了波形数据。然后,讨论了储存环逐束团信号的意义,以及通过记录多圈的束团信号进行参数分析的可能性。波形数据的存储需求巨大,每天需要近250G,一年需要90T。然而,储存环逐束团信号具有重要意义,可以揭示出每个束团的纵向振荡频率和模式。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文介绍了使用postman进行接口测试的方法,以测试用户管理模块为例。首先需要下载并安装postman,然后创建基本的请求并填写用户名密码进行登录测试。接下来可以进行用户查询和新增的测试。在新增时,可以进行异常测试,包括用户名超长和输入特殊字符的情况。通过测试发现后台没有对参数长度和特殊字符进行检查和过滤。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文介绍了在Linux下安装Perl的步骤,并提供了一个简单的Perl程序示例。同时,还展示了运行该程序的结果。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 本文介绍了一些好用的搜索引擎的替代品,包括网盘搜索工具、百度网盘搜索引擎等。同时还介绍了一些笑话大全、GIF笑话图片、动态图等资源的搜索引擎。此外,还推荐了一些迅雷快传搜索和360云盘资源搜索的网盘搜索引擎。 ... [详细]
  • 本文详细介绍了MySQL表分区的创建、增加和删除方法,包括查看分区数据量和全库数据量的方法。欢迎大家阅读并给予点评。 ... [详细]
  • HTML学习02 图像标签的使用和属性
    本文介绍了HTML中图像标签的使用和属性,包括定义图像、定义图像地图、使用源属性和替换文本属性。同时提供了相关实例和注意事项,帮助读者更好地理解和应用图像标签。 ... [详细]
  • 本文介绍了一些Java开发项目管理工具及其配置教程,包括团队协同工具worktil,版本管理工具GitLab,自动化构建工具Jenkins,项目管理工具Maven和Maven私服Nexus,以及Mybatis的安装和代码自动生成工具。提供了相关链接供读者参考。 ... [详细]
  • loader资源模块加载器webpack资源模块加载webpack内部(内部loader)默认只会处理javascript文件,也就是说它会把打包过程中所有遇到的 ... [详细]
author-avatar
魔蝎陈小琳
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有