2017-03-16 57 views
0

我有一个Linux可执行二进制文件(C或C++编译)。在某些时候,程序使用时间戳来产生随机数返回自定义时间戳

我需要实现一定的随机数序列,所以我想制作一个拦截系统调用的脚本(首选python)(AFAIK这是称为“挂钩”)来获取时间戳并返回一个自定义值直到我得到我需要的序列。我必须这样做,因为可执行文件不使用整个时间戳,就像timestamp % 10000

这可能吗?如果是这样,怎么样?

回答

1

这只能从内核内完成。所以你不能使用Python(或任何其他用户空间程序),你将不得不使用C.一个选项是在可加载的内核模块中执行它。 你可以找到一个例子,例如here

1

使用库预加载机制,可以截取和替换呼叫。对于已经与C库动态链接的二进制文件,您可以拦截调用time()并类似来模拟不同的时间。

开源的“libfaketime”项目已经实现伪造时间:https://github.com/wolfcw/libfaketime