使用detours Hook api的问题..

杀入油漆区orz 2013-08-14 05:01:40
使用detours做了一个监控文件系统操作的程序.遇到些小问题."新建""打开"操作什么的都没问题.唯独"读""写"操作有问题.感觉函数构造应该差不多啊.怎么会有这么大差别.
先附上成功的api的代码
HANDLE WINAPI NEW_CreateFileA(LPCSTR lpFileName, DWORD dwDesiredAccess, 
DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes,
DWORD dwCreationDisposition, DWORD dwFlagAndAttributes, HANDLE hTemplateFile)
{
if(lpFileName != "C:\\dlllog.log"){
switch(dwCreationDisposition){
case CREATE_ALWAYS:;
case CREATE_NEW:;
case OPEN_ALWAYS:AppendMessageToLog("创建新文件:","C:\\dlllog.log");
AppendMessageToLog((char *)lpFileName,"C:\\dlllog.log");
break;
case OPEN_EXISTING:;
case TRUNCATE_EXISTING:AppendMessageToLog("打开文件:","C:\\dlllog.log");
AppendMessageToLog((char *)lpFileName,"C:\\dlllog.log");
break;
}
}
HANDLE ret = OLD_CreateFileA(lpFileName, dwDesiredAccess, dwShareMode, lpSecurityAttributes, dwCreationDisposition, dwFlagAndAttributes, hTemplateFile);
//MessageBoxW(NULL,lpFileName,L"[测试]",MB_OK);
return ret;
}

有问题的函数如下
BOOL WINAPI NEW_WriteFile(HANDLE hFile,LPCVOID lpBuffer,DWORD nNumberOfBytesToWrite,
LPDWORD lpNumberOfBytesWritten,LPOVERLAPPED lpOverlapped)
{
AppendWMessageToLog(L"修改文件:",L"C:\\dlllog.log");
AppendWMessageToLog((wchar_t *)hFile,L"C:\\dlllog.log");
BOOL ret=OLD_WriteFile(hFile,lpBuffer,nNumberOfBytesToWrite,lpNumberOfBytesWritten,lpOverlapped);
return ret;
}

当把上面这个函数加入后,就不正常了..
...全文
161 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xushifu1667 2016-04-20
  • 打赏
  • 举报
回复
请问怎么使用Detours Hook访问注册表这个行为呢?毕设要用都不会
杀入油漆区orz 2013-08-16
  • 打赏
  • 举报
回复
继续求大牛啊。。。。。。。。
hurryboylqs 2013-08-15
  • 打赏
  • 举报
回复
AppendWMessageToLog((wchar_t *)hFile,L"C:\\dlllog.log"); ??
杀入油漆区orz 2013-08-15
  • 打赏
  • 举报
回复
继续求大牛啊....
hhhcj 2013-08-15
  • 打赏
  • 举报
回复
哥们儿,能不能帮我看下,detours的simple样例,为什么记录不了sleep的时间差呢? http://bbs.csdn.net/topics/390548195
杀入油漆区orz 2013-08-15
  • 打赏
  • 举报
回复
引用 1 楼 VisualEleven 的回复:
你说的不正常指的是怎么意思?程序异常?HOOK不了?
就是得先生成个dll,然后注入到进程里么不是..编写好了自定义的函数,然后加上
DetourAttach(&(PVOID&)OLD_WriteFile,NEW_WriteFile);
		DetourAttach(&(PVOID&)OLD_ReadFile,NEW_ReadFile);
这两行之后,生成的dll再注入到进程里的时候,就不能记录结果了...不加这个的时候就是可以记录的...不知道是不是这个NEW_WriteFile写的有问题啊还是哪里出了问题...求大牛帮忙分析..
杀入油漆区orz 2013-08-15
  • 打赏
  • 举报
回复
引用 5 楼 hurryboylqs 的回复:
AppendWMessageToLog((wchar_t *)hFile,L"C:\\dlllog.log"); ??
呃 这个函数是自己写的..把前一个参数写到后面的文件里....
Eleven 2013-08-14
  • 打赏
  • 举报
回复
你说的不正常指的是怎么意思?程序异常?HOOK不了?

16,466

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