吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 31243|回复: 88
收起左侧

[原创] 星际争霸V1.08人口无限DIY

  [复制链接]
丸子de爸爸 发表于 2019-8-20 19:01
本帖最后由 丸子de爸爸 于 2019-8-23 17:07 编辑

前言

相信大家都有玩过星际争霸人口无限的版本,以前很好奇他是怎么弄的,总觉得很高端,但是其实自己DIY一下,发现还是挺简单的。本次基于<font color="#FF0000">星际争霸v1.08</font>版本,来研究下怎么自己制作人口无限版本。

这也是第一次写这种文档,为了新手能看懂,写得比较冗长。如果自身有一定的基础,可以直接看步骤简介即可。

PS:所有内容只为学习研究,请支持正版。转载请注明出处。

PS2:所有内容均为个人见解,如发现有错误,欢迎指出,谢谢。

本次基础知识

为什么能修改软件?

大多数Windows软件都是通过启动器(exe文件)调用动态链接库(dll文件)来运行软件。在运行时,会把exe文件存放到内存中逐行运行。

于是我们可以知道,修改的方法可以有两种:

1.直接修改内存中的内容,但是由于每次运行,分配给程序的内存都不一样,所以这种方式只能在当前运行生效。下一次打开可能就无效了。

2.通过直接修改exe文件,这样每次读到内存的时候,就已经是我们需要的内容了。

我们本次使用的就是第2种方法。

怎么修改呢?

需要涉及一点逻辑,一般程序的组成就是:变量赋值,条件,循环。具体是啥意思,百度一下吧,不多用篇幅了。

一般修改程序限制条件,都是使用修改条件来达到。比如:你当前最大人口18,所以当人口大于18时,就跳转到不允许建造。于是当人口大于18这个就是条件,我们可以把它更改,变为大于18时,也不跳转,就完成了修改。

断点是什么?有什么用?

正常的程序运行,是自动逐行进行的,就像机关枪一样,打完一发自动压上下一发。断点打了之后,相当于中断了这个过程,变成了98K,打一下需要手动拉一下栓,也就是说,断点状态下,可以由你决定下一行是什么时候执行。

汇编语言

CALL : 调用方法。

test :用来判断某一个寄存器是不是为0,主要和J**跳转配合使用。

J**:J开头的,都是跳转,根据后面的两个字母决定跳转需要满足什么条件。

JMP:没有任何条件,直接跳转。

需要的软件及作用

CheatEngine(CE)主要用作搜索内存和定位条件代码块。类似于金山游侠。

OllyDebug主要用于重新制作新的EXE文件。

DxWnd 这是一个窗口工具,主要是用于将程序窗口化,方便调试。

步骤简介

  1. 先尝试CE直接搜索人口,发现可行,但锁定内存发现,不能实现功能,于是开始迂回。
  2. 开始理逻辑,建造 = 判断金钱,判断人口,都满足条件之后,进入制造。所以,肯定会涉及人口,所以从金钱入手。
  3. CE查到金钱地址,都不用基址。直接找到之后,Attach到进程,查看什么访问了这个值,然后找到点击制造关键逻辑附近。
  4. 通过对比成功制造和不成功制造的跳转,确定关键跳转。
  5. 改变关键跳转为始终按照成功制造逻辑。
  6. 检验。
  7. 通过OllyDebug打包。

详细步骤

DxWnd设置窗口

打开软件,打开“编辑”,选择“添加”,名称随便填,程序填星际争霸v1.08,starcraft.exe的路径。然后按照下图设置一下。

1.png
2.png
3.png

设置完成,右键打开,调整窗口到自己舒服的大小。

PS:这里选择了释放鼠标,之后每一次鼠标点击游戏窗口外,需要额外多点击一下,不然鼠标指针会被拉回游戏窗口。

CheatEngine内存搜索

首先要开始一局游戏,建议选择单人游戏的Original模式,选择人类战役模式Boot Camp。这个关卡是给我们做教程的,人口直接是17个,而且没有敌人会来攻打你,我们可以慢慢的测试。

1566288421413.png
打开CheatEngine,打开进程,选择星际进程。

1566288817881.png

正常最简单的逻辑就是通过右上角显示的人口数来限制人口制造。

于是,我们先查找先搜索现在的人口17,得到一堆纪录。

在游戏中建造一个农民,建造完成后,搜索人口18。(可以秘籍一下,建造速度)

我此处是只有两条纪录,然后分别右键更改地址中的值为16。

回到游戏中查看,发现人口数仍然是18,说明人口限制并不是这两个地址判断的。

4.png
5.png
6.png

简单的逻辑不通,开始迂回分析切入点,按照编程逻辑,我们可以得到下面的一个流程图

21.png

