对Diablo2游戏中的伪随机数进行研究
为暗黑FANS提供最客观的资讯…… diablofans.com.cn
Diablo2 在创建游戏的时候,首先调用d2game.dll中的InitRandom这个函数,在InitRandom函数中,通过QueryPerformanceCounter等手段设置随机数的初始值R0(64位)。因此可以认为,这个初始化应当是十分随机的。
随后,执行下列步骤:
1、使用R0初始化MonsterRegion,同时R1=Rand_Step(R0);
2、使用R1初始化objrgn,同时R2=Rand_Step(R1);
3、使用R2初始化sunitproxy,同时R3=Rand_Step(R2);
4、使用R3初始化QuestReward,同时R4=Rand_Step(R3)
至此,各种随机因素初始化完毕。
因此,可以认为,在Client端,登入游戏的那一瞬间,Server会将大量的游戏数据发送给Client,不排除这其中存在R0~R4的情况。如果存在R0~R3任何之一,那么可以在游戏开始的时候,通过捕获R0~R3,从而可以推断出最后敲石头的报酬将会是多少~~~
Server将R0~R3发送给Client应当是可能的,因为Client要根据这些随机数重现场景、怪物等。
一个可能的途径就是修改maphack程序,捕获所有Server发送过来的包,分析其中是否含有随机数数据。如果有,那就OK了~~
上一篇文章:对1.11B版本中的BugMF进行修正
下一篇文章:从RR的符文几率对暗黑破坏神2中伪随机数进行研究
相关阅读
..:: 版权声明 ::..
- 网站旨在为用户提供资源整合服务,所有数据均由用户上传或发布,并力求提供准确有价值的相关资源。.网站只做相关资源展示没有做具体测试,希望网友自己区分下 。
- 若涉及到侵权违法的链接,请联系我们将第一时间处理。
- 我们会定期进行数据更新和优化以确保信息的时效性和可靠性。致力成为一个资源整合平台,提供各种网站资源的下载和能满足用户的游戏资讯。
- 感谢您对我们网站的支持,我们将持续努力提供更好的资源整合服务,希望能满足您的需求。