-
-
[求助]inline hook keyboardclassservicecallback的代码有些地方理解不了,求赐教。
-
发表于: 2013-10-29 22:12 3274
-
文章地址:5bcK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3u0D9L8$3N6Q4x3X3g2U0M7$3c8F1i4K6u0W2L8X3g2@1i4K6u0r3M7$3c8A6L8X3N6Q4x3V1k6S2M7Y4c8A6j5$3I4W2i4K6u0r3k6r3g2@1j5h3W2D9M7#2)9J5c8U0b7#2z5o6x3&6z5e0R3`.
部分代码如下:
这段代码不理解,尤其是这几句:
其中最不理解的两个问题,1.作者何以知道byte ptr [ebx+2]这个地方是按钮码,2.0xAAAAAAAA是干什么的,如果说“是占位符,ChangeFake_Function()根据这个标志,对这段代码进行扫描,当扫描到0xAAAAAAAA的时候,将这个指针更改为最终要访问的指针。”那么程序中明明是先执行ChangeFake_Function(),再HOOK的啊。
部分代码如下:
__declspec (naked) VOID fake_OldFunction ( PDEVICE_OBJECT DeviceObject, PKEYBOARD_INPUT_DATA InputDataStart, PKEYBOARD_INPUT_DATA InputDataEnd, PULONG InputDataConsumed ) { __asm int 3 __asm { push eax push ebx push ecx push esi xor esi,esi mov eax, [0xAAAAAAAA]; mov ebx, [esp+0x18] mov cl , byte ptr [ebx+2];//按键码 mov ch , byte ptr [eax];//得到当前位置->ch cmp ch , MAXBUF jnz NotLastPlace mov ch, 0x0; NotLastPlace: inc ch movzx si,ch mov byte ptr [eax], ch mov byte ptr [eax+esi],cl pop esi pop ecx pop ebx pop eax jmp Proxy_OldFunction //★在这一系列JMP中,没有一处使用CALL,简化了代码,增强了稳定性 } }
这段代码不理解,尤其是这几句:
mov eax, [0xAAAAAAAA]; mov ebx, [esp+0x18] mov cl , byte ptr [ebx+2];//按键码 mov ch , byte ptr [eax];//得到当前位置->ch
其中最不理解的两个问题,1.作者何以知道byte ptr [ebx+2]这个地方是按钮码,2.0xAAAAAAAA是干什么的,如果说“是占位符,ChangeFake_Function()根据这个标志,对这段代码进行扫描,当扫描到0xAAAAAAAA的时候,将这个指针更改为最终要访问的指针。”那么程序中明明是先执行ChangeFake_Function(),再HOOK的啊。
赞赏
他的文章
- [求助]inline hook keyboardclassservicecallback的代码有些地方理解不了,求赐教。 3275
- [求助]请教大家,脱完程序的壳aspack2.12后,用OD载入提示入口点位于代码外部,不能运行,而修复输入表后仅能在第一次运行. 3535
- [求助]我是新手,请问大家,我在安装好driverstube后,点startsoftice出错. 2595
- [求助]请教大家,为什么用OD在载入游戏后,登陆获得信息后,进入游戏界面前,游戏会停止不动,而且还不能按alt+tab切换到其它程序的窗口? 3661
- [求助]请问大家用OD载入要求命令行参数的程序后,怎样能运行程序? 4444
赞赏
雪币:
留言: