本帖最后由 wushaominkk 于 2022-9-26 10:32 编辑
通过自己写个演示调试发现,C#的日期获取 DateTime.Now 最终会调用GetSystemTimeAsFileTime,这样hook这个api返回一个小的时间就可以绕过
这个不重要,简单的例子
x64hook的例子不太好找,传一个方便大家
里面也有个注入的代码
编译的时候选x64 release
主要是发个模板,方便大家用于hook其他的程序
代码网上抄的
[C] 纯文本查看 复制代码 #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;
}
VOID HookAPI()
{
DetourTransactionBegin();
DetourUpdateThread(GetCurrentThread());
DetourAttach(&(PVOID&)oldGetSystemTimeAsFileTime, newGetSystemTimeAsFileTime);
DetourTransactionCommit();
}
VOID UnHookAPI()
{
DetourTransactionBegin();
DetourUpdateThread(GetCurrentThread());
DetourDetach(&(PVOID&)oldGetSystemTimeAsFileTime, newGetSystemTimeAsFileTime);
DetourTransactionCommit();
}
hook_GetSystemTimeAsFileTime_x64 version源码用于C#程序获取当前日期.rar
(300.11 KB, 下载次数: 92)
|