首页
论坛
课程
招聘
[讨论]假如有一款很老的网络游戏客户端需要被反编译为C或C++
2018-6-6 19:21 5468

[讨论]假如有一款很老的网络游戏客户端需要被反编译为C或C++

2018-6-6 19:21
5468

是这样的,我有一朋友开游戏私服的。这个游戏早停了,源码也买不到。后来有人通过一步步仿真实现了这个游戏的服务端,于是就有了私服。但一直没有客户端,我朋友于是想将这个老游戏的客户端逆向回C或C++程序。
这个游戏是2004年的,完全没有安全机制,也没混淆之类,使用很老的d3d写的。
请问大家觉得逆向这样一款老游戏的客户端的工作量大吗?
如果要你来预测的话,需要花多少天的有效时间完成,又愿意收取多少费用呢?
(当然不必完全精确)


看雪2022 KCTF 秋季赛 防守篇规则,征题截止日期11月12日!(iPhone 14等你拿!)

收藏
点赞0
打赏
分享
最新回复 (26)
雪    币: 360
活跃值: 活跃值 (288)
能力值: ( LV2,RANK:140 )
在线值:
发帖
回帖
粉丝
又出bug了 活跃值 2 2018-6-6 20:09
2
0
我之前是做游戏的游戏不算大,客户端的代码c++和lua,代码量大概在70W行左右(当然有一些遗留代码,暂时没有删掉)
现在做逆向,从工程量来说:如果让我干这个,我立马把老板炒了
雪    币: 483
活跃值: 活跃值 (813)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
天荒怨未泯 活跃值 2018-6-6 22:58
3
0
  别逆了  找开发吧
