利用HOOK拦截封包原理
日期:2008年2月18日 作者: 查看:[大字体 中字体 小字体]-
截获API是个很有用的东西,比如你想分析一下别人的程序是怎样工作的。这里我介绍一下一种我自己试验通过的方法。
首先,我们必须设法把自己的代码放到目标程序的进程空间里去。Windows Hook可以帮我们实现这一点。SetWindowsHookEx的声明如下:
HHOOK SetWindowsHookEx(
int idHook, // hook type
HOOKPROC lpfn, // hook procedure
HINSTANCE hMod, // handle to application instance
DWord dwThreadId // thread identifier
);
具体的参数含义可以翻阅msdn,没有msdn可谓寸步难行。
这里Hook本身的功能并不重要,我们使用它的目的仅仅只是为了能够让Windows把我们的代码植入别的进程里去。hook Type我们任选一种即可,只要保证是目标程序肯定会调用到就行,这里我用的是WH_CALLWNDPROC。lpfn和hMod分别指向我们的钩子代码及其所在的dll,dwThreadId设为0,表示对所有系统内的线程都挂上这样一个hook,这样我们才能把代码放到别的进程里去。
之后,我们的代码就已经进入了系统内的所有进程空间了。必须注意的是,我们只需要截获我们所关心的目标程序的调用,因此还必须区分一下进程号。我们自己的钩子函数中,第一次运行将进行最重要的API重定向的工作。也就是通过将所需要截获的API的开头几个字节改为一个跳转指令,使其跳转到我们的API中来。这是最关键的部分。这里我想截三个调用,ws2_32.dll中的send和recv、user32.dll中的GetMessageA。
DWORD dwCurrentPID = 0;
HHOOK hOldHook = NULL;
DWORD pSend = 0;
DWORD pRecv = 0;
GETMESSAGE pGetMessage = NULL;
BYTE BTNewBytes[8] = { 0x0B8, 0x0, 0x0, 0x40, 0x0, 0x0FF, 0x0E0, 0 };
DWORD dwOldBytes[3][2];
HANDLE hDebug = INVALID_HANDLE_value;
LRESULT CALLBACK CallWndProc( int nCode, WPARAM wParam, LPARAM lParam )
{
DWORD dwSize;
DWORD dwPIDWatched;
HMODULE hLib;
if( dwCurrentPID == 0 )
{
dwCurrentPID = GetCurrentProcessId();
HWND hwndMainHook;
hwndMainHook = ::FindWindow( 0, "MainHook" );
dwPIDWatched = ::SendMessage( hwndMainHook, (WM_USER+100), 0, 0 );
hOldHook = (HHOOK)::SendMessage( hwndMainHook, (WM_USER+101), 0, 0 );
if( dwCurrentPID == dwPIDWatched )
{
hLib = LoadLibrary( "ws2_32.dll" );
pSend = (DWORD)GetProcAddress( hLib, "send" );
pRecv = (DWORD)GetProcAddress( hLib, "recv" );
::ReadProcessMemory( INVALID_HANDLE_value, (void *)pSend, (void *)dwOldBytes[0], sizeof(DWORD)*2, &dwSize ); - [1] [2] [3] 下一页
-
- 利用HOOK拦截封包原理 相关文章:
- ·《二战狙击手:胜利的召唤》全攻略 - 游戏攻略
- ·利用 wordXP 实现自动排班
- ·[GBA]《哈利波特与阿兹卡班的囚徒》攻略 - 其他电视游戏攻略秘籍 - 其他电视游戏
- ·利用JMF进行多媒体编程
- ·利用VB控件操作目录和文件夹
- ·便利商店2 上手指南 - 游戏攻略
- ·QQ搞笑表情专利
- ·银行利率表
- ·利用Haffman 算法实现对ascii字符文件的压缩
- ·超级玛利欧64 - 游戏攻略
- 利用HOOK拦截封包原理 相关软件
- ·哈利波特与火焰杯(Harry Potter and the Goblet of Fire)
- ·《实况足球胜利11人》GBA中文版
- ·恶魔城Ⅻ利希特传说
- ·突袭3:胜利进军(sudden strike 3)
- ·DOD1.3-胜利之日
- ·魂之利刃(Soul Edge)
- ·二战狙击手:胜利的召唤
- ·哈利波特3阿茲卡班的逃犯中文版
- ·命令与征服2泰泊利亚之日
- ·便利商店之火锅店中文版
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
上一篇:刘徽《九章算术》中的勾股数
下一篇:DES加密算法的数据置换过程
精品推荐
热点TOP10
- ·游戏外挂设计技术探讨
- ·病毒编程技术之恶意代码的亲密接触
- ·逆向思维 《魔兽世界》封包分析
- ·GIF文件格式
- ·Spring让LOB数据操作变得简单易行
- ·Solaris 10 安装及SVC管理及X及Vmware及其它可能遇到的一些问题
- ·利用HOOK拦截封包原理
- ·网络游戏外挂编写基础
- ·游戏开发新手入门之跟踪窗口和使用GDI
- ·代码静态分析工具PC-LINT安装配置
- ·UML业务建模实例分析
- ·分布式组件对象模型DCOM揭秘
- ·利用API在Windows下创建进程和线程
- ·在内存中修改数据的网游外挂
- ·使用BHO定制你的IE浏览器
- ·编写QQ外挂插件的原理和方法
- ·我常用的LINUX命令
- ·Visitor模式应用
- ·趣味游戏程序设计杂谈---1
- ·DirectDraw之C#入门攻略
