【问题标题】:Microsoft Detours: missing macroMicrosoft Detours:缺少宏
【发布时间】:2019-11-28 08:46:31
【问题描述】:

我需要一个使用 Microsoft Detours 的项目的帮助。

前提:我正在尝试使用我在 project on CodeProject 中找到的使用 Detours 库的类。我从 Github 下载了最新版的 Detuors 并重新编译,但是找不到宏 DETOUR_TRAMPOLINE 的定义。我想在新版本的 Detours 中它已经以某种方式被替换了。

在使用这个缺失宏的项目中,它是这样使用的:

DETOUR_TRAMPOLINE(BOOL WINAPI Detour_EnableScrollBar(HWND hwnd, int wSBflags, UINT wArrows), EnableScrollBar);
DETOUR_TRAMPOLINE(BOOL WINAPI Detour_GetScrollInfo  (HWND hwnd, int fnBar, LPSCROLLINFO lpsi), GetScrollInfo);
DETOUR_TRAMPOLINE(int  WINAPI Detour_GetScrollPos   (HWND hwnd, int nBar), GetScrollPos);
DETOUR_TRAMPOLINE(BOOL WINAPI Detour_GetScrollRange (HWND hwnd, int nBar, LPINT lpMinPos, LPINT lpMaxPos), GetScrollRange);
DETOUR_TRAMPOLINE(int  WINAPI Detour_SetScrollInfo  (HWND hwnd, int fnBar, LPSCROLLINFO lpsi, BOOL fRedraw), SetScrollInfo);
DETOUR_TRAMPOLINE(int  WINAPI Detour_SetScrollPos   (HWND hwnd, int nBar, int nPos, BOOL fRedraw), SetScrollPos);
DETOUR_TRAMPOLINE(int  WINAPI Detour_SetScrollRange (HWND hwnd, int nBar, int nMinPos, int nMaxPos, BOOL fRedraw), SetScrollRange);
DETOUR_TRAMPOLINE(BOOL WINAPI Detour_ShowScrollBar  (HWND hwnd, int wBar, BOOL fShow), ShowScrollBar);

问题:

  • 新版Detours有没有办法达到和老宏一样的效果?
  • 如果不是要求太多,我能否请教您一些建议,如何重写我上面报告的代码以与新方法兼容?

提前感谢您的帮助!

【问题讨论】:

  • 大声笑,我在微软 GitHub 页面的搜索框中输入了“DETOUR_TRAMPOLINE”,GitHub 回复:“哇哦!你触发了滥用检测机制。请稍等几分钟再试一次; 在某些情况下,这可能需要一个小时。”:P
  • 我在宏上做了一些谷歌搜索,似乎宏在 v1.5 的弯路中......而他们现在在 >v4.. 不能保证只重写代码你显示将解决问题。您可能需要使用它设计的 detours 版本来运行您的代码......或者在很大程度上重写它。
  • @JHBonarius 我担心是这样......谢谢你的帮助!

标签: c++ winapi detours


【解决方案1】:

搜索"#define DETOUR_TRAMPOLINE" 出现:

#define DETOUR_TRAMPOLINE(trampoline,target) \
static PVOID __fastcall _Detours_GetVA_##target(VOID) \
{ \
    return ⌖ \
} \

【讨论】:

    【解决方案2】:

    正如JHBonarius 在他的评论中解释的那样,自从有问题的宏被删除以来,已经发布了许多版本的 Detours,因此对有问题的代码进行快速更改可能并不容易。

    我想向那些感兴趣的人指出一个非常简单且包含的库,例如 Detours,它允许您重定向 Windows API(即使它提供的功能少得多)。

    有问题的库是MinHook,源代码仍然可用here。

    【讨论】:

      猜你喜欢
      • 2011-02-07
      • 1970-01-01
      • 1970-01-01
      • 2015-07-10
      • 2021-07-04
      • 2016-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多