免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4375 | 回复: 10
打印 上一主题 下一主题

Perl的钩子函数 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-05-26 19:41 |只看该作者 |倒序浏览
本帖最后由 黑色阳光_cu 于 2010-05-27 16:36 编辑

见附件,这样子的使用方法,可以用来跟踪包的函数调用情况

module_hook("LWP::UserAgent");
module_hook("LWP");
module_hook("HTTP::Response");
module_hook("IO::Socket");
module_hook("IO::Socket::INET");
module_hook("IO::Select");

my $lwp = LWP::UserAgent->new();
my $response = $lwp->get("http://www.googl.cn");
if ($response->is_success())
{
        ;
}


############# 运行结果 ##############################

D:\>today\hook_module.pl
Func: new
Caller: main    File: D:\today\hook_module.pl   Line: 72

Func: _agent
Caller: LWP::UserAgent  File: F:/Perl/lib/LWP/UserAgent.pm      Line: 97

Func: agent
Caller: LWP::UserAgent  File: F:/Perl/lib/LWP/UserAgent.pm      Line: 97

Func: default_header
Caller: LWP::UserAgent  File: F:/Perl/lib/LWP/UserAgent.pm      Line: 669

Func: default_headers
Caller: LWP::UserAgent  File: F:/Perl/lib/LWP/UserAgent.pm      Line: 654

Func: parse_head
Caller: LWP::UserAgent  File: F:/Perl/lib/LWP/UserAgent.pm      Line: 101

Func: set_my_handler
Caller: LWP::UserAgent  File: F:/Perl/lib/LWP/UserAgent.pm      Line: 612

Func: remove_handler
Caller: LWP::UserAgent  File: F:/Perl/lib/LWP/UserAgent.pm      Line: 708

Func: add_handler
Caller: LWP::UserAgent  File: F:/Perl/lib/LWP/UserAgent.pm      Line: 710

Func: get
Caller: main    File: D:\today\hook_module.pl   Line: 73

Func: _process_colonic_headers
Caller: LWP::UserAgent  File: F:/Perl/lib/LWP/UserAgent.pm      Line: 388

Func: request
Caller: LWP::UserAgent  File: F:/Perl/lib/LWP/UserAgent.pm      Line: 389

Func: simple_request
Caller: LWP::UserAgent  File: F:/Perl/lib/LWP/UserAgent.pm      Line: 261

Func: prepare_request
Caller: LWP::UserAgent  File: F:/Perl/lib/LWP/UserAgent.pm      Line: 247

Func: run_handlers
Caller: LWP::UserAgent  File: F:/Perl/lib/LWP/UserAgent.pm      Line: 213

Func: handlers
Caller: LWP::UserAgent  File: F:/Perl/lib/LWP/UserAgent.pm      Line: 778

Func: run_handlers
Caller: LWP::UserAgent  File: F:/Perl/lib/LWP/UserAgent.pm      Line: 221

Func: handlers
Caller: LWP::UserAgent  File: F:/Perl/lib/LWP/UserAgent.pm      Line: 778

Func: send_request
Caller: LWP::UserAgent  File: F:/Perl/lib/LWP/UserAgent.pm      Line: 253

Func: progress
Caller: LWP::UserAgent  File: F:/Perl/lib/LWP/UserAgent.pm      Line: 124

Func: run_handlers
Caller: LWP::UserAgent  File: F:/Perl/lib/LWP/UserAgent.pm      Line: 126

Func: handlers
Caller: LWP::UserAgent  File: F:/Perl/lib/LWP/UserAgent.pm      Line: 771

Func: protocols_allowed
Caller: LWP::UserAgent  File: F:/Perl/lib/LWP/UserAgent.pm      Line: 135

Func: protocols_forbidden
Caller: LWP::UserAgent  File: F:/Perl/lib/LWP/UserAgent.pm      Line: 135