雪    币: 25
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
mr清扬 活跃值 2018-6-7 08:40
4
0
就算给源码...这个工作量也够呛啊.
就算给源码这个价格也不便宜.
70w行,光看完都得一个月时间,..
雪    币: 4
活跃值: 活跃值 (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Msai 活跃值 2018-6-7 09:09
5
0
又出bug了 我之前是做游戏的游戏不算大,客户端的代码c++和lua,代码量大概在70W行左右(当然有一些遗留代码,暂时没有删掉) 现在做逆向,从工程量来说:如果让我干这个,我立马把老板炒了
炒老板,  大气!

逆向一个游戏的完整代码,  还不如开发一个
你这太费劲了,  不说时间问题,  人都不一定找得到
雪    币: 8611
活跃值: 活跃值 (762)
能力值: ( LV5,RANK:71 )
在线值:
发帖
回帖
粉丝
joker陈 活跃值 2018-6-7 09:30
6
0
逆个windows更靠谱。
雪    币: 559
活跃值: 活跃值 (106)
能力值: ( LV9,RANK:270 )
在线值:
发帖
回帖
粉丝
hanbingxzy 活跃值 4 2018-6-7 10:50
7
0
@又出bug了  的确霸气!

实际上,这个游戏我断断续续地也分析好长时间了。我原本想通过shellcode注入dll,然后将原游戏的的main函数,跳转至dll里的main函数,然后就这样一个一个地把原游戏里的函数给逆向了放到dll里,直至完全逆向完或者不必再逆向。

不过,跳至dll的main后,再跳回来会使得游戏窗口变黑,不明原因,于是我也就没有继续逆向了。应该是技能还不到家 

我也想过以开发的方式重新实现这个游戏,可惜我不开发过游戏,引擎之类都不熟。虽然可以从游戏里提供各种图片、声音资源,但想用一新引擎表示恐怕还是太难。

其实我那朋友问我你干不干,价格你说!  有人要八万,他说太贵,而他说二万,对方不愿意。
雪    币: 6991
活跃值: 活跃值 (914)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
战马 活跃值 2018-6-7 12:26
8
0
直接拿客户端来用不就可以了,逆源码出来干什么.要修改游戏功能,就hook原版程序改一下就可以了
雪    币: 72
活跃值: 活跃值 (430)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
rongkao 活跃值 2018-6-7 12:37
9
0
hanbingxzy @又出bug了 的确霸气! 实际上,这个游戏我断断续续地也分析好长时间了。我原本想通过shellcode注入dll,然后将原游戏的的main函数,跳转至dll里的main函数,然后就这样一个一个 ...
十八萬  給我  我都不干
雪    币: 288
活跃值: 活跃值 (207)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
瀚海云烟 活跃值 1 2018-6-7 13:33
10
0
我一定是没睡醒,继续睡
雪    币: 13862
活跃值: 活跃值 (1174)
能力值: ( LV9,RANK:147 )
在线值:
发帖
回帖
粉丝
orz1ruo 活跃值 2018-6-7 13:39
11
0
我一定是没睡醒,继续睡,2万都不够来2次大宝剑,有这个精力,还不如直接重新高仿一个了
雪    币: 559
活跃值: 活跃值 (106)
能力值: ( LV9,RANK:270 )
在线值:
发帖
回帖
粉丝
hanbingxzy 活跃值 4 2018-6-8 09:59
12
0
雪衫 我一定是没睡醒,继续睡,2万都不够来2次大宝剑,有这个精力,还不如直接重新高仿一个了
没做过这块业务,经验少,所以做做梦,开心一下嘛 
你说的高仿就相当于模仿原游戏重新开发一个了,我也有过这种想法,不过我也没做过,所以想问问大家的怎么看。
总体来看,如果真要做这个,应该需要逆向和开发一起进行,因为一些资源文件的格式、游戏协议(这个我逆向出来了)、操作参数等都需要通过逆向来提取。而有了这个些数据,还需要编程,不管是自己写还是从原程序里逆向出来。
其实只要能得到这游戏的源码,是主要以逆向来实现,还是主要以开发、高仿来实现都是可以的。就是这两个方法的偏重是可以任意的。
雪    币: 559
活跃值: 活跃值 (106)
能力值: ( LV9,RANK:270 )
在线值:
发帖
回帖
粉丝
hanbingxzy 活跃值 4 2018-6-8 10:09
13
0
战马 直接拿客户端来用不就可以了,逆源码出来干什么.要修改游戏功能,就hook原版程序改一下就可以了
你说的方法不错,相当于外挂式,半开发式的。这样实现也可以,只要能实现需求。
不过要说不好的地方,那就是强迫症啦,感觉难受,然后不能随心所欲里想改哪改哪。
但我觉得可以把这种方式做为过渡,就像我在7楼有介绍的,我之前就是想通过注入一个dll,进而hook一些功能函数,然后重新按自己的需求实现那些逻辑。
雪    币: 559
活跃值: 活跃值 (106)
能力值: ( LV9,RANK:270 )
在线值:
发帖
回帖
粉丝
hanbingxzy 活跃值 4 2018-6-8 10:12
14
0
天荒怨未泯 [em_1] 别逆了 找开发吧
开发也行啊,能不能给些建议或看法?
雪    币: 2816
活跃值: 活跃值 (2054)
能力值: ( LV13,RANK:240 )
在线值:
发帖
回帖
粉丝
IamHuskar 活跃值 4 2018-6-8 10:13
15
0
hanbingxzy 你说的方法不错,相当于外挂式,半开发式的。这样实现也可以,只要能实现需求。 不过要说不好的地方,那就是强迫症啦,感觉难受[em_19],然后不能随心所欲里想改哪改哪。 但我觉得可以把这种方式做为过 ...
2W你确定你睡醒了??
雪    币: 559
活跃值: 活跃值 (106)
能力值: ( LV9,RANK:270 )
在线值:
发帖
回帖
粉丝
hanbingxzy 活跃值 4 2018-6-8 10:18
16
0
rongkao 十八萬 給我 我都不干
换个角度看,就是你认为如果有人需要向你购买这个服务,那么你会觉得你提供的这个服务的价格是高于十八万的?
雪    币: 20
活跃值: 活跃值 (329)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
无脸男 活跃值 2018-6-8 10:33
17
0
做挂和反挂可以逆向,至于开游戏还是重新开发
雪    币: 2443
活跃值: 活跃值 (41)
能力值: ( LV3,RANK:35 )
在线值:
发帖
回帖
粉丝
笨蛋o 活跃值 2018-6-10 11:24
18
0
18万也是不可能的,毕竟做游戏这块不像网页那种有廉价劳动力
雪    币: 457
活跃值: 活跃值 (203)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
许瑞 活跃值 2018-6-10 12:07
19
0
如果对游戏逻辑很熟悉      可以直接高仿一个                外挂式的基本就是维护原功能不动        做反挂
雪    币: 230
活跃值: 活跃值 (356)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
asuralove 活跃值 2018-6-10 13:10
20
0
逆向服务器端只需要套用现有的服务器框架然后逆推出协议就可以了,逆向客户端如果仅仅是实现一个脱机还可能,要实现游戏的所有功能,那真的不如重新开发一个。
雪    币: 267
活跃值: 活跃值 (85)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
chsml 活跃值 1 2018-6-10 14:43
21
0
如果是要自己逆向然后实现客户端,那开发方向至少需要3个熟手(不包含美术等其他人员)  2个开发  1个逆向
逆向负责解析网络协议格式、资源文件格式(脚本、图像、音乐、地形等)
开发人员负责重现实现功能
工作量不好评估,得看具体游戏,前期考察后才知道(游戏所使用的引擎是否大量应用、贴图格式是否行业标准、NPC脚本怎么实现等都影响工作量)
外包的话,2万只够逆向人员3-5个工作日的薪资
自己的团队,逆向2万月薪,开发2人共25000/月
雪    币: 267
活跃值: 活跃值 (85)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
chsml 活跃值 1 2018-6-10 14:50
22
0
这种项目,老板能说出给2万,就直接不用理他了。
程序员、安全、逆向人员别把自己搞成廉价劳动力,砸了自己行业的饭碗
雪    币: 559
活跃值: 活跃值 (106)
能力值: ( LV9,RANK:270 )
在线值:
发帖
回帖
粉丝
hanbingxzy 活跃值 4 2018-6-10 19:43
23
0
chsml 这种项目,老板能说出给2万,就直接不用理他了。 程序员、安全、逆向人员别把自己搞成廉价劳动力,砸了自己行业的饭碗
同意,有时我们真低估了自己技术的价值。
雪    币: 12511
活跃值: 活跃值 (2335)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
白菜大哥 活跃值 2018-6-11 11:58
24
0
如果是pc游戏,有个折衷的办法,就是先hook一些win  api,替换到自己的dll里面,自己的dll先中转一下,把文件读取,ui显示部分给接管了。后期可以慢慢在自己的dll通过栈回朔来分析逻辑。毕竟客户端部分无外乎网络连接和ui显示,至于逻辑你模拟了ui的话,也不需要怎么分析了,反正效果一样嘛
雪    币: 204
活跃值: 活跃值 (30)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ranhoo 活跃值 2018-6-18 08:10
25
0
我逆向过很多游戏,目前正在高仿蓝月传奇。因为都是页游,客户端是flash  as3的,所以工作量不大,而如果是C,请你直接放弃,不如自己从新写一个快!
游客
登录 | 注册 方可回帖
返回