1.题目
2.Ida反汇编
3.根据上图代码,分析基本流程。
流程:随机种子生成随机数,对比随机数和输入的数字,连续正确10次就成功。
初看好像不可能成功,怎么可能猜对随机数十次?其实srand生成的随机数是伪随机数。其实就是一个很长的数字字符串,然后根据种子定位到这个字符串某个点,然后每次生成随机数就读一个数字字符。也就是说,如果我们的种子是一样的,相同的随机次序我们得到的随机数是一样的。
于是,现在的问题变成了我们怎么得到程序的种子?或者我们是否可以修改程序的种子?
查看c源码
流程:随机种子生成随机数,对比随机数和输入的数字,连续正确10次就成功。
初看好像不可能成功,怎么可能猜对随机数十次?其实srand生成的随机数是伪随机数。其实就是一个很长的数字字符串,然后根据种子定位到这个字符串某个点,然后每次生成随机数就读一个数字字符。也就是说,如果我们的种子是一样的,相同的随机次序我们得到的随机数是一样的。
于是,现在的问题变成了我们怎么得到程序的种子?或者我们是否可以修改程序的种子?
查看c源码