TwMS 179.1 按键CALL VC++ 代码
PS:代码写的丑,请不要吐槽拉-.-void 按键Call(DWORD Vkey, BOOL PressDown)
{
if (PressDown)
{
DWORD CallAddr = 0x00F156AF;
DWORD Base = RM_4(0x1822D68);
DWORD 扩展码 = Get_通码断码(Vkey);
_asm{
push Vkey;
push 扩展码;
mov ecx, Base;
Call CallAddr;
}
return;
}
DWORD CallAddr = 0x00F12B86;
DWORD Base = RM_4(0x1822D68);
_asm{
push 0x0;
mov ecx, Base;
Call CallAddr;
}
return;
}
//真为按下 假为弹起 默认真
DWORD Get_通码断码(DWORD Vkey, BOOL 是否通码)
{
DWORD 扫描码 = MapVirtualKeyA(Vkey, 0);
DWORD 结果 = 0;
if (是否通码)
{
__asm{
push eax;
xor eax, eax;
or eax, 扫描码;
shl eax, 0x10;
mov 结果, eax;
pop eax;
}
return 结果;
}
__asm
{
push eax;
mov eax, 0xC0;
shl eax, 0x8;
or eax, 扫描码;
shl eax, 0x10;
or eax, 0x1;
mov 结果, eax;
pop eax;
}
return 结果;
} 看不懂 可教? 本帖最後由 kkmomo 於 2015-5-18 22:57 編輯
謝謝大大分享 先推再看
之前用MS內找到的按鍵call更新完結果已使用無效
比對了附近code的模式應該是沒錯@@
push 80020000
push 00000031
mov ecx,
call 00F1C858
kkmomo 發表於 2015-5-18 22:33
謝謝大大分享 先推再看
之前用MS內找到的按鍵call更新完結果已使用無效
无效是因为扩展码的原因无效,我上面已经给出了 kkmomo 發表於 2015-5-18 22:33
謝謝大大分享 先推再看
之前用MS內找到的按鍵call更新完結果已使用無效
00FED130 - 8B 0F - mov ecx, // = LPARAM (好像是叫Scancode??)
00FED132 - 81 E1 0000FF01 - and ecx,01FF0000 : [(float)20.0294]
00FED138 - 0B C1 - or eax,ecx
00FED13A - 0B 45 D8 - or eax,
00FED13D - 8B 4D D4 - mov ecx,
00FED140 - 89 07 - mov ,eax
00FED142 - B8 00010000 - mov eax,00000100
00FED147 - 89 01 - mov ,eax
00FED149 - FF 37 - push
00FED14B - 8B CE - mov ecx,esi //ECX =
00FED14D - FF 33 - push //VirtualKey
00FED14F - 50 - push eax //100
00FED150 - E8 97EBFFFF - call 00FEBCEC //按鍵CALL
剛無聊找的...有試過ALT鍵
試ALT鍵時 PUSH 的參數不管給原本的LPARAM還是運算過的
只要VirtualKey是對得好像都可執行
但試了'Y'鍵 給原本的LPARAM就崩潰 =口=...
沒時間深入研究 交給大大了 xDD 本帖最後由 kkmomo 於 2015-5-19 23:07 編輯
結果是我CallAddr更新錯了 哈哈
但同syoath 大所說還要轉成Scan Code 才能使用
沒bypass在遊戲中call MapVirtualKeyA 只會傳回0
懶得另寫程式了 直接查表測試ok
Key Scan Code:
https://msdn.microsoft.com/en-us ... 4%28v=vs.60%29.aspx
簡單調用:
mov eax, scancode
shl eax, 10
// ex: Ctrl scan code 1D -> 001D0000
push vk_key
push eax
mov ecx,
call CharKeyCall
Doem 發表於 2015-5-19 20:37
剛無聊找的...有試過ALT鍵
試ALT鍵時 PUSH 的參數不管給原本的LPARAM還是運算過的
只要VirtualKey是 ...
我调用的其实就是这个CALL更下层的地方
頁:
[1]