|
HOOK MessageBoxA这个API
笔记一:https://www.52hb.com/thread-20831-1-1.html
看代码
#include <iostream>
#include <windows.h>
using namespace std;
void MyApi(int Phwnd,LPCSTR lpText,LPCSTR lpCaption,int Style)
{
cout << "拦截到MessageBoxA函数调用" << endl;
cout << "窗口句柄:" << Phwnd << endl ;
cout << "窗口内容:" << lpText << endl ;
cout << "窗口标题:" << lpCaption << endl ;
cout << "窗口风格:" << Style << endl;
}
int main()
{
HMODULE h;
int pt;
h = LoadLibrary("user32.dll"); ///装载user32.dll
pt = int(GetProcAddress(h,"MessageBoxA")); ///得到MessageBoxA的地址
unsigned char code[7] = {184,0,0,0,0,255,224}; ///mov eax,0000 jmp eax
unsigned char oldcode[7]; ///保留原始代码,等下还原
int addr = int(&MyApi); ///取我们自己的子程序的地址
memcpy (&code[1],&addr,4); ///把我们mov eax,0000的0000换成我们自己的子程序地址
VirtualProtect (LPVOID(pt),7,PAGE_EXECUTE_READWRITE,0); ///修改虚拟保护,7个字节就够了
ReadProcessMemory (HANDLE(-1),LPVOID(pt),&oldcode[0],7,0); ///先保留原始代码,留着还原
WriteProcessMemory (HANDLE(-1),LPVOID(pt),&code[0],7,0); ///修改MessageBoxA的函数头部为 mov eax,我们的子程序 jmp eax
MessageBoxA(0,"Hello Wolrd","APIHOOK Is Very Good",0); ///调用MessageBoxA函数,OK HOOK成功
WriteProcessMemory (HANDLE(-1),LPVOID(pt),&oldcode[0],7,0); ///还原函数头部,等下你再写个MessageBoxA就可以正确调用了
return 0;
}
|
评分
-
参与人数 14 | HB +28 |
THX +8 |
收起
理由
|
可遇
| + 1 |
|
[吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守! |
消逝的过去
| |
+ 1 |
|
zxjzzh
| + 2 |
|
[吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守! |
VipDongle
| + 1 |
|
|
agan8888
| + 1 |
|
|
ding520
| + 1 |
|
&lt;span class=&quot;text2Link&quot;&gt;[吾爱汇编论坛&lt;a target=&quot;_blank&quot;&gt;52HB.COM&lt;/a&gt;]-学破解防破解,知进攻懂防守!&lt;/span&gt;. |
hc777
| + 5 |
+ 1 |
[快捷评语] - 2018,狗年发发发,狗年旺旺旺! |
springwillow
| + 1 |
|
2017,让我们17学破解! |
圈瞳
| + 1 |
+ 1 |
分享精神,是最值得尊敬的! |
小菜一碟
| + 1 |
+ 1 |
分享精神,是最值得尊敬的! |
1973597427
| + 1 |
+ 1 |
新人评分,虽然我会 |
徐小熙
| + 1 |
+ 1 |
分享精神,是最值得尊敬的! |
zby03772015
| + 2 |
+ 1 |
分享精神,是最值得尊敬的! |
Shark恒
| + 10 |
+ 1 |
分享精神,是最值得尊敬的! |
查看全部评分
|