冰楓論壇

 找回密碼
 立即註冊
搜索
查看: 5016|回覆: 7
打印 上一主題 下一主題

[原創數據] TwMS 179.1 按键CALL VC++ 代码

[複製鏈接]

20

主題

1

好友

145

積分

技術師

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

UID
100173
帖子
53
主題
20
精華
0
積分
145
楓幣
10467
威望
141
存款
0
贊助金額
0
推廣
0
GP
88
閱讀權限
100
性別
保密
在線時間
75 小時
註冊時間
2015-4-23
最後登入
2022-5-4
跳轉到指定樓層
1
發表於 2015-5-18 22:23:43 |只看該作者 |正序瀏覽
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 结果;
}

點評

偷比  是說這是在用E寫C++嗎XD  發表於 2015-5-18 23:00
偷比  A__A終於有人重新實現  發表於 2015-5-18 22:59
[發帖際遇]: syoath 樂於助人,獎勵 2 楓幣 幸運榜 / 衰神榜
收藏收藏0 推0 噓0


把本文推薦給朋友或其他網站上,每次被點擊增加您在本站積分: 1彩票
複製連結並發給好友,以賺取推廣點數
簡單兩步驟,註冊、分享網址,即可獲得獎勵! 一起推廣文章換商品、賺$$
頭像被屏蔽

1

主題

1

好友

-2

積分

禁止訪問

UID
101930
帖子
43
主題
1
精華
0
積分
-2
楓幣
-180
威望
-4
存款
0
贊助金額
0
推廣
0
GP
-1
閱讀權限
0
性別
保密
在線時間
41 小時
註冊時間
2015-5-5
最後登入
2018-1-22
8
發表於 2015-5-20 09:06:15 來自手機 |只看該作者
提示: 作者被禁止或刪除 內容自動屏蔽
回覆

使用道具 舉報

20

主題

1

好友

145

積分

技術師

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

UID
100173
帖子
53
主題
20
精華
0
積分
145
楓幣
10467
威望
141
存款
0
贊助金額
0
推廣
0
GP
88
閱讀權限
100
性別
保密
在線時間
75 小時
註冊時間
2015-4-23
最後登入
2022-5-4
7
發表於 2015-5-20 01:25:07 |只看該作者
Doem 發表於 2015-5-19 20:37 [url=forum.php?mod=redirect&goto=findpost&pid=1021871&ptid=127918][/url]
剛無聊找的...有試過ALT鍵
試ALT鍵時 PUSH [EDI]的參數不管給原本的LPARAM還是運算過的
只要VirtualKey是 ...

我调用的其实就是这个CALL更下层的地方
回覆

使用道具 舉報

46

主題

6

好友

144

積分

技術師

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

UID
15835
帖子
2025
主題
46
精華
0
積分
144
楓幣
2209
威望
125
存款
0
贊助金額
0
推廣
0
GP
164
閱讀權限
100
性別
保密
在線時間
371 小時
註冊時間
2012-10-23
最後登入
2022-4-21
6
發表於 2015-5-19 23:04:03 |只看該作者
本帖最後由 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, [CharBase]
call CharKeyCall
回覆

使用道具 舉報

67

主題

6

好友

225

積分

技術師

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

UID
7067
帖子
2823
主題
67
精華
0
積分
225
楓幣
20085
威望
181
存款
19856
贊助金額
0
推廣
0
GP
1671
閱讀權限
100
性別
保密
在線時間
870 小時
註冊時間
2012-3-23
最後登入
2024-11-2
5
發表於 2015-5-19 20:37:53 |只看該作者
kkmomo 發表於 2015-5-18 22:33 [url=forum.php?mod=redirect&goto=findpost&pid=1020871&ptid=127918][/url]
謝謝大大分享 先推再看

