簡體   English   中英

鈎。 va_list。可以嗎?

[英]hook. va_list .is possible?

我試圖攔截(掛鈎)一個使用參數列表獲取結果的函數,然后調用舊函數。

// int __cdecl Ordinal578(char *a1, unsigned int a2, int a3, char a4)  (HEXRAYS)
typedef int(__cdecl *Ordinal578)(char *a1, unsigned int a2, const char * a3, ...);
Ordinal578 Ordinal578org = nullptr;
Ordinal578 Ordinal578ptr = nullptr;

int __cdecl Ordinal578my(char *a1, unsigned int a2, const char * a3, ...)
{

    int result = 0;
    va_list args;
    va_start(args, a3);
    result = Ordinal578ptr(a1, a2, a3, args); // if replace this on "vsnprintf_s(a1, a2, a2, a3, args);" it works 5-10 min and then crash!
    va_end(args);

    return result;
}

調用后程序崩潰: Ordinal578ptr(a1,a2,a3,args)

如何設置這些功能的鈎子?

  1. 查看是否有類似的函數代替接受va_list
  2. 沒有其他符合標准的方式。 一些編譯器支持va_list的魔術擴展,這些擴展可能會滿足您的要求。 查看您的編譯器手冊。 對於gcc,請查看:__ __builtin_apply_args ()和朋友。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM