首页
社区
课程
招聘
近日解剖"帝国时代"练手,发现分析算法太难了~
发表于: 2006-10-29 09:02 8751

近日解剖"帝国时代"练手,发现分析算法太难了~

2006-10-29 09:02
8751
这段时间练习解剖微软的古董游戏"帝国时代".我现在关心的是它在游戏中输入特定的某个字符串时,就可以实现特定的动作.也就是所谓的"作弊码"功能,如果检查出该字符串不是作弊码,那就做为一般的聊天信息显示在游戏屏幕上.我想搞清楚它是如何进行检查判断的.同时我想以此为着手点,找到游戏中各资源的存储位置.比如当我输入"ROCK ON"这个命令,石头就增加1000.那我就跟踪游戏是如何处理这个命令的,从而实现找到石头存储位置的目的.

就是这样一个非常简单的目标,实现起来却是如此的艰难.仅仅为了找到输入串处理函数,就费了好多天的时间,什么办法都想出来了.最后终于找到,然后又以此函数为线索,不断向下追踪,又费了N牛N虎之力,总算找到了那个输入串的关键判断函数.

然而当我怀着进入激动万分的心情T进那个可爱的函数后,才顿感头昏脑涨.简直要崩溃啦,从流程图来看那简直不是一个函数,完全就是一个超复杂的集成电路图纸.经常看到网上很多高手在破解软件,分析算法时谈笑风生,似乎不当回事.但看到此情景,我实在无法还相信会有人能够就凭借一台PC机,就硬生生地把这个东东的算法过程分析出来.

下图中仅仅只是其中很小的一块部分的截图.但看起来已经有种震撼感了.MS那些变态的程序员,实在是不可思议~~

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (27)
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
帝国时代几啊
2006-10-29 09:06
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
当然是帝国最后也是最经典的版本:征服者了.前几年一直沉迷在其中不能自拔,现在突然觉得那样完全是游戏在玩人,所以想换个玩法.哈哈

我觉得微软的东西适合我等菜鸟作为入门教材和练习范本用.它的软件一般都非常大气,严谨,规范.极少有那些非常变态的反跟踪陷阱和暗桩.象这个帝国时代游戏,甚至连壳都没有加,游戏中的很多字符串直接反汇编就能看到了.在这几天解剖它的过程中,就感觉学到了不少东西.还是很有乐趣的~~
2006-10-29 09:24
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
这流程图用的是什么工具??
2006-10-29 19:40
0
雪    币: 213
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
最初由 loveyhh 发布
这流程图用的是什么工具??


IDA pro
2006-10-29 19:56
0
雪    币: 300
活跃值: (412)
能力值: ( LV9,RANK:410 )
在线值:
发帖
回帖
粉丝
6
游侠之类的试试?搜到地址后下内存写断点?
2006-10-30 00:21
0
雪    币: 222
活跃值: (10)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
7
我觉得M$的程序比一般的程序容易调试,因为条理很清晰
2006-10-30 00:27
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
6楼的兄弟,你在这个坛子上提起"金山游侠"这样的弱智东东,不觉得是对全体版友们的嘲笑吗?哈哈,如果用"金山游侠"就能把帝国里各资源的存储位置给找出来,比而盖子早该一头撞死算了.

昨天又研究了一下那个关键函数,还是取得了一点小进展.那个函数一进去后,马上就对输入串进行了复杂的加密处理,然后再用这个加密后的串进行后续的操作,比如判断是哪一条作弊码等等.分析到这里,我不能不极度的佩服当年第一个找出作弊码的人,简直就是超级牛人.如此复杂的算法.他居然能破译出每一条作弊码.简直不可思议.我现在能做的就是绕开这些算法过程,直接找到关键点.对我等这样的菜鸟来说,暴力永远是最管用的,哈哈哈哈~~

7楼说的很对,解剖微软的程序,绝对是一种充满乐趣的学习过程.每一天都感觉到自己在进步.我觉得类似我这样对逆向技术感兴趣的新手都应该以此入手,不应该是论坛上很多人讲的那样,一来就去破解什么"注册码",那样是学不到什么真东西的.

而且把逆向技术仅仅用于那些见不得人的事情,本身就是对技术的一种滥用和侮辱~
2006-10-30 07:50
0
雪    币: 339
活跃值: (1510)
能力值: ( LV13,RANK:970 )
在线值:
发帖
回帖
粉丝
9
最初由 指令CC 发布
6楼的兄弟,你在这个坛子上提起"金山游侠"这样的弱智东东,不觉得是对全体版友们的嘲笑吗?哈哈,如果用"金山游侠"就能把帝国里各资源的存储位置给找出来,比而盖子早该一头撞死算了.

