文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | firefox | WPS | 杀毒软件 | Picasa
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形图像 办公软件 媒体动画 精文荟萃 常用软件 网页编程 技术开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院程序开发Delphi拦截其它程序的网络数据封包
精品推荐
特别推荐
·利用Delphi编写Socket通信程序
·拦截其它程序的网络数据封包
·Delphi编程根据IP地址得到主机名
·Delphi 程序员代码编写标准指南
·用DELPHI开发自动化服务器
·将日期转化为汉语的形式
·加密ACCESS数据库增加安全性
·使用TCP/IP协议实现聊天程序
·在Delphi中控制扫描仪
热点TOP10
·Delphi下“培养”自己的简单木马
·DELPHI基础开发技巧
·Delphi中DLL的创建和使用(1)
·Delphi 程序员代码编写标准指南
·在Delphi中实现数据分析模块的动态报表
·Delphi中远程控制的实现
·将日期转化为汉语的形式
·用Delphi实现WinSocket高级应用
·利用Delphi编写Socket通信程序
·组件制作之五(托盘组件)
·使用TCP/IP协议实现聊天程序
·Delphi中利用钩子实现QQ聊天窗口的修改
·先人的DELPHI基础开发技巧
·基于Delphi的“八皇后”问题动态实现
·教你在DELPHI中基础开发技巧
·Delphi建立键盘鼠标动作纪录与回放
·Delphi的嵌入式汇编语言与Windows函数调用
·用DELPHI开发自动化服务器
·用ISAPI方式实现Web页面的自动更新
·用DEPHI 3.0实现动画ABOUT窗口

拦截其它程序的网络数据封包

日期:2007年8月16日 作者: 查看:[大字体 中字体 小字体]


有时候我们需要对其它应用程序发送和接收的网络数据进行拦截,比如要对IE发送的HTTP头进行分析,得到请求的地址等.这次我们可以用一些例如WPE, Sniffer之类的工具来达到目的.但是工具功能有限,要想实现更强大的功能,还是我们自己动手吧.

拦截网络数据封包的方法有三种,一是将网卡设为混杂模式,这次就可以监视到局域网上所有的数据包,二是HOOK目标进程的发送和接收的API函数,第三种方法是自己实现一个代理的DLL.在这里我们使用HOOK API的方法,这样易于实现,而且也不会得到大量的无用数据(如第一种方法就会监视到所有的网络数据).

下面是一个尽量简化了的API HOOK的模版,原理是利用消息钩子将DLL中的代码注入到目标进程中,再用GetProcAddress得到API函数入口地址,将函数入口址改为自己定义的函数入口,这样就得到了API函数的相应参数,处理完后,再改回真实API函数入口地址,并调用它.

HOOK.DLL的代码:

library Hook;

uses

SysUtils,

windows,

Messages,

APIHook in "APIHook.pas";

type

PData = ^TData;

TData = record

Hook: THandle;

Hooked: Boolean;

end;

var

DLLData: PData;

{------------------------------------}

{过程名:HookProc

{过程功能:HOOK过程

{过程参数:nCode, wParam, lParam消息的相

{ 关参数

{------------------------------------}

procedure HookProc(nCode, wParam, lParam: LongWord);stdcall;

begin

if not DLLData^.Hooked then

begin

HookAPI;

DLLData^.Hooked := True;

end;

//调用下一个Hook

CallNextHookEx(DLLData^.Hook, nCode, wParam, lParam);

end;

{------------------------------------}

{函数名:InstallHook

{函数功能:在指定窗口上安装HOOK

{函数参数:sWindow:要安装HOOK的窗口

{返回值:成功返回TRUE,失败返回FALSE

{------------------------------------}

function InstallHook(SWindow: LongWORD):Boolean;stdcall;

var

ThreadID: LongWORD;

begin

Result := False;

DLLData^.Hook := 0;

ThreadID := GetWindowThreadProcessId(sWindow, nil);

//给指定窗口挂上钩子

DLLData^.Hook := SetWindowsHookEx(WH_GETMESSAGE, @HookProc, Hinstance, ThreadID);

if DLLData^.Hook > 0 then

Result := True //是否成功HOOK

else

exit;

end;

{------------------------------------}

{过程名:UnHook

{过程功能:卸载HOOK

{过程参数:无

{------------------------------------}

procedure UnHook;stdcall;

begin

UnHookAPI;

//卸载Hook

UnhookWindowsHookEx(DLLData^.Hook);

end;

{------------------------------------}

{过程名:DLL入口函数

{过程功能:进行DLL初始化,释放等

{过程参数:DLL状态

{------------------------------------}

procedure MyDLLHandler(Reason: Integer);

var

FHandle: LongWORD;

begin

case Reason of

DLL_PROCESS_ATTACH:

begin //建立文件映射,以实现DLL中的全局变量

FHandle := CreateFileMapping($FFFFFFFF, nil, PAGE_READWRITE, 0, $ffff, "MYDLLDATA");

if FHandle = 0 then

if GetLastError = ERROR_ALREADY_EXISTS then

[1] [2] [3] 下一页 




上一篇:压缩图像文件并转换成BMP格式

下一篇:Delphi使用VB编写的ActiveX控件全攻略

拦截其它程序的网络数据封包 相关文章:
·Firefox新插件增强弹出窗口拦截
·开启路由器的TCP拦截保护网络主机
·利用HOOK拦截封包原理
·关机消息的拦截
·用消息拦截技术制作系统日志
·[技巧]破V理论篇—拦截术(经典篇)
·解决文件下载弹出窗体被拦截
·网页挂马拦截防护性能大比拼
·谁是克星?4款网页木马拦截工具大比武
·C#+低级Windows API钩子拦截键盘输入
拦截其它程序的网络数据封包 相关软件:
·拦截淑女
·拦截爱情记忆
·美机拍摄《王伟拦截美机的录像》
·太空拦截机之自由计划(Space Interceptor Project Freedom)免CD补丁
·全能助手广告拦截专家V5.10
·3721上网助手之广告拦截专家V4.2 Build 01.18

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.viphot.com
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.viphot.com All Rights Reserved. 鄂ICP备05000083号Powered by:vipcn