首页
社区
课程
招聘
[原创]汇编写的通用按键模拟器v1.2.2修正版
发表于: 2012-3-30 16:29 4810

[原创]汇编写的通用按键模拟器v1.2.2修正版

2012-3-30 16:29
4810
自己用asm32汇编写的通用按键模拟器v1.2.2
铁通把网给我断了,半个月没有上来,因此修正版更新晚了

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 70
活跃值: (40)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
另外把正在开发的1.3版中的一个小功能放出来,可以作个小工具用
上传的附件:
2012-3-30 16:32
0
雪    币: 70
活跃值: (40)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
3
;**************************************************************************************************************
;关于钩子的应用,钩子实际上不是什么复杂的东西,也许就难在其中较多的参数调用。
;下面是一个键盘钩子,这个钩子实现的功能是:
;        检测主调用程序输入的2个键值,看2个键组成的组合键是否同时按下,若同时按下,则修改结果参数为1,否则为0.
;        主程序通过检测结果参数,就可以断定是否同时按下了这2个键,从而作出相应的动作。
;==============================================================================================================
;        WRITTEN BY LIYU               
;        EMAIL:LYWINU@163.COM
;        转载时请保留此信息
;***************************************************************************************************************       

.386
.MODEL        FLAT,STDCALL
OPTION        CASEMAP:NONE

INCLUDE                        windows.inc
INCLUDE                        kernel32.inc
INCLUDELIB                kernel32.lib
INCLUDE                        user32.inc
INCLUDELIB                user32.lib

_KeyBHookProc        PROTO        ,:DWORD,:DWORD,:DWORD
       
.data       
.data?       
       
        hKeyBHook        dd        ?
        hWnd                dd        ?       
        hCWnd                dd        ?
        hSelWnd                dd        ?
        hInstance        dd        ?
               
        dwTestCtl        dd        ?
        dwTestChar        dd        ?
        dwCtlScan        dd        ?
        dwCharScan        dd        ?
        dwResult        dd        ?       
       
.CODE

_DllEntry proc, hInst,dwReason,dwReserved
        mov        eax,dwReason
                push        hInst
                pop        hInstance

                mov        eax,TRUE
        ret
_DllEntry endp
_SetKeyBHookProc        proc,        _lpdwResult,_dwCtlScan,_dwCharScan
       
        push        _dwCtlScan
        pop        dwCtlScan
        push        _dwCharScan
        pop        dwCharScan
        push        _lpdwResult
        pop        dwResult
               
        xor        eax,eax
        mov        dwTestCtl,eax
        mov        dwTestChar,eax
        mov        eax,dwResult
        xor        ebx,ebx
        mov        [eax],ebx
       
        invoke        SetWindowsHookEx,WH_KEYBOARD,addr _KeyBHookProc,hInstance,0
        mov        hKeyBHook,eax
       
        ret

_SetKeyBHookProc endp
_UnhookKeyBHookProc proc
       
        invoke        UnhookWindowsHookEx,hKeyBHook

        ret
_UnhookKeyBHookProc endp

_KeyBHookProc proc ,_dwCode,_wParam,_lParam

        mov        eax,_dwCode
        .if        eax == HC_ACTION
       
                mov        eax,_lParam
                mov        ebx,eax
                shr        ebx,16
                and        ebx,000ffh
                test        eax,80000000h
                je        @f
                .if        ebx == dwCtlScan
                        inc        dwTestCtl
                        mov        eax,dwTestCtl
                       
                        .if        eax == dwTestChar
                               
                                mov        eax,_lParam
                                test        eax,040000000h
                                jne        @f
                               
                                mov        eax,dwResult
                                mov        eax,[eax]
                                mov        eax,1
               
                                invoke        UnhookWindowsHookEx,hKeyBHook
                                ret
                        .endif
               
                .elseif        ebx == dwCharScan
                        inc        dwTestChar
                        mov        eax,dwTestCtl
                       
                        .if        eax == dwTestChar
                       
                                mov        eax,_lParam
                                test        eax,040000000h
                                jne        @f
                               
                                mov        eax,dwResult
                                mov        eax,[eax]
                                mov        eax,1
                               
                                invoke        UnhookWindowsHookEx,hKeyBHook
                                ret
                        .endif
                .else
                       
                        xor        eax,eax
                        mov        dwTestCtl,eax
                        mov        dwTestChar,eax
                .endif
               
        .endif
               
                @@:
                invoke        CallNextHookEx,hKeyBHook,_dwCode,_wParam,_lParam
                ret
       
_KeyBHookProc endp

END _DllEntry
2012-3-30 16:34
0
雪    币: 150
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
谢谢分享
2014-3-17 23:53
0
游客
登录 | 注册 方可回帖
返回
//