Hook WriteProcessMemory

rockago 2010-05-29 01:58:46
刚学习APIHOOK。下了一个示例,是HOOK MessageBox,Detour版本的。
它是直接修改参数的:

int nResult=CopyMessageBoxA(hWnd,"Haha,Detours Hooked!",lpCaption,uType); //call origin function


请问如果我要Hook WriteProcessMemory 得到它写入的地址跟内容 要怎么做呢?
例如要把HOOK到的地址跟内容保存到控件文本上要怎么做?
...全文
251 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
rockago 2010-05-29
  • 打赏
  • 举报
回复
没人可以帮帮我么
rockago 2010-05-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 lisunlin0 的回复:]
你安装钩子了吗?
就大约是
ULONG init()
{
ULONG uRet = 0;
uRet |= DetourTransactionBegin();
uRet |= DetourUpdateThread(GetCurrentThread());

uRet |= DetourAttach(&(PVOID&) CopyWriteProcessMemory, M……
[/Quote]

BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
OutputDebugString("Detour dll Load!");
DetourFunctionWithTrampoline((PBYTE)CopyWriteProcessMemory, (PBYTE)MyWriteProcessMemory);

break;
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
break;
case DLL_PROCESS_DETACH:
OutputDebugString("Detour dll Exit!");
DetourRemove((PBYTE)CopyWriteProcessMemory, (PBYTE)MyWriteProcessMemory);

break;
}
return TRUE;
}

是不是这样?
sunlin7 2010-05-29
  • 打赏
  • 举报
回复
你安装钩子了吗?
就大约是
ULONG init()
{
ULONG uRet = 0;
uRet |= DetourTransactionBegin();
uRet |= DetourUpdateThread(GetCurrentThread());

uRet |= DetourAttach(&(PVOID&) CopyWriteProcessMemory, MyWriteProcessMemory);
}
rockago 2010-05-29
  • 打赏
  • 举报
回复
不过奇怪 我把那个例子改成FindWindowA却可以 好象Detour版本是1.5的。
rockago 2010-05-29
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 sanguomi 的回复:]
MessageBox 一般引入式钩子就行了,
WriteProcessMemory 引入式钩估计钩不到,得用陷阱式的
[/Quote]
请问能不能说说引入式跟陷阱式的区别?
sanguomi 2010-05-29
  • 打赏
  • 举报
回复
MessageBox 一般引入式钩子就行了,
WriteProcessMemory 引入式钩估计钩不到,得用陷阱式的
rockago 2010-05-29
  • 打赏
  • 举报
回复
弄了一晚上还没弄出来 而且为什么我HOOK他的第3个参数 让他无论修改什么内容都修改成我定义的 但是也没成功。

BOOL WINAPI MyWriteProcessMemory(
HANDLE hProcess, // handle to process
LPVOID lpBaseAddress, // base of memory area
LPVOID lpBuffer, // data buffer
DWORD nSize, // number of bytes to write
LPDWORD lpNumberOfBytesWritten // number of bytes written
);
DETOUR_TRAMPOLINE(BOOL WINAPI CopyWriteProcessMemory(HANDLE, LPVOID, LPVOID, DWORD, LPDWORD), WriteProcessMemory);
BOOL WINAPI MyWriteProcessMemory(
HANDLE hProcess, // handle to process
LPVOID lpBaseAddress, // base of memory area
LPVOID lpBuffer, // data buffer
DWORD nSize, // number of bytes to write
LPDWORD lpNumberOfBytesWritten) // number of bytes written
{
int a=0;
BOOL nResult=WriteProcessMemory(hProcess,lpBaseAddress,&a,nSize,lpNumberOfBytesWritten); //call origin function
return nResult;
}


请问谁能帮帮我?帮我解决这两个疑惑
fishion 2010-05-29
  • 打赏
  • 举报
回复
http://www.codeproject.com/KB/DLL/funapihook.aspx
看下这个吧
rockago 2010-05-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 rockago 的回复:]
弄了一晚上还没弄出来 而且为什么我HOOK他的第3个参数 让他无论修改什么内容都修改成我定义的 但是也没成功。

C/C++ code

BOOL WINAPI MyWriteProcessMemory(
HANDLE hProcess, // handle to process
LPVOID lpBaseAddress, // b……
[/Quote]

BOOL WINAPI MyWriteProcessMemory(
HANDLE hProcess, // handle to process
LPVOID lpBaseAddress, // base of memory area
LPVOID lpBuffer, // data buffer
DWORD nSize, // number of bytes to write
LPDWORD lpNumberOfBytesWritten // number of bytes written
);
DETOUR_TRAMPOLINE(BOOL WINAPI CopyWriteProcessMemory(HANDLE, LPVOID, LPVOID, DWORD, LPDWORD), WriteProcessMemory);
BOOL WINAPI MyWriteProcessMemory(
HANDLE hProcess, // handle to process
LPVOID lpBaseAddress, // base of memory area
LPVOID lpBuffer, // data buffer
DWORD nSize, // number of bytes to write
LPDWORD lpNumberOfBytesWritten) // number of bytes written
{
int a=0;
BOOL nResult=CopyWriteProcessMemory(hProcess,lpBaseAddress,&a,nSize,lpNumberOfBytesWritten); //call origin function
return nResult;
}

MyWriteProcessMemory写错了 应该是CopyWriteProcessMemory 但是我改了 还是不行
rockago 2010-05-29
  • 打赏
  • 举报
回复
谁能帮帮我

16,472

社区成员

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

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

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