为了完成一项与计算机安全相关的任务,我需要修改时间函数以返回特定日期。我需要时间函数返回2016年1月1日至2018年6月15日之间的日期。然后,我使用以下命令来重载和挂钩时间函数:
gcc -Wall -fPIC -shared -o newtime.so newtime.c -ldl
export LD_PRELOAD=$PWD/newtime.so
这是我修改过的时间函数版本:
#define _GNU_SOURCE
#include <dlfcn.h>
#include <time.h>
time_t time (time_t *t)
{
long int seconds = 1485907200;
time_t modifiedTime = (time_t) seconds;
return modifiedTime;
}
每当我运行这个实现时,它都会说返回的日期是1969年12月31日19:00:00。我是只是格式化Linux纪元后的时间不正确还是犯了更严重的错误?我已经尝试使用常规int而不是long int,但仍然遇到相同的问题。对于我的错误的一些见解将非常有帮助。