吾爱破解 - LCG - LSG |安卓破解|病毒分析|破解软件|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

搜索
查看: 5776|回复: 112
上一主题 下一主题

[原创] 星际争霸v1.08修改作弊指令(上)

[复制链接]
跳转到指定楼层
楼主
丸子de爸爸 发表于 2019-8-31 13:14 回帖奖励
本帖最后由 丸子de爸爸 于 2019-9-11 17:52 编辑

前言

星际争霸的作弊指令大家应该多有听过,但是有几个能够全部记住呢?老年人更是难上加难,今天我们就来解决一下这个问题。

PS:

有一段时间没有发文章,真的不是偷懒,单单是这一篇文章我就整理了三天,每天至少4-5个小时。有很多东西,做起来很容易,但是一到讲解的时候,总担心讲的东西太多,又担心讲的东西太少,来来回回整理了很多遍。

最终还是决定把这篇分成两部分:第一部分着重分析关键方法和地址,第二部分再来着重讲汇编。

相关基础知识请查看第一篇基础知识部分,不做重述。https://www.52pojie.cn/thread-1011457-1-1.html

本文中大段文字的概念已经在目录标识,怕瞌睡的朋友可以跳过。

文章纯属研究,切勿商用。转帖请注明出处,谢谢。

步骤简介

  1. 按照流程图,分析出秘籍的执行是按下回车之后校验执行,先找到回车后执行的方法位置。
  2. 输入特定的秘籍,使用CE搜索秘籍内容,进一步确定执行秘籍方法的位置。
  3. 找到存放输入内容内存的位置,在按下回车的第一个将访问他的方法前面修改代码,更改内存值,达到快速作弊指令的目的。

详细步骤

关卡选择

首先还是选择单人模式→original→里面的人族战役模式boot camp,因为没敌人攻打,安静。

思路分析

逻辑流程图

之前的文章也提到过,如果你要破解,第一步,你要明白他的正确流程。

我们这里是希望能够通过简易的输入,来达到调用系统作弊的方法,所以我们先把正确的逻辑理出来。

好,如此我们就得到了一个简单的流程图。接下来就开始找突破点了。

PS:不要问我这个怎么图怎么得来的,就是你游戏过之后的推测而已,破解原则上就是一种推敲,然后根据你发现的线索一点点的还原真相。

突破点分析(大段文字)

怎么确定我们从哪个判断入手呢?也简单,我们的需求,是输入1、2、3能够执行对应的作弊,那我们直接看看,哪一步会阻碍我们的执行。

很明显,在“秘籍是否正确”这个判断这里,会阻碍我们的需求,所以,先解决他。

那怎么该从哪里入手呢?也有以下两个方案(适用于所有游戏),分别问“顺流”和“逆流”:

1.“顺流”方案,即按照流程来执行,利用一切正确逻辑可能用到的资源,对程序进行正向的分析,找到关键逻辑。

优点:思路清晰,相对于“逆流”方案,速度更加稳定。很容易弄清楚代码真正逻辑,对自身学习成长帮助较大。

缺点:速度相对“逆流”方案较慢,而且需要一点编程上的知识积累(相信我,真的只是一点,别看到就否了)。

PS:所谓一切可能用到的资源,其实就是一种逻辑细化,将界面元素结合你所拥有的知识,再次细化流程图,而分析出关键逻辑位置。

2.“逆流”方案,即:使用个例来逆推出关键逻辑。比如此处,我们由于知道金钱是可以作弊的,所以,我们可以检测金钱,通过查找金钱变化的方式,慢慢的找回到关键逻辑。

优点:方法灵活,在特定的方式下使用,定位方法速度极快。执行步骤直观简单。

缺点:需要你的想象力很强,定位速度不稳定,“非洲酋长”检验神器。完全为了结果而执行,提升有限。

