gpt4 book ai didi

c++ - 钩。 va_list 。可能吗?

转载 作者:太空宇宙 更新时间:2023-11-04 02:50:14 26 4
gpt4 key购买 nike

我正在尝试拦截( Hook )一个使用参数列表来获取结果的函数,然后调用旧函数。

// 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)

如何在这些函数上设置钩子(Hook)?

最佳答案

  1. 看看是否有接受 va_list 的类似函数。
  2. 没有其他符合标准的方法。一些编译器支持 va_list 的魔术扩展,这可能会做你想做的。查看您的编译器手册。对于 gcc,请查看:__builtin_apply_args () 和 friend 。

关于c++ - 钩。 va_list 。可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22913708/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com