DSJ1994 2016-05-23 11:12 采纳率: 0%
浏览 3063

求解VS2015的Debug和Release的区别

代码如下:
#include
#include
#include
#include"detours.h"
#pragma comment(lib,"detours.lib")

static int (WINAPI *OldMessageBoxW)(
HWND hWnd,
LPCWSTR lpText,
LPCWSTR lpCaption,
UINT uType) = MessageBoxW;

int WINAPI NewMessageBoxW(
HWND hWnd,
LPCSTR lpText,
LPCSTR lpCaption,
UINT uType)
{
return 0;
}
//开始拦截
void Hook()
{
DetourRestoreAfterWith();//恢复原来的状态
DetourTransactionBegin();//拦截开始
DetourUpdateThread(GetCurrentThread());//刷新当前线程
//这里可以多次使用DetourAttach,表明Hook多个函数
DetourAttach((void **)&OldMessageBoxW,NewMessageBoxW);//实现函数拦截
DetourTransactionCommit();//拦截生效
}
//取消拦截
void UnHook()
{
DetourTransactionBegin();//拦截开始
DetourUpdateThread(GetCurrentThread());//刷新当前线程
//这里可以多次使用DetourAttach,表明撤销多个函数Hook
DetourDetach((void **)&OldMessageBoxW, NewMessageBoxW);//撤销函数拦截
DetourTransactionCommit();//拦截生效
}

void main()
{
//printf("%p", main);

MessageBoxW(0, L"我就简单试试", L"我就不信不行", 0);
Hook();
MessageBoxW(0, L"原来可以啊", L"我就不信不行", 0);
system("pause");

}
在Debug状态下调试,无法拦截
在Release状态下调试,拦截成功,求解这是为什么?怎样修改能在Debug下也能成功,谢谢各位大神

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-10-25 18:52
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

悬赏问题

  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突