这两个方案其实都很好,就像篮球里的“学院派”和“街头派”,各有各的厉害,取长补短,合理运用才是王道。建议在没有头绪的时候,使用“顺流”。在需要快速定位关键方法时,使用“逆流”。

讲了这么多,真的可能会觉得我有点啰嗦,但是如果这么点啰嗦看不下去的话,下面的内容估计....

CE查询关键功能地址

大爷别走,真的开始了。我们先按照逻辑,回车,然后查看界面元素。

找到一个元素,界面上出现了一个“Message:”的文本,是让我们在里面打字的。


好,此时,我们可以细化流程图了。我下面就只画整体流程图的一部分,请结合上面的一起观看。

所以此处我们可以得出结论就是,这个“Message:”的绘制, 是在秘籍执行方法调用之前。

于是,我们可以利用这一点,来找到哪里是调用回车的关键方法。

打开CE,附加“starcraft”。修改“数值类型”为字符串,搜索“Message:”。

发现只有一条记录,继续右键“查看什么访问了地址”,并允许附加调试器。

切回游戏画面,发现数据一直持续增长。这里是由于我们已经打开了回车,游戏一直在重绘画面,所以没有一个打开的标志。

回到游戏,按回车关闭输入框“Message:”,然后再次打开。再回到CE查看,发现有一个只有一次的标志了。

点击“显示反汇编程序”,可以发现一个明显的ret,是可以回到之前方法的调用,先回去看一看。

在定位到的位置,F5打断点,然后切回游戏,一步步执行到ret。(如果断点有问题,可以打在第一行PUSH EBX那)

这里打完断点需要重新回车两次,因为目前断的是显示“Message:”的位置

PS:我们当前定位的方法,大概猜测,这里就是一个绘制文字的方法。

再多按一次F8,返回到外部程序。

此时我们会发现,上方不远处有一个JE的跳转,而我们的当前的位置正好在这个跳转的里面,说明跳转没有执行,也说明了,其实这个JE就代表的是回车是否按下的判断。

ctrl+B,删除所有断点,然后在JE处断点,F9让程序跑起来。然后回到游戏,再次按下回车,发现已经可以断住了。此时JE跳转实现,说明跳转是进入的确认回车的操作。那这里就可以作为我们要找的“回车确认秘籍”的入口(不记得的见流程图2)。

到这里又要停一停了。我随便跟了一下,发现茫茫多的call方法,call方法里面还有call,而且里面还有别的工具类调用,我的天,跟下去是能找到,但是人都要没了。

于是在当前的基础下,继续细化,用特例代替范例,逆一下。

于是以“show me the money”为例。(有人不明白为啥要特例,因为特例你可以直接查内存,就很快可以找到调用)

在游戏中回车输入“show me the money”暂时不按下确认。在CE中搜索字符串“show me the money”,得到一条记录。

PS:如果按下回车就卡住了,没法输入命令就是进断点了,回车断点是只要按下就进入,自己没事多按按F9,后面不再重复解释了。

选择“什么访问了地址”,然后返回游戏界面。又出现一堆增加的数据,不理他,回车,然后回到CE查看。

此时会进入断点,并且什么访问里出现了计数只有1的调用记录。

而且原本内存中显示秘籍的值为空了,这其实说明,秘籍确认的点,已经运行了,在我们断点的前面。

如果在断点后面,此时应该不会显示1个访问,内存也不会为空,因为他被断点停住了,直到我们运行到他的方法时候,才会运行。

不过也没关系,这样我们更近了,往前找就是了。

在反汇编窗口中,右键刚才的JE行选择,“选择当前函数”。

PS:新断点打的时候可以考虑把老断点删掉,免得调试的时候不流畅。

CE会自动跳到方法头,并将整个方法标注颜色,在方法第一行打入断点,然后再回到游戏。

输入"show me the money"直接回车。

在输入过程中,发现CE中的搜索结果地址居然也直接在变化,那看来这个地址是用来存放用户输入信息的。

