(已解决)各位兄弟帮我看看这个程序,最简单的用Detours库本进程HOOK,此进程 Hook Sleep函数事正确无误,但HOOK CreatefileA时总是在HOOK后出现堆栈错误。请求兄弟们帮忙看看,谢谢。。。。
代码如下:(下面有源代码附件)
#include "stdafx.h"
#include "stdio.h"
#include "windows.h"
#include "detours.h"
#pragma comment (lib,"detours.lib")
#pragma comment (lib,"detoured.lib")
static HANDLE (WINAPI *SysCreateFile)(
LPCTSTR lpFileName, // file name
DWORD dwDesiredAccess, // access mode
DWORD dwShareMode, // share mode
LPSECURITY_ATTRIBUTES lpSecurityAttributes, // SD
DWORD dwCreationDisposition, // how to create
DWORD dwFlagsAndAttributes, // file attributes
HANDLE hTemplateFile // handle to template file
)=CreateFileA;
HANDLE HookCreateFileA(
LPCTSTR lpFileName, // file name
DWORD dwDesiredAccess, // access mode
DWORD dwShareMode, // share mode
LPSECURITY_ATTRIBUTES lpSecurityAttributes, // SD
DWORD dwCreationDisposition, // how to create
DWORD dwFlagsAndAttributes, // file attributes
HANDLE hTemplateFile // handle to template file
)
{
char Path[MAX_PATH];
::GetModuleFileName(NULL,Path,MAX_PATH);
::MessageBox(NULL,"拦截成功",Path,MB_OK);
return SysCreateFile(lpFileName,
dwDesiredAccess,
dwShareMode,
lpSecurityAttributes,
dwCreationDisposition,
dwFlagsAndAttributes,
hTemplateFile);
}
int main(int argc, char* argv[])
{
DetourTransactionBegin();
DetourUpdateThread(GetCurrentThread());
DetourAttach(&(PVOID &)SysCreateFile,HookCreateFileA);
DetourTransactionCommit();
CreateFile ("D:\\2.txt",
GENERIC_READ|GENERIC_WRITE,
FILE_SHARE_WRITE|FILE_SHARE_READ,
NULL,
CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
NULL);
return 0;
}
[课程]Android-CTF解题方法汇总!