0

Deviareを使用して関数をフックおよびインターセプトできますが、フィールドのパラメーターGetLocalTimeの値を変更するにはどうすればよいですか。use を見つけることができるスニペットはほとんどありませんが、残念ながらそれは void 関数であり、への直接代入は何もしません。outwYearSYSTEMTIMENktHookCallInfo.ResultField(0).Value

CreateHook("kernel32.dll!GetLocalTime", (int)eNktHookFlags.flgOnlyPostCall);

private static void OnFunctionCalled(NktHook hook, NktProcess process, NktHookCallInfo info)
{
    NktParamsEnum param = info.Params();
    NktParam value = param.First().Evaluate();

    for (int i = 0; i < 8; i++)
    {
        NktParam field = value.Field(i);
        Console.WriteLine("{0} {1} {2}", field.Name, field.TypeName, field.Value);
    }
}

void WINAPI GetLocalTime(
  _Out_ LPSYSTEMTIME lpSystemTime
);

typedef struct _SYSTEMTIME {
  WORD wYear;
  WORD wMonth;
  WORD wDayOfWeek;
  WORD wDay;
  WORD wHour;
  WORD wMinute;
  WORD wSecond;
  WORD wMilliseconds;
} SYSTEMTIME, *PSYSTEMTIME;
4

1 に答える 1

0

コメントに基づく回答は次のとおりです。UShortVal

于 2016-09-21T14:29:32.007 に答える