能力值:
( LV4,RANK:50 )
|
-
-
2 楼
可能eax是地址,[eax+14]才是内容。
|
能力值:
( LV9,RANK:370 )
|
-
-
3 楼
也许是没有Rand没有初始化。
不妨用 : RDTSC获得随机,这个不需要初始化.
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
我是来看别人的程序的
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
[QUOTE=ronging;1003312]可能eax是地址,[eax+14]才是内容。[/QUOTE]
EAX不是存函数返回值的吗?
难道rand返回的是一个地址?
|
能力值:
( LV5,RANK:60 )
|
-
-
6 楼
第一行函数返回后eax不是rand的返回值, 他在77c09f25函数结束时被赋值esi(一般都是地址)
然后下面的计算才是真正计算随即数的过程
1。77c09f25 被调用,返回值写在eax+14h (首次有一个预设值被使用)
2。 eax+14h的内容记录下来 ecx
3。 经过计算, 将结果记录写回 eax+14h, 该值会作为下次77c09f25被调用时计算的种子
4。再次对ecx 计算, 然后结果赋给eax 作为rand 返回值
这样,每次计算的中间结果会作为下次计算的种子, 来保证最终为随即数的规模尽量大
这样做是因为rand是一个伪随机数(你运行两次程序,每次记录10000条,你会发现他们是一样的)
第一个种子是写死的,选择理由就是用这个种子产生的序列最长
还有一个函数是设置种子的,忘了是什么了
|
|
|