之前用MS內找到的按鍵call更新完結果已使用無效
  1. 00FED130 - 8B 0F                 - mov ecx,[edi]   //[EDI] = LPARAM (好像是叫Scancode??)
  2. 00FED132 - 81 E1 0000FF01        - and ecx,01FF0000 : [(float)20.0294]
  3. 00FED138 - 0B C1                 - or eax,ecx
  4. 00FED13A - 0B 45 D8              - or eax,[ebp-28]
  5. 00FED13D - 8B 4D D4              - mov ecx,[ebp-2C]
  6. 00FED140 - 89 07                 - mov [edi],eax
  7. 00FED142 - B8 00010000           - mov eax,00000100
  8. 00FED147 - 89 01                 - mov [ecx],eax
  9. 00FED149 - FF 37                 - push [edi]
  10. 00FED14B - 8B CE                 - mov ecx,esi   //ECX = [018273DC]
  11. 00FED14D - FF 33                 - push [ebx]      //VirtualKey
  12. 00FED14F - 50                    - push eax        //100
  13. 00FED150 - E8 97EBFFFF           - call 00FEBCEC   //按鍵CALL
複製代碼
剛無聊找的...有試過ALT鍵
試ALT鍵時 PUSH [EDI]的參數不管給原本的LPARAM還是運算過的
只要VirtualKey是對得好像都可執行
但試了'Y'鍵 給原本的LPARAM就崩潰 =口=...

沒時間深入研究 交給大大了 xDD
回覆

使用道具 舉報

20

主題

1

好友

145

積分

技術師

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

UID
100173
帖子
53
主題
20
精華
0
積分
145
楓幣
10467
威望
141
存款
0
贊助金額
0
推廣
0
GP
88
閱讀權限
100
性別
保密
在線時間
75 小時
註冊時間
2015-4-23
最後登入
2022-5-4
4
發表於 2015-5-18 23:05:49 |只看該作者
kkmomo 發表於 2015-5-18 22:33 [url=forum.php?mod=redirect&goto=findpost&pid=1020871&ptid=127918][/url]
謝謝大大分享 先推再看

之前用MS內找到的按鍵call更新完結果已使用無效

无效是因为扩展码的原因无效,我上面已经给出了

點評

kkmomo  感謝 ,正在邊理解邊寫寫看XD  發表於 2015-5-18 23:09
回覆

使用道具 舉報

46

主題

6

好友

144

積分

技術師

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

UID
15835
帖子
2025
主題
46
精華
0
積分
144
楓幣
2209
威望
125
存款
0
贊助金額
0
推廣
0
GP
164
閱讀權限
100
性別
保密
在線時間
371 小時
註冊時間
2012-10-23
最後登入
2022-4-21
3
發表於 2015-5-18 22:33:31 |只看該作者
本帖最後由 kkmomo 於 2015-5-18 22:57 編輯

謝謝大大分享 先推再看

之前用MS內找到的按鍵call更新完結果已使用無效
比對了附近code的模式應該是沒錯@@

push 80020000
push 00000031
mov ecx,[01822D68]
call 00F1C858
[發帖際遇]: kkmomo 幫「歐young妮妮」買業配文,花了 2 楓幣 幸運榜 / 衰神榜
回覆

使用道具 舉報

68

主題

3

好友

153

積分

迷你贊助會員

Rank: 3Rank: 3

UID
96679
帖子
495
主題
68
精華
0
積分
153
楓幣
4367
威望
108
存款
0
贊助金額
150
推廣
0
GP
34
閱讀權限
30
性別
保密
在線時間
154 小時
註冊時間
2015-3-25
最後登入
2022-11-11
2
發表於 2015-5-18 22:30:53 |只看該作者
看不懂  可教?
[發帖際遇]: 萌萌連連 搭「雲豹勘災」不但引發民怨,還花費油資 3 楓幣 幸運榜 / 衰神榜
回覆

使用道具 舉報

您需要登入後才可以回文 登入 | 立即註冊

廣告刊登意見回饋關於我們管群招募本站規範DMCA隱私權政策

Copyright © 2011-2024 冰楓論壇, All rights reserved

免責聲明:本網站是以即時上載留言的方式運作,本站對所有留言的真實性、完整性及立場等,不負任何法律責任。

而一切留言之言論只代表留言者個人意見,並非本網站之立場,用戶不應信賴內容,並應自行判斷內容之真實性。

小黑屋|手機版|冰楓論壇

GMT+8, 2024-11-28 06:10

回頂部