hszt 发表于 2022-9-25 14:15

x64 hook_GetSystemTimeAsFileTime源码用于C#程序获取当前电脑日期 x64hook和注入

本帖最后由 wushaominkk 于 2022-9-26 10:32 编辑


通过自己写个演示调试发现,C#的日期获取 DateTime.Now 最终会调用GetSystemTimeAsFileTime,这样hook这个api返回一个小的时间就可以绕过



这个不重要,简单的例子

x64hook的例子不太好找,传一个方便大家
里面也有个注入的代码


编译的时候选x64 release

主要是发个模板,方便大家用于hook其他的程序

代码网上抄的

#definePER_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();
}




ps122 发表于 2022-9-27 08:51

大佬好厉害{:1_921:},请教2个问题:
1、C++不太熟,能否将hook代码和注入工具合并?该如何写?
2、能否只在程序加载时hook,加载完成后unhook?

aspllh 发表于 2022-9-25 23:23

人才啊,还有这样的骚操作。

wren0315 发表于 2022-9-26 02:51

带新人入坑的操作

hszt 发表于 2022-9-27 09:18

ps122 发表于 2022-9-27 08:51
大佬好厉害,请教2个问题:
1、C++不太熟,能否将hook代码和注入工具合并?该如何写?
2、能否 ...

注入工具和dll就是配合用的,放一起,exe里面写好目标exe和自己的dll名称,就可以
unhook代码DLL里面有的,可以调用一下
页: [1]
查看完整版本: x64 hook_GetSystemTimeAsFileTime源码用于C#程序获取当前电脑日期 x64hook和注入