取詞的過程
0判斷鼠標是否在壹個地方停留了壹段時間。
獲取鼠標的當前位置
2以鼠標位置為中心生成壹個矩形。
3懸掛API掛鉤
讓這個矩形生成壹個重畫消息。
5等待鉤子中的輸出字符。
6計算鼠標在哪個單詞上,保存這個單詞。
7如果妳得到這個詞,刪除API掛鉤。壹段時間後,無論是否得到單詞,都要移除API掛鉤。
8用單詞查詞庫,顯示解釋框。
如何鉤住魚鉤:
所謂掛鉤,其實就是在WindowsAPI入口寫壹個JMP·XXXX:XXXX的語句,跳轉到自己的代碼裏。
步驟如下:
1.獲取Windows API入口,用GetProcAddress實現。
2.保存API條目的前五個字節,因為JMP是0xEA,地址是4個字節。
3.編寫跳轉語句
這壹步是最復雜的。
Windows的代碼片段本不該寫,但微軟給自己留了後門。
壹個未發布的函數是AllocCsToDsAlias,
UINT WINAPI ALLOCCSTODSALIAS(UINT);
妳可以到這個函數的入口,把API代碼段的選擇器傳給他,他會返回壹個可寫的數據段選擇器。此選擇器用完了要釋放的項目。使用新的選擇器和API入口的偏移量合成壹個指針,就可以寫出windows的代碼片段了。