计算过程:
本人也玩过魔兽争霸的地图编辑,懂得一些JASS函数,JASS内存在随机数,既然是联网数据同步主机的游戏,那么随机种子一定是从主机方得到,种子数值就在“房间”名称附近的内存中!
就说明每个房间都公开有一个指定的游戏随机数计算的种子,魔兽开始游戏时,在载入游戏过程中会产生一次随机数
0012DB500B80C630ASCII“GetRandomInt”
GetRandomInt(0×0,0xA);该函数是在游戏Game.DLl模块中
该函数入口地址
“6F3B40A0″
返回随即值
当我们正常进入游戏-RD的时候会瞬间随机选出22位英雄
当然现在”炸弹人”是不允许开放在RD模式了!
-RD的时候在函数入口下断可以看到push的参数
就是最小值最大值
GetRandomInt(intmix,intmax)
函数retn的时候可以看到edi中的返回值就是相关英雄专属的整型地址!
如果加上SP模式就必须先算SP模式
过程是这样的
游戏载入进度随机一次GetRandomInt(0,0xA)
如果非SP模式直接-RD将随机一次GetRandomInt(1,1)
如果SP并且RD那么就先得算SP十次随机GetRandomInt并过滤重复成功返回
RD模式存在最大最小的计算过程GetRandomInt(1,2)从1和2中随机
如果==1则GetRandomInt(0×1,0x3B)==2GetRandomInt(0x3C,0×70)