昨天又研究了一下那个关键函数,还是取得了一点小进展.那个函数一进去后,马上就对输入串进行了复杂的加密处理,然后再用这个加密后的串进行后续的操作,比如判断是哪一条作弊码等等.分析到这里,我不能不极度的佩服当年第一个找出作弊码的人,简直就是超级牛人.如此复杂的算法.他居然能破译出每一条作弊码.简直不可思议.我现在能做的就是绕开这些算法过程,直接找到关键点.对我等这样的菜鸟来说,暴力永远是最管用的,哈哈哈哈~~

7楼说的很对,解剖微软的程序,绝对是一种充满乐趣的学习过程.每一天都感觉到自己在进步.我觉得类似我这样对逆向技术感兴趣的新手都应该以此入手,不应该是论坛上很多人讲的那样,一来就去破解什么"注册码",那样是学不到什么真东西的.
........


金山游侠游侠哪里弱智了?我认识一个搞破解的大哥,90年代初没网络的时候就在西交大搞破解,现在还用金山游侠,工具没有弱智之分,不懂得用工具的人才弱智。微软的游戏写的一般,有空可以去看看暴雪的,就把暗黑破坏神配置文件看一下就行,那个写的比较好,也方便分析学习。
2006-10-30 07:56
0
雪    币: 257
活跃值: (11)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
10
"一来就去破解什么"注册码",那样是学不到什么真东西的" 同感!
我也只破解过一些软件,只写了唯一一款软件的注册机就再也不往破注册码方面想了。
我更多是去理解软件作者的写作流程及方法。
正好前阵子要写个定比分点的公式,写了半天结果都不对,后来逆向别人的程序才恍误,原来要用浮点数进行计算,并不是我程序的公式没写对
2006-10-30 08:07
0
雪    币: 12
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
需要这么复杂吗?用 fpe 之类找到内存地址(找不到是使用能力问题),bpm之,在判断语句附近+上自己的程序那想加什么作弊码都可以了.
2006-10-30 13:26
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
什么金山游侠,GM,FPE这些都是古老的DOS和98时代的工具,现在早就销声匿迹了.他们本身针对的用户也是游戏迷而不是Cracker.其操作也是非常傻瓜化的.虽然人的一个重要的因素,但是太极端地强调人就是偏激了,你总不可能说用DEBUG来破解现在的大型游戏吧.

同时游戏设计者要想对付这类傻瓜工具简直是太容易了,那些资源值全都是加了密的.增加和减少都要通过非常复杂的算法过程.你在屏幕上看到的XXXX,在内存中也许是一大段数据代码.游侠,FPE这些不完全是在搞笑吗?楼上的牛人,如果你仅用这类傻瓜工具就能找出帝国里"石头"的存储位置,我佩服你.我这样的白痴菜鸟虽然没什么能力,但至少还是知道什么可行,什么是不可行的.

现在已经跟踪到了作弊码分支处理那个函数,看到流程图上那一个个不同作弊码的处理出口,还是很爽.不过更复杂也来了,以ROCK ON来说,它的处理实际上是通过游戏中的通用浮点运算引擎来处理的.大量的浮点运算过程加上它本身又是游戏中的一个底层核心模块,流程极度的复杂,要想在这里面追踪ROCK ON的处理过程,确实太刺激了.
2006-10-30 15:17
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
最初由 kryso 发布
需要这么复杂吗?用 fpe 之类找到内存地址(找不到是使用能力问题),bpm之,在判断语句附近+上自己的程序那想加什么作弊码都可以了.

=======================================
编写WinXP需要那么复杂吗?随便找个EDIT工具,输入一些代码(输不进去是能力问题),编译之,在子程序里加上自己的代码,想要什么功能都有了.

造航天飞机需要那么复杂吗,随便找几块铁皮.....

造原子弹需要那么复杂吗?随便找几斤铀235
......

这年头牛人多啊~~哈哈
2006-10-30 15:22
0
雪    币: 340
活跃值: (922)
能力值: ( LV9,RANK:220 )
在线值:
发帖
回帖
粉丝
14
LZ到此交流的心态和方法有问题。
2006-10-30 15:51
0
雪    币: 12
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
最初由 指令CC 发布
=======================================
编写WinXP需要那么复杂吗?随便找个EDIT工具,输入一些代码(输不进去是能力问题),编译之,在子程序里加上自己的代码,想要什么功能都有了.

造航天飞机需要那么复杂吗,随便找几块铁皮.....

........


