首页
论坛
课程
招聘
[原创]PYdotDLL. a simple python hook engine / update 2010.9.28
2010-9-15 11:27 20358

[原创]PYdotDLL. a simple python hook engine / update 2010.9.28

2010-9-15 11:27
20358
如题所说。
这是一个简单的PYTHON HOOK引擎。
因为PYTHON是一个高效率的脚本语言,所以借住这个你能快速高效的HOOK所要分析的目标函数,进而分析各种你需要的。
当然,具体如何使用就得看你的意愿和想法了。

update 2010.9.17:
增加了一个HOOKDecorator,使用更简单。
p.s.还并不明白Decorator是为什么而设计,所以也不知道在这里用Decorator是否合适。
等有机会弄清楚了,如果不合适的话就去掉

update 2010.9.28
把HookProc代码放上去了。并且增加了一个IATHOOK和EATHOOK。
以后不会再在这儿更新了。
新地址:http://code.google.com/p/pydotdll/
欢迎加入 = =#

Hook LoadLibraryA
    @HOOKDecorator('kernel32.LoadLibraryA', dll=ctypes.c_char_p)
    def LoadLibraryA(dll):
        handle = OriginFuncion(dll)
        print '%s: 0x%08X' % (os.path.basename(dll), handle)
        return handle


Hook MessageBoxA
    @HOOKDecorator('user32.MessageBoxA', title=ctypes.c_char_p)
    def MessageBoxA(handle, msg, title, type):
        return OriginFuncion(handle, msg, 'PYdotDLL!!', type)

TestLoad的代码,fasm
format PE console

include "%include%/win32ax.inc"

xx:
i MessageBoxA, 0, 'Hello guy !', 'i am title .', 0
ret
entry $
i LoadLibraryA, 'PYdotDLL.dll'
i CreateThread, 0, 0, xx, 0, 0, 0
ret



Hook InternetConnectA
redirect www.baidu.com 2 bbs.pediy.com
    @HOOKDecorator('wininet.InternetConnectA', servername=ctypes.c_char_p)
    def InternetConnectA(handle, servername, serverport, username, password, service, flags, context):
        if servername.lower() == 'www.baidu.com':
            servername = 'bbs.pediy.com'
            print 'Redirect It ! : www.baidu.com -> bbs.pediy.com'
            sys.stdout.flush()
        return OriginFuncion(handle, servername, serverport, username, password, service, flags, context)



你可以在这里下载所有代码 PYdotDLL-0.7.6.zip

[注意] 欢迎加入看雪团队!base上海,招聘安全工程师、逆向工程师多个坑位等你投递!

上传的附件:
收藏
点赞0
打赏
分享
最新回复 (29)
雪    币: 5536
活跃值: 活跃值 (51)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
forgot 活跃值 26 2010-9-16 13:23
2
0
这么好的帖子没人顶啊
雪    币: 1480
活跃值: 活跃值 (68)
能力值: ( LV15,RANK:670 )
在线值:
发帖
回帖
粉丝
cntrump 活跃值 13 2010-9-16 13:42
3
0
不会玩大蛇。。。
雪    币: 175
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
imbadyc 活跃值 2010-9-16 15:48
4
0
很好,很强大~!顶
雪    币: 220
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
mywxc 活跃值 2010-9-16 16:08
5
0
沙发!  顶  太呛眼了。。。
雪    币: 2136
活跃值: 活跃值 (402)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
zhouws 活跃值 2 2010-9-16 19:33
6
0
forgot大牛说顶,我也要顶,最近正学习python来搞测试.我连帖子原理都还不晓得
雪    币: 343
活跃值: 活跃值 (10)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
iiii 活跃值 1 2010-9-16 20:34
7
0
感谢forgot
感谢kanxue

然后再次表达对另外一个版块N位版主的不满。
雪    币: 210
活跃值: 活跃值 (18)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
wyshzz 活跃值 4 2010-9-16 23:15
8
0
赞赞,学习了。python威武...
雪    币: 5536
活跃值: 活跃值 (51)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
forgot 活跃值 26 2010-9-18 09:25
9
0
可以考虑设计个decorator
@hook('user32', 'MessageBoxA', msg=c_char_p, title=c_char_p) # default type=c_ulong
def my_MessageBox(hwnd, msg, title, icon):
    yield (hwnd, msg, title, icon)
雪    币: 210
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wangweimin 活跃值 2010-9-18 11:58
10
0
那个dll的代码,弄公开吗?
雪    币: 221
活跃值: 活跃值 (21)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
weizi 活跃值 1 2010-9-18 16:31
11
0
这个好,dll源码有吗?
雪    币: 343
活跃值: 活跃值 (10)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
iiii 活跃值 1 2010-9-18 17:00
12
0
@forgot
谢谢提醒,我试试。

@wangweimin, @weizi
dll源码有打包的
hooklib的话 我得整理一下才能发上来,原来的是个大杂烩 没必要发上来
雪    币: 210
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wangweimin 活跃值 2010-9-19 10:28
13
0
相当期待
雪    币: 221
活跃值: 活跃值 (21)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
weizi 活跃值 1 2010-9-19 17:30
14
0
这个好,一定要继续更新
雪    币: 326
活跃值: 活跃值 (15)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
快雪时晴 活跃值 4 2010-9-19 18:11
15
0
看了半天,猜测这不是逆python二进制程序,而是用python来实现api hook,强大!
python看来不仅仅是个日常管理脚本了,还可干更多事情
雪    币: 18
活跃值: 活跃值 (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ipfans 活跃值 2010-9-20 16:04
16
0
这个东西给力,收下了
雪    币: 4890
活跃值: 活跃值 (364)
能力值: ( LV15,RANK:1348 )
在线值:
发帖
回帖
粉丝
lelfei 活跃值 22 2010-9-20 21:44
17
0
正在努力学习python中。。。
雪    币: 29
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
webwizard 活跃值 2010-9-21 01:20
18
0
不错。试试看先
=================
刚刚下载下来,可是不会用。
怎么将DLL加载进 例子中的 IE进程?

还有,是不是只要修改PYdotDLL.dll 同目录下的PYdotDLL.py里面的脚本,就能实现其他功能?

菜鸟静候回答!
雪    币: 221
活跃值: 活跃值 (21)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
weizi 活跃值 1 2010-9-21 20:57
19
0
如果用python的话,大家可以看看paimei这个包,可用python调式程序,设置断点等软件。
雪    币: 156
活跃值: 活跃值 (11)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
cektop 活跃值 2010-9-21 21:06
20
0
顶起来 好东西
雪    币: 343
活跃值: 活跃值 (10)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
iiii 活跃值 1 2010-9-22 15:30
21
0
是的~~~只要修改PYdotDLL.py
至于如何让IE加载DLL 你可以搜索: DLL注入/lpk补丁
雪    币: 669
活跃值: 活跃值 (10)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
patapon 活跃值 4 2010-9-22 17:10
22
0
感谢lz开源~
雪    币: 259
活跃值: 活跃值 (53)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wangkaicj 活跃值 2010-9-23 09:59
23
0
先顶一下。请问LZ:
1。 拿到没装Python的机器上怎么跑?特别是那个_ctypes.dll(pyd,py等文件)要放到何处呢??
2。 不会要先装python2.6吧???
雪    币: 343
活跃值: 活跃值 (10)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
iiii 活跃值 1 2010-9-23 10:07
24
0
需要装python2.6
也没打算做成portable,那个没有必要的。
游客
登录 | 注册 方可回帖
返回