按照上图逻辑,我们只需要修改人口是否超过上限那个判断,就可以实现人口无限。

分析应该有一个方法来判断是否能够制造,而且理论上方法是包含金钱判断和人口判断的。所以尝试从金钱入手定位方法。

CheatEngine中点击“新的扫描”,搜索游戏中的水晶数,我这里是100。用枪兵A掉自己一个农民,再制造一个农民,之后搜索50。我这里就只有3条记录了,按照刚才的方法,右键修改每一个的值。每修改完一个,就切回游戏,如果游戏中的水晶变成了修改的值,就说明找到了地址。

1566291471968.png

我这里是改成了200,发现第一个地址就是,于是右键“查看什么访问了地址”。之后切换回游戏,再切换回CheatEngine会发现小窗内增加了很多数据。

7P@[C}{56RTBEZRW{5U~9RO.png

暂时不管这些数据,切回游戏窗口。点击制造一个农民(如果人口不够就A掉一个),再切换回CheatEngine,发现增加了几点数据。

7.png

选择新增的第一条数据,点击“显示反汇编程序”,附加到进程之后打开如下界面。

8.png

红色的线和箭头,代表从哪里跳转过来。这个部分的结构很像我们之前的流程图有木有,说明很有可能就是关键的逻辑了。

跳转逻辑分析

因为之前我们跟踪过来的逻辑就是正常的建造逻辑,所以可以逆推,两个跳转都是正常的逻辑执行。而上面一行的RET,代表return,应该是不正常的执行。所以以此类推,正常的判断逻辑在上方的CALL starcraft.exe+2280此方法中。

双击CALL starcraft.exe+2280那一行,可以得到内存地址为00402280。(你们可能不一样,内存动态的)

9.png

右键“转到地址”,输入刚才的内存地址。跳转到方法内。

10.png

在方法第一行按F5打断点,确保在游戏里有足够的人口之后,点击制造一个农民。

此时游戏会暂停,切换到CheatEngine,发现第一行左边有个">>",代表当前运行到哪一行。

按F8运行到下一行,重复F8直到看到J**的行。

如果J**红框位置显示“--->”说明跳转成立,如果成立,立刻添加注释(我一般是加normal,别随便1,2,3,有时候注释是有推测值的,可能把自己搞晕)。使用右键或者“Ctrl + Enter”都可以添加注释。

11.png

运行到RET,按下F9停止断点,让程序恢复运行。我们现在知道了正常制造逻辑的跳转路线。

12.png
再次回到游戏里,把人口占满(过程如果暂停了,切换到CheatEngine按F9就可以继续)。人口到达上限后,再次点击制造一个农民(小心金钱不够,该调钱调钱),此时又会触发断点。

此时就要注意了,每到达一个J**时,需要查看是不是有注释,有注释,需要跳转,没有注释说明不需要跳转。对比之前的注释,得到和正常跳转逻辑异常的点,为starcraft.exe+2372这一行的跳转,本需要跳转却没有跳转。

PS:地址如果和我的不一样,可以ctrl+M,打开/关闭模块地址,就可以看到相应的地址

13.png

双击当前行,将jnl改为jmp。点击确定。之后Ctrl+B,打开断点列表,删除断点。按F9,使程序运行。

14.png

返回游戏,再次制造农民,嘿嘿,人口无限达成。但是这只是达到了我们之前说的第一种方法,修改内存,接下来,修改EXE。

15.png

OllyDebug修改EXE

先在CheatEngine中纪录需要修改内存的地址。(前面有说,不一样的Ctrl+M)。我的是00402372,你们不一定。

16.png

打开OllyDebug,附加starcraft.exe

17.png

附加成之后,ctrl+G,输入之前我们纪录的地址,跳转到对应的内存位置。

18.png
接下来按照下图操作,保存文件,名称你自己想怎么取怎么取了。

19.png

20.png

之后,把你修改完的exe放到游戏的根目录,从你的exe打开游戏,就已经人口无限咯!!

结尾

第一次写这种技术文章,总担心自己表达得不够清楚,所以相对来说会啰嗦很多,希望大家多多提出宝贵意见。对破解感兴趣,有空可以多加深加深汇编语言的学习。但是汇编却又是比较乏味的,所以在开篇的基础知识中,只是加入了本次需要了解的汇编语句,希望能够更加平民。如果仍然又看不懂的,留言啦,谢谢大家。


人口无限突破200人口后续传送门

点评

6666666操玩红警搞星际,楼主啥时候在来一发魔兽(世界)  发表于 2019-8-21 16:15

免费评分

参与人数 23威望 +1 吾爱币 +27 热心值 +23 收起 理由
QTQToQTQT + 1 + 1 热心回复!
我心有尘 + 1 + 1 能搞定无限人口联网就完美了~~
多幸运遇见baby + 1 + 1 用心讨论,共获提升!
N0LL + 1 + 1 谢谢@Thanks!
Hmily + 1 + 6 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
某猫 + 1 + 1 谢谢@Thanks!
睡觉 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
明世隐 + 1 谢谢@Thanks!
StevenK + 1 + 1 谢谢@Thanks!
花二娘 + 1 操作一波电脑王会不会卡死!
liyonghaod + 1 + 1 谢谢@Thanks!
hhggbf + 1 + 1 谢谢@Thanks!
会飞的鱼66 + 1 + 1 谢谢@Thanks!
wyd66 + 1 + 1 星际争霸 经典中的经典,当年大学的时候宿舍8个人打通宵,非常怀念
一次过 + 1 + 1 谢谢@Thanks!
simon21 + 1 + 1 想问下,是不是所有1.8的都可以这样操作呢?
leeairw + 2 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
八月未央 + 1 + 1 我很赞同!
为海尔而战 + 1 + 1 我很赞同!
buybuy + 1 + 1 啥都看不懂 期待出成品
色调分离 + 1 + 1 我很赞同!
悍匪戾 + 1 + 1 热心回复!
天霸动霸tua + 1 + 1 鼓励转贴优秀软件安全工具和文档!

查看全部评分

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

 楼主| 丸子de爸爸 发表于 2019-8-22 14:14
首先先多谢大家的支持,然后对几个问题集中回复一下:
  • 目前这个人口无限是没有突破200人口限制的,原因也很简单,教程主要是讲思路,我怕内容太多,大家头晕。想要自己实现200人口破解,思路完全是一致的,大家可以先自己练习,下一篇文章我会给出怎么做。
  • 很多兄弟希望的放出exe,额,两个原因一直在纠结。一就是确实我只改了一行代码,如果连这都要放上来...好像教程没有了意义。再来就是,也不希望助长盗版,我还是比较喜欢暴雪游戏的。
  • 下篇文章暂定还是星际, 其实内容也简单,把星际长串的作弊指令,变成输入简单的1,2,3就行。同时也将破解200人口限制。


PS:大家不妨按照这种思路试试,能不能让自己的星际做到,钱不够,也能造东西呢?
再次多谢大家!
wendy123 发表于 2019-8-21 15:02
o651560441 发表于 2019-8-21 15:12
本帖最后由 o651560441 于 2019-8-21 15:13 编辑

谢谢楼主的分享,星际争霸还真是怀念呢,楼主你能放出修改后的文件吗
jszjyz 发表于 2019-8-21 15:28
很经典的一款游戏,已经10多年未玩这个了。
 楼主| 丸子de爸爸 发表于 2019-8-21 15:56
wendy123 发表于 2019-8-21 15:02
LZ,帝国时代3用这方法可以吗

这我没有试过,但是我这里分享更多的希望是思考方式。整体的做法都是类似的,只是在细节上会不同..你这么一问,感觉可以做一篇帝国时代3的破解了
 楼主| 丸子de爸爸 发表于 2019-8-21 15:58
o651560441 发表于 2019-8-21 15:12
谢谢楼主的分享,星际争霸还真是怀念呢,楼主你能放出修改后的文件吗

先谢谢支持,修改后的文件我倒是无所谓,但是我也是第一次分享,不知道会不会侵权啥的,本来是学习研究,搞得很复杂也麻烦。也希望有版主能够站出来回答下
liouping11 发表于 2019-8-21 16:20
支持下楼主,谢谢楼主照顾我们这种小白
xingye688 发表于 2019-8-21 16:30
要是能更新下sb520反作弊器就好了
头像被屏蔽
bant 发表于 2019-8-21 17:26
提示: 作者被禁止或删除 内容自动屏蔽
冥界3大法王 发表于 2019-8-21 17:46
本帖最后由 冥界3大法王 于 2019-8-21 17:56 编辑

@丸子de爸爸
楼主 当年有个游戏叫 “圣眼之翼”,非常的好玩,游戏不大!单机的。网上有游戏修改器,不过感觉不如自己汇编过的敌人好玩,有没有兴趣我们合作个变态版来玩。
一共5队,并可用键盘 12345编队,最多带30个人上阵,当年修改过改成携带80口人上场,结果游戏过面后
计算经验值时就卡死了,能不能用你的方法再给我表演一下呢????????????谢谢!!!!!
不过,我喜欢弄个侦察兵,把雷数修改为255或无限;然后全屏布雷,专炸敌人黑法师。
或者买来 一队 侦察兵,若死掉后,屏上就有一坨地雷。 若是 侦察兵死了就会把旁边的侦察兵炸死,这样屏幕一个一个侦察兵小队都炸死了。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-12-22 22:13

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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