别的不说,金山游侠找不到石头的地址确实是你的能力问题.
按照你的理论,如此弱智的工具都用不好,分析程序成这个样子也是理所当然的.
2006-10-30 16:04
0
雪    币: 175
活跃值: (2331)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
IDA pro做的不错
2006-10-30 16:23
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
就在刚才我已经实现了我的目标:不但确定找到了石头的存储位置,其他几种资源的位置也基本上都找到了.这全是一个白痴菜鸟用SICE加IDA硬生生跟踪出来的.接下来该好好整理分析一下跟踪过程了.

有人说我的心态有问题,我就不明白了,我已经说了,解剖它完全是一种学习的目的,是一个什么都不懂的小菜鸟在练习逆向分析.但是很多牛人跳出来说白痴,为什么不用金山游侠这样的高科技工具?我不知道到底是谁的心态有问题.

同时说用金山游侠,FPE就可以找出来的牛人,只要你能说出4456的石头在内存中的表示代码是什么,我就服了你.

按道理说技术的领域应该是很纯真的,但现在的网络早已经不是那样了.就象这个论坛一说到逆向分析,就是搞破解,做外挂.就是玩了命的想搞钱.没意思...以后我会很少发言了.我这人还是和机器比较说得来..
2006-10-30 16:50
0
雪    币: 257
活跃值: (11)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
18
激动了激动了
以后你有机会学好编程,理解起这些算法会轻松很多的
2006-10-30 19:27
0
雪    币: 340
活跃值: (922)
能力值: ( LV9,RANK:220 )
在线值:
发帖
回帖
粉丝
19
说你心态有问题的原因:
你是来提出问题,寻求帮助吗?不是。
你是发表心得,把你的知识和经验分享给他人吗?也不是。
那你是干什么来了?炫耀。
2006-10-30 23:53
0
雪    币: 300
活跃值: (412)
能力值: ( LV9,RANK:410 )
在线值:
发帖
回帖
粉丝
20
随口说个思路而已,对于游戏没有经验,仅限于游侠之类的。游侠搞不定的游戏就不玩了。

期待楼主的分析。

或者作弊码是官方放出来的。
2006-11-1 10:34
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
最初由 killl 发布
随口说个思路而已,对于游戏没有经验,仅限于游侠之类的。游侠搞不定的游戏就不玩了。

期待楼主的分析。

或者作弊码是官方放出来的。

  作弊码,都是官方放出来的,这是肯定的事。帝国没调过,别的游戏,比如英雄无敌,用金山游侠很容易找到游戏数据在内存内的存放格式,比如说英雄代码,兵种代码,技能代码之类,从这个角度入手,逆向应该简单很多吧,楼主走的是事倍功半之路,不过还是很佩服。
2006-11-1 13:55
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
天哪,为什么总要提起那个什么游侠,我真的要崩溃了,就连人家金山公司都已经停止对它的支持.我看了一下它的网站,上面已经没有任何关于游侠的信息.

同时你们太小看征服者这个游戏,它毕竟是软件业No.1微软的经典巨作.在2000年开始发行,到如今这么多年过去了,世界上还没有流行过关于它的任何作弊器或外挂.我想这在单机游戏中是极少见的.由此就可以想象它的加密保护机制有多强大和完善.而有些人却总是要在这个游戏面前提起游侠这些东西.哎..

现在我在研究它游戏存档部分的加密处理过程.这简直要比找出资源位置难上十倍.现在才发现微软要是搞起鬼来一点不是吃素的,变态的反跟踪手段和技巧开始出现.彻底打破了开始我以为微软不会玩阴招的观念.我是不可能搞定它的了,不过就当一种学习吧.
2006-11-1 17:42
0
雪    币: 209
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
我当年用游侠找到征服者的资源的地址,可惜每次启动地址都不一样,也曾找到一外国人写的作弊器,可以全部变成9999999999~~~当时极钦佩此牛人
2006-11-1 17:54
0
雪    币: 125
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
我觉得暴雪的游戏编程水平要高得多,lz有时间的话可以看看
2006-11-1 19:16
0
雪    币: 324
活跃值: (91)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
25
楼主的毅力是比较好的。

分析游戏内存地址,配合金山游侠(用GM8好点)扫描内存中的数据变化还是很有用的,调试软件无法自动扫描内存中数据段的变化的。

不过,楼主的主要目的不是为了修改游戏,而是为了学习,所以不用金山游侠之类也是可以理解的。

大家跟楼主思考方向和目标不同。所以还是少点苛责,多点支持。

支持。顶起。呵呵!
2006-11-1 21:04
0
游客
登录 | 注册 方可回帖
返回
//