- 注册时间
- 2011-3-6
- 最后登录
- 1970-1-1
该用户从未签到
|
演示课目:天龙八部找地图名基址
演示方法:CE+全程OD
演示作者: 论坛ID:丹哥
演示时间:一课时
游戏版本:天龙八部.00.1701
演示目的:通过本视频的演示,使广大朋友们熟悉使用CE+全程OD来分析游戏,回溯基址。
特别鸣谢:郁金香老师,重楼,清风
演示实施:
1.先登陆游戏,打开CE 附加游戏进程
2.查看当前地图名:无量山, 我们用CE的文本类型来搜索
3.切换地图后,当前地图名:大理 再用CE来搜索 大理
4.切换地图,再次搜索当前地图名
5.出现一个内存地址,C98 CE到此为止
6.开始转入到OD进行全程分析 注:开始我是用的郁金香老师发的那个OD版本,但是跳转到游戏领空后发现代码有问题,好难进行跟踪,所以换成一个原始的版
本,当然并不是说OD不行,可能是那个OD版本在哪个地方进行了设置,当时也不知道要在哪里修改,所以就直接用这一个版本了,这个问题说明,大家如果出现
找不出来,可以尝试换一个工具,或是换一种方法来进行查找,在找基址这个问题上,没有什么一个固定的方法,方法有很多种,关键看大家要怎么去灵活运行
了。
7.进OD附加游戏进程, F9运行后,用HW 09318C98 开始下硬件写入断点,用别的内存断点也可以
8.跳转到游戏领空 用ALT+F9 或CTRL+F9 都可以,具体是什么原因,大家可以看一下看雪的加密解密第三版的电子书
9.跳到游戏领空后,当前的代码是mov eax, dword ptr [esi+50]
10.CTRL+A 进行游戏分析,显示游戏内的函数,然后用OD来找ESI的来源,
11.上面这一条mov esi, ecx 说明 ESI=ECX 现在找ECX 我们这个函数内没有看到有什么对ECX赋值,现在回溯到上一级CALL中看一下
12.转到上一级后,依然没有看到有什么对ECX赋值,接着回溯 注,函数头下断,进游戏更换地图,断下后,如果函数头没有跳转,就从堆栈中返回
13.来到上级函数里,从下往上找mov ecx, dword ptr [esi+3790] 找到了 现在来找ESI的来源
14.mov esi, ecx 再找ECX 这一级函数里没有给ECX赋值的语句,再回溯到上一层
15.mov ecx, dword ptr [68C24C] 感觉像是基址了,现在我们用CE来进行验证
16.先整理一下 [[68C24C +3790]+50]
17现在对比一下,可以正常显示的地址是C98 用[68C24C +3790]的地址是 c38 这个地址和开始的地址正好相差偏移而我们开始找出来的第一个是
+50,所以我们用+60 这个偏移来完成
加密与解密第三版
希望对大家有帮助
|
|