进入断点,这次是不是不一样了,搜索值依然存在。而且单独计数的那个访问没有出现。

说明我们已经来到了关键逻辑的前面,接下来就是一步步F8向下执行,找到关键逻辑所在。

发现走到第二个call方法时,“什么访问了地址”的纪录变化了,说明这个方法读取了内存信息,所以我们在这里断点。因为程序不能逆向运行,所以要重新再来一次。按F9让程序继续运行。

选择“浏览相关内存区域”。

在游戏中再次输入"show me the money"并回车,然后回到CE。

发现内存中已经存在“show me the money”,双击红框处的数字,将前两个数字修改值为49,点确定。

此时在右边的文字会变成11ow me the money(绿色部分)

PS:在方法执行前修改掉内存的值,即让秘籍不正确,这是如果还能执行秘籍,就说明需要继续找。如果不能执行秘籍,说明此处修改就可以达到修改目的。

按下F9让程序运行,发现秘籍真的没生效。看来在这里修改内存,就可以达到我们需要的效果。

进入方法里,发现ecx的值就是输入的内存地址,所以可以直接引用动态地址了。

纪录下左侧的地址,我此处是"004BEDFC"。

PS:这里不是说非要动态,其实这个偏移地址也是可以跳转的,但是比较麻烦,在老式的程序可以直接纪录动态,他一般都从00400000开始。新程序就最好纪录偏移地址了。

怕大家不理解过程,所以再更新一下流程图如下:

OllyDebug修改exe

由于这次的内容已经很巨大了,本篇仅提供内容,具体分析留到下一篇。

退出之前的游戏和CE。在OllyDebug中打开程序,使他运行起来(同样记得进入单人关卡)

在OllyDebug中,Ctrl+G,跳转到我们纪录的地址地址"004BEDFC"(你也可以试试偏移地址)

在OllyDebug翻到最下面,选一个没有代码的行,我这里选的是“004ECDC0”

逐行输入下列代码(啥意思下篇详解)

push eax                               备份之前的寄存器内容,怕出BUG。其实这次的需求不写也行,好习惯。
mov eax,dword ptr ds:[ecx+0x14]        将输入内容读到寄存器eax中
cmp word ptr ds:[eax],0x31             比较输入的值是不是1
jne short 004ECDEB                     这跳转你要看你们自己的,跳转到pop eax那一行
mov dword ptr ds:[eax],0x776F6873        内存写入"show"
mov dword ptr ds:[eax+0x4],0x20656D20    内存写入" me "
mov dword ptr ds:[eax+0x8],0x20656874    内存写入"the "
mov dword ptr ds:[eax+0xC],0x656E6F6D    内存写入"mone"
mov word ptr ds:[eax+0x10],0x79          内存写入"y "
pop eax                                还原寄存器内容
call 004E6030                          调用原来正常逻辑需要调用的方法
ret                                    返回引用处

然后回到004BEDFC处,将代码改为call 004ECDC0,也就是调用我们的这个方法。

PS:简单的说我们做的动作就是,在执行他本身的方法之前,插入了我们的判断。

接下来就是保存了,老规矩,“复制到可执行文件”→“所有修改”

弹出框选择“全部复制”,之后保存文件,名字随便改。

把修改好的exe拷贝到游戏目录,运行,输入1回车,是不是直接回钱了。搞定。

如果想要其他的秘籍也生效,只要接着写判断就行,在下篇中我们详细演示。

结尾

本来想一篇写完的,奈何篇幅还是巨大,随随便便就3000多字了,还没有包括OllyDebug的一些分析和汇编的分析,所以把这部分放到了下一篇着重分析。

再对破解的思路来一个总结吧:

  1. 使用“顺流”法往往会让你很快找到突破口。
  2. 按照游戏逻辑建立流程图,有利于对程序的分析。
  3. 使用“逆流”法往往会让你更快的找到修改点。

