首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

利用API Hook技术截获了WriteFile之后的有关问题。

2012-09-14 
利用API Hook技术截获了WriteFile之后的问题。。。WriteFile已成功截获,并转向了我自定义的函数MyWriteFile,

利用API Hook技术截获了WriteFile之后的问题。。。
WriteFile已成功截获,并转向了我自定义的函数MyWriteFile,代码如下:

C/C++ code
BOOL MyWriteFile(    HANDLE hFile, // 文件句柄    LPCVOID lpBuffer,// 数据缓存区指针    DWORD nNumberOfBytesToWrite, // 你要写的字节数    LPDWORD lpNumberOfBytesWritten, // 用于保存实际写入字节数的存储区域的指针    LPOVERLAPPED lpOverlapped // OVERLAPPED结构体指针    ){    OutputDebugString((LPCSTR)lpBuffer);    //用于调试,输出待加密的明文    LPCVOID lpBufferNew = Encrypt(lpBuffer, nNumberOfBytesToWrite);    //加密,更改了要写的字节数,并返回密文数据缓存区指针    OutputDebugString((LPCSTR)lpBufferNew);    ////用于调试,输出加密后的密文    return WriteFile(hFile, lpBufferNew, nNumberOfBytesToWrite, lpNumberOfBytesWritten, lpOverlapped);}
目前只拿记事本程序做测试,第一次按下Ctrl+S保存后没问题,但第二次保存时便会弹出让我“另存为”的对话框,而且关闭记事本窗口的时候会提示让我保存(保存和不保存我都试过了:后者直接关闭窗口,而且文本内容确实是加密后的内容;前者会新建一个txt文件,内容和不保存所得的txt文件内容一样,都是加密过的)。

问题是:我截获了WriteFile,在第一次保存之后,进行第二次保存或者关闭窗口为什么出现上述情况,为什么系统觉得我之前没有保存过呢?

[解决办法]
BOOL __stdcall MyWriteFile
掉了这个?

热点排行