首页
社区
课程
招聘
[原创]PYdotDLL. a simple python hook engine / update 2010.9.28
发表于: 2010-9-15 11:27 22184

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

2010-9-15 11:27
22184
收藏
免费 7
支持
分享
最新回复 (29)
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
26
给个改良decorator的方案,仅供参考。


import inspect

def is_recursion():
    def get_code(depth):
        return inspect.currentframe(depth+1).f_code
    return get_code(1) is get_code(2)

def hook(dllname, funcname=None, calltype=None, restype=c_ulong, **kwargs):

    def decorator(f):

        if funcname is None:
            funcname = f.__name__

        functype = {
            None: WINFUNCTYPE,
            'C': CFUNCTYPE, 
        } [calltype]
        
        argnames = inspect.getargspec(f).args
        argtypes = [kwargs.get(argname, c_ulong) for argname in argnames]

        prototype = functype(restype, *argtypes)
        trampoline = prototype(hook_engine(dllname, funcname))

        def g(*v, **k):
            if is_recursion():
                return trampoline(*v, **k)
            else:
                return f(**v, **k)
        return g

    return decorator

@hook('user32')
def MessageBoxA(hWnd, lpText, lpCaption, uType):
    return MessageBoxA(a, 'fuck', c, d)
2010-9-23 10:59
0
雪    币: 370
活跃值: (15)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
27
哦的神啊,原来py可以如此天书
2010-9-23 12:10
0
雪    币: 393
活跃值: (100)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
28
@快雪时晴
py真的很高效的工具语言啊~~用起来很迅猛的~~

@forgot

感觉和我写的那个没什么大差别 我就不改了
- -# 呵呵 我还是比较喜欢这个 OriginFuncion = PYdotDLL_HOOK_ReturnOriginFunction
2010-9-23 12:46
0
雪    币: 254
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
29
看不懂,太杯具了。写多一篇来科普下吧。。
2010-9-23 17:11
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
30
好东西,先谢过楼主了!
2010-9-28 01:01
0
雪    币: 204
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
31
确实杯具,越看越糊涂。感觉该回炉再造了
2010-12-30 14:31
0
游客
登录 | 注册 方可回帖
返回
//