|
APIHOOK学习笔记(一)
https://www.52hb.com/forum.php?m ... 1&fromuid=20388
(出处: 吾爱汇编论坛)
APIHOOK学习笔记(二)
https://www.52hb.com/forum.php?m ... 9&fromuid=20388
(出处: 吾爱汇编论坛)
这次我们用VC6来写这个DLL,为什么?因为VC6的运行库基本上所有电脑都装了,你整个需要VC2010的补丁出来,人家机子没装怎么办?抓瞎。
至于用到的课件我全部打包进压缩包了,在附件里。
实战
我们打开附件(要先下载)目录下的push.exe
应该都会易语言push窗口吧,不会的看恒大的零基础教程去。
这是需要修改的地方
//0040108B |. 68 01000152 push 0x52010001
//0040108B 68 04000152 push 0x52010004
比较上述数据,我们发现只要把0x40108C的01改成04就可以了
打开VC6,新建一个dll工程(源码我打包进附件了)
文件(&F) —— 新建(&N)
然后把<DLL工程名>.cpp里的代码替换为如下
#include "stdafx.h"
#include "windows.h"
HMODULE h;
int pt;
unsigned char newcode[7] = {184,0,0,0,0,255,224}; //要修改的数据
unsigned char oldcode[7];//备份原数据,方便还原
HWND MyCreateWindowExA(int dwExStyle,LPCSTR lpClassName,LPCSTR lpWindowName,int dwStyle,int x,int y,int nWidth,int nHeight,HWND hWndParent,HMENU hMenu,HINSTANCE hInstance,int* lpParam)
{
//0040108B |. 68 01000152 push 0x52010001
//0040108B 68 04000152 push 0x52010004
unsigned char write = 0x4;//储存要修改的数据
WriteProcessMemory(HANDLE(-1),LPVOID(0x40108C),&write,1,0); //虽然地址是40108B可我们要更改的只有第二个字节,也就是40108C
WriteProcessMemory(HANDLE(-1),LPVOID(pt),&oldcode[0],7,0);//还原数据
//有些同学可能会问,为什么不调用一个CreateWindowExA,我一开始也是这样想的,可是后来我发现,调不调用都一样....所以干脆省掉,这里第一个CreateWindowExA函数的调用肯定是输入法调用的,如果觉得有必要加上一句 CreateWindowExA(把这个子程序里的各项参数写上去); 就可以了
return 0;
}
void FixHook() //这里我不解释了,不懂得去看看我的前面两篇笔记
{
int addr;
addr = int(&MyCreateWindowExA);
h = LoadLibrary("user32.dll");
pt = int(GetProcAddress(h,"CreateWindowExA"));
VirtualProtect(LPVOID(pt),7,PAGE_EXECUTE_READWRITE,0);
ReadProcessMemory(HANDLE(-1),LPVOID(pt),&oldcode[0],7,0);
memcpy(&newcode[1],&addr,4);
WriteProcessMemory(HANDLE(-1),LPVOID(pt),&newcode[0],7,0);
}
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
if (ul_reason_for_call = DLL_PROCESS_ATTACH) //如果是DLL被加载
{
FixHook();//安装HOOK
};
return TRUE;
}
知道怎么编译成Release的版本不,好吧,就知道你不知道
然后听到一声响,你就可以在DLL工程目录里面的Release目录下得到一个dll,然后把这个dll注入push.exe,就可以看到效果了
怎么注入?我说个简单的方法
打开OD,载入push.exe,大家的OD应该都有StrongOD插件吧
选择菜单栏的 插件(P) —— StringOD —— InJectDll —— Reomote Thread
在弹出的窗口中选择HOOK Patch.dll,然后把程序跑起来就可以了。
可能会看不出来效果,不过区别方式是,如果不使用HOOK补丁的话,打开的窗口是一个有按钮(单击可以载入一个空白窗口)的窗口,使用后载入的就是一个空白窗口
push.zip
(1.83 MB, 下载次数: 55)
|
评分
-
参与人数 10 | 威望 +1 |
HB +39 |
THX +6 |
收起
理由
|
可遇
| |
+ 1 |
|
[吾爱汇编论坛52HB.COM]-软件反汇编逆向分析,软件安全必不可少! |
消逝的过去
| |
+ 2 |
|
|
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;. |
圈瞳
| |
+ 1 |
+ 1 |
吃水不忘打井人,给个评分懂感恩! |
yiyaya
| |
+ 1 |
+ 1 |
分享精神,是最值得尊敬的! |
1355400205
| |
+ 1 |
+ 1 |
不玩了 |
Shark恒
| + 1 |
+ 30 |
+ 1 |
分享精神,是最值得尊敬的! |
查看全部评分
|