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)