1.进入终端之后,查看random.c源码。
2.发现rand()函数没有设置种子,系统会给该函数设置一个默认的种子。可以在本地机器上进行验证,发现每次运行出来的值都固定为41。
3.gdb调试random可执行程序,并定位于rand函数调用处。
4.在*main+13处设置断点,并运行程序到断点处。
5.查看此时的寄存器eax的值,而里面的值就是通过rand函数生成第一个结果。
6.计算 0x6b8b4567^0xdeadbeef=3039230856L
,即可解决本puzzle。