Func: new
Caller: Net::HTTP       File: F:/Perl/lib/Net/HTTP.pm   Line: 19

Func: configure
Caller: Net::HTTP       File: F:/Perl/lib/Net/HTTP.pm   Line: 29

Func: _sock_info
Caller: IO::Socket::INET        File: F:/Perl/lib/IO/Socket/INET.pm     Line: 145

Func: _get_proto_number
Caller: IO::Socket::INET        File: F:/Perl/lib/IO/Socket/INET.pm     Line: 81

Func: _sock_info
Caller: IO::Socket::INET        File: F:/Perl/lib/IO/Socket/INET.pm     Line: 160

Func: _get_proto_name
Caller: IO::Socket::INET        File: F:/Perl/lib/IO/Socket/INET.pm     Line: 168

Func: _get_addr
Caller: IO::Socket::INET        File: F:/Perl/lib/IO/Socket/INET.pm     Line: 173

Func: inet_aton
Caller: IO::Socket::INET        File: F:/Perl/lib/IO/Socket/INET.pm     Line: 131

Func: pack_sockaddr_in
Caller: IO::Socket::INET        File: F:/Perl/lib/IO/Socket/INET.pm     Line: 232

Func: connect
Caller: IO::Socket::INET        File: F:/Perl/lib/IO/Socket/INET.pm     Line: 232

Func: new
Caller: IO::Socket      File: F:/Perl/lib/IO/Socket.pm  Line: 118

Func: add
Caller: IO::Select      File: F:/Perl/lib/IO/Select.pm  Line: 29

Func: _update
Caller: IO::Select      File: F:/Perl/lib/IO/Select.pm  Line: 37

Func: _fileno
Caller: IO::Select      File: F:/Perl/lib/IO/Select.pm  Line: 76

Func: can_write
Caller: IO::Socket      File: F:/Perl/lib/IO/Socket.pm  Line: 121

Func: handles
Caller: IO::Select      File: F:/Perl/lib/IO/Select.pm  Line: 116

Func: new
Caller: LWP::Protocol::http     File: F:/Perl/lib/LWP/Protocol/http.pm  Line: 357

Func: code
Caller: HTTP::Response  File: F:/Perl/lib/HTTP/Response.pm      Line: 16

Func: message
Caller: HTTP::Response  File: F:/Perl/lib/HTTP/Response.pm      Line: 17

Func: request
Caller: LWP::Protocol::http     File: F:/Perl/lib/LWP/Protocol/http.pm  Line: 366

Func: peerhost
Caller: LWP::Protocol::http     File: F:/Perl/lib/LWP/Protocol/http.pm  Line: 77


Func: peeraddr
Caller: IO::Socket::INET        File: F:/Perl/lib/IO/Socket/INET.pm     Line: 305

Func: sockaddr_in
Caller: IO::Socket::INET        File: F:/Perl/lib/IO/Socket/INET.pm     Line: 292

Func: inet_ntoa
Caller: IO::Socket::INET        File: F:/Perl/lib/IO/Socket/INET.pm     Line: 306

Func: peerport
Caller: LWP::Protocol::http     File: F:/Perl/lib/LWP/Protocol/http.pm  Line: 77


Func: sockaddr_in
Caller: IO::Socket::INET        File: F:/Perl/lib/IO/Socket/INET.pm     Line: 299

Func: run_handlers
Caller: LWP::Protocol   File: F:/Perl/lib/LWP/Protocol.pm       Line: 132

Func: handlers
Caller: LWP::UserAgent  File: F:/Perl/lib/LWP/UserAgent.pm      Line: 778

Func: request
Caller: HTTP::Config    File: F:/Perl/lib/HTTP/Config.pm        Line: 174

Func: handlers
Caller: LWP::Protocol   File: F:/Perl/lib/LWP/Protocol.pm       Line: 149

