GetSystemTimeAsFileTime函数
【摘要】 最近goland证书过期了,手动修改系统时间还可以使用(仅供学习研究,支持购买正版)然后就考虑可以使用getsystemtimeasfiletimemsdn介绍:https://docs.microsoft.com/en-us/windows/win32/api/sysinfoapi/nf-sysinfoapi-getsystemtimeasfiletimeFILETIME的使用https:...
最近goland证书过期了,手动修改系统时间还可以使用(仅供学习研究,支持购买正版)
然后就考虑可以使用getsystemtimeasfiletime
msdn介绍:
https://docs.microsoft.com/en-us/windows/win32/api/sysinfoapi/nf-sysinfoapi-getsystemtimeasfiletime
FILETIME的使用
https://blog.csdn.net/TracyZhongcf/article/details/3711684
https://stackoverflow.com/questions/11222709/assigning-data-and-time-to-filetime-structure-in-c
也可以用runasdate小工具,原理一样的,不过自己方便和放心点而已;
参考实现如下:
#define _AFXDLL
#include <windows.h>
#include <cstdio>
#include <QBuffer>
#include <QDebug>
#include <QString>
#include "detours.h"
#define PER_SECOND 1*10*1000*1000 //1秒
void (__stdcall *oldGetSystemTimeAsFileTime)(
LPFILETIME lpSystemTimeAsFileTime
) = GetSystemTimeAsFileTime;
void newGetSystemTimeAsFileTime(
LPFILETIME lpSystemTimeAsFileTime
)
{
ULONGLONG ullSeconds = 0* PER_SECOND;
FILETIME tTime;
ULARGE_INTEGER temp;//1961==> 可以参考11222709写一个更近的时间
temp.QuadPart = ullSeconds;
lpSystemTimeAsFileTime->dwHighDateTime = temp.HighPart;
lpSystemTimeAsFileTime->dwLowDateTime = temp.LowPart;
}
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
LONG error;
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
{
DetourTransactionBegin();
DetourUpdateThread(GetCurrentThread());
DetourAttach(&(PVOID&)oldGetSystemTimeAsFileTime, newGetSystemTimeAsFileTime);
error = DetourTransactionCommit();
if (error == NO_ERROR) {
printf("echofx" DETOURS_STRINGIFY(DETOURS_BITS) ".dll:"" Detoured Echo().\n");
}else {
printf("echofx" DETOURS_STRINGIFY(DETOURS_BITS) ".dll:"" Error detouring Echo(): %d\n", error);
}
printf("ul_reason_for_call=%d\n",ul_reason_for_call);
}
break;
case DLL_THREAD_ATTACH:
{
printf("ul_reason_for_call=%d\n",ul_reason_for_call);
break;
}
case DLL_THREAD_DETACH:
printf("ul_reason_for_call=%d\n",ul_reason_for_call);
break;
case DLL_PROCESS_DETACH:
{
DetourTransactionBegin();
DetourUpdateThread(GetCurrentThread());
DetourDetach(&(PVOID&)oldGetSystemTimeAsFileTime, newGetSystemTimeAsFileTime);
error = DetourTransactionCommit();
//printf("echofx" DETOURS_STRINGIFY(DETOURS_BITS) ".dll:" " Removed Echo() (result=%d)\n", error);
//printf("ul_reason_for_call=%d\n",ul_reason_for_call);
break;
}
}
return TRUE;
}
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)