[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
回复 7# Demon


    核心的那两行如何得到的, 214013 ,2531011这两个常数?
-------------------
友情提示:获取时间的部分可以很精简的;

TOP

原来老帖就有了这俩常数:
http://bbs.bathome.net/thread-10146-1-1.html
  1. 下面我们到msvcrt.dll里看看这个rand函数到底做了什么. 下面这个就是rand函数
  2. msvcrt&rand()函数  ;以下就是msvcrt&rand函数,简化下给大家看
  3. push 1
  4. call FlsGetValue  ;返回值eax 是一个结构的指针(这个结构与纤程有关,我们不管其具体含义)
  5. mov ecx,[eax + 14h]  ;[eax + 14h]对我们的随机数 至关重要 !从计算过程可以看出,它直接影响随机数的计算!
  6. imul ecx,ecx,343FDh  ;ecx里就是从[eax + 14h]取出来的值,看它在计算了
  7. add ecx,269EC3h
  8. mov [eax + 14h],ecx  ;这里更新了 [eax + 14h],这样下次我们再取随机数,再用到[eax + 14h],那么他已经不是原来的值了
  9. mov eax,ecx   ;这样每一次的数值才可能不同
  10. shr eax,10h
  11. and eax,7FFFh  ;与运算保证了随机数的范围0~32767。此时的eax中的值就是 我们最后 得到的%random%的值
复制代码

TOP

返回列表