Func: progress
Caller: LWP::Protocol   File: F:/Perl/lib/LWP/Protocol.pm       Line: 157

Func: handlers
Caller: LWP::Protocol   File: F:/Perl/lib/LWP/Protocol.pm       Line: 149

Func: progress
Caller: LWP::Protocol   File: F:/Perl/lib/LWP/Protocol.pm       Line: 157

Func: handlers
Caller: LWP::Protocol   File: F:/Perl/lib/LWP/Protocol.pm       Line: 149

Func: progress
Caller: LWP::Protocol   File: F:/Perl/lib/LWP/Protocol.pm       Line: 157

Func: handlers
Caller: LWP::Protocol   File: F:/Perl/lib/LWP/Protocol.pm       Line: 149

Func: progress
Caller: LWP::Protocol   File: F:/Perl/lib/LWP/Protocol.pm       Line: 157

Func: request
Caller: LWP::UserAgent  File: F:/Perl/lib/LWP/UserAgent.pm      Line: 195

Func: run_handlers
Caller: LWP::UserAgent  File: F:/Perl/lib/LWP/UserAgent.pm      Line: 198

Func: handlers
Caller: LWP::UserAgent  File: F:/Perl/lib/LWP/UserAgent.pm      Line: 778

Func: progress
Caller: LWP::UserAgent  File: F:/Perl/lib/LWP/UserAgent.pm      Line: 200

Func: redirects
Caller: LWP::UserAgent  File: F:/Perl/lib/LWP/UserAgent.pm      Line: 264

Func: previous
Caller: HTTP::Response  File: F:/Perl/lib/HTTP/Response.pm      Line: 103

Func: run_handlers
Caller: LWP::UserAgent  File: F:/Perl/lib/LWP/UserAgent.pm      Line: 270

Func: handlers
Caller: LWP::UserAgent  File: F:/Perl/lib/LWP/UserAgent.pm      Line: 771

Func: code
Caller: LWP::UserAgent  File: F:/Perl/lib/LWP/UserAgent.pm      Line: 274

Func: is_success
Caller: main    File: D:\today\hook_module.pl   Line: 74

hook_module.zip

755 Bytes, 下载次数: 29

论坛徽章:
0
2 [报告]
发表于 2010-05-26 19:48 |只看该作者
本帖最后由 黑色阳光_cu 于 2010-05-26 19:52 编辑

另,hook核心函数的办法:

D:\>hook_core_func.pl -x
Unknown option: x
catch "Unknown option: x" error

hook_core_func.zip

453 Bytes, 下载次数: 39

论坛徽章:
0
3 [报告]
发表于 2010-05-26 20:34 |只看该作者
支持一下!

论坛徽章:
0
4 [报告]
发表于 2010-05-26 20:37 |只看该作者
很不错啊,黑丝袜给你顶了!

论坛徽章:
0
5 [报告]
发表于 2010-05-26 21:05 |只看该作者
      睡着了。 没看懂。

论坛徽章:
0
6 [报告]
发表于 2010-05-26 21:11 |只看该作者
很高深,顶一下!

论坛徽章:
0
7 [报告]
发表于 2010-05-26 21:51 |只看该作者

不错,支持一下

论坛徽章:
0
8 [报告]
发表于 2010-05-27 08:36 |只看该作者
回复 1# 黑色阳光_cu


   

论坛徽章:
0
9 [报告]
发表于 2010-05-27 08:47 |只看该作者
赞一个,调试起来就方便多了,问一句,对继承的方法 能hook不?

论坛徽章:
0
10 [报告]
发表于 2010-05-27 08:58 |只看该作者
本帖最后由 黑色阳光_cu 于 2010-05-27 09:01 编辑
赞一个,调试起来就方便多了,问一句,对继承的方法 能hook不?
dugu072_cu 发表于 2010-05-27 08:47



:em27:

要hook父类

# module_hook("http");
module_hook("LWP::UserAgent");
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP