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

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

2010-9-15 11:27
20387
收藏
点赞0
打赏
分享
最新回复 (29)
雪    币: 5536
活跃值: 活跃值 (51)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
forgot 活跃值 26 2010-9-23 10:59
26
0
给个改良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)
雪    币: 326
活跃值: 活跃值 (15)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
快雪时晴 活跃值 4 2010-9-23 12:10
27
0
哦的神啊,原来py可以如此天书
雪    币: 343
活跃值: 活跃值 (10)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
iiii 活跃值 1 2010-9-23 12:46
28
0
@快雪时晴
py真的很高效的工具语言啊~~用起来很迅猛的~~

@forgot

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