本次修改内容很多,附上修改后exe文件,7天有效。请大家切勿商用,支持正版。
链接:https://pan.baidu.com/s/1UpCbbYoBtkqgmzSlzSb_Mw
提取码:qwug

我是下集传送门

免费评分

参与人数 40吾爱币 +47 热心值 +38 收起 理由
chenmintian + 1 + 1 谢谢@Thanks!
ɑ_淘_氣_゛ + 1 + 1 谢谢@Thanks!
CYQDWY + 1 + 1 我很赞同!
嘉言懿行Jacky + 1 + 1 我很赞同!
杰洛特666 + 1 + 1 热心回复!
ysmjaycn + 1 + 1 我很赞同!
校门口的萌新 + 1 + 1 用心讨论,共获提升!
N0LL + 1 + 1 谢谢@Thanks!
JuDei + 1 + 1 谢谢@Thanks!
幻梦云生 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
火红辣椒一大把 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
mafei3709 + 1 + 1 热心回复!
清炒藕片丶 + 1 思路贼清晰,感谢分享
poisonbcat + 1 谢谢@Thanks!
hu330800 + 1 + 1 我很赞同!
djinni + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
goldengod + 1 我很赞同! 回来看看老星际
zbaby523 + 1 + 1 谢谢@Thanks!
赤夜 + 1 + 1 LZ能不能改个1.14版的客户端啊 1.08用着好不习惯的说 好多操作细节没有1.14.
Peace + 10 + 1 楼主可以参加论坛组织的动画大赛了
JuncoJet + 1 + 1 show me the daddy
坐久落花多 + 1 + 1 感觉再完善一下拿这个当毕业论文好像都可以。。。
阿浩samA丶 + 1 + 1 谢谢@Thanks!
天下武功 + 1 + 1 星际被你玩出了,高端、大气、上档次
leeairw + 2 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
ytfh1131 + 1 + 1 我很赞同!
panghong4567 + 1 用心讨论,共获提升!
SYWZWL + 1 + 1 我很赞同!
笙若 + 2 + 1 谢谢@Thanks!
偏执的少年 + 1 + 1 我很赞同!
为海尔而战 + 1 + 1 我很赞同!
fergus1987 + 1 + 1 谢谢@Thanks!
漫漫羽化 + 1 + 1 热心回复!
长安某 + 1 + 1 我很赞同!
KevinStark + 1 + 1 热心回复!
asq56747277 + 1 + 1 谢谢@Thanks!
睡觉 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
gaga520451 + 1 感谢分享 只是玩的人少了 很怀念这个游戏的时候 我还在上学
sangong + 1 + 1 我很赞同!
qws1855 + 1 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
smnhxy 发表于 2019-9-1 15:31
  2000年的时候我在沈阳,第一次玩星际玩不过,后来听说有秘籍这个东西,然后就去图书馆找电子书翻找星际秘籍,找到后抄本子上带回来~~~~~~话说我学习都没这么认真过。。。。。
推荐
追风纸鸢 发表于 2019-8-31 14:18
4#
a517753728 发表于 2019-8-31 13:21
技术还没达到你的标准 还是感谢分享 努力学习
5#
leroy81831 发表于 2019-8-31 13:30
这个厉害了
6#
Dino1209 发表于 2019-8-31 13:31
谢谢
收藏了
满满回忆啊,那时候去网吧抄星际很快乐!
7#
biglolo 发表于 2019-8-31 13:46
谢谢分享
8#
qws1855 发表于 2019-8-31 13:55
感谢分享
9#
someone01 发表于 2019-8-31 14:13
楼主 太调皮了!这个有点意思!
10#
alfred_woo 发表于 2019-8-31 14:27
懂了。把修改好的exe拷贝到游戏目录,运行,输入1回车,是不是直接回钱。搞定。
11#
forrest888 发表于 2019-8-31 14:35
有意思,感谢分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:禁止回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2019-9-19 01:40

Powered by Discuz!

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表