原理:加速外掛程式其實是修改時鐘頻率達到加速的目的
首先我們建立乙個過程,這個過程就是本程式的核心部份:
procedure setring(value:word); stdcall;
const zdh = 03; // 設乙個中斷號
var
idt : array [0..5] of byte; // 儲存idt表
og : dword; //存放舊向量
begin
asm
push ebx
sidt idt //讀入中斷描述符表
mov ebx, dword ptr [idt+2] //idt表基位址
add ebx, 8*zdh //計算中斷在中斷描述符表中的位置
cli //關中斷
mov dx, word ptr [ebx+6]
shl edx, 16d
mov dx, word ptr [ebx]
mov [og], edx
mov eax, offset @@ring0 //指向ring0級**段
mov word ptr [ebx], ax //低16位,儲存在1,2位
shr eax, 16d
mov word ptr [ebx+6], ax //高16位,儲存在6,7位
int zdh //中斷
mov ebx, dword ptr [idt+2] //重新定位
add ebx, 8*zdh
mov edx, [og]
mov word ptr [ebx], dx
shr edx, 16d
mov word ptr [ebx+6], dx //恢復被改了的向量
pop ebx
jmp @@exitasm //到exitasm處
@@ring0: //ring0,這個也是最最最核心的東東
mov al, 34 //寫入8253控制暫存器
out 43,al
mov ax,value //寫入定時值
out 40,al //寫定時值低位
mov al,ah
out 40,al //寫定時值高位
iretd //返回
@@exitasm:
end;
end;
下面我們就試著用一下這個過程來做乙個類似於「變速齒輪」的乙個東東吧!
先加乙個視窗,在視窗上放上乙個trackbar控制項把其max設為20,min設為1,把position設為10,在這個控制項的change事件裡寫上:
setring(strtoint(' '+inttostr(1742+(10-trackbar1.position)*160)));
因為windows預設的值為 1742,所以我們把1742做為基數,又因為值越小越快,反之越慢的原理,所以寫了這樣乙個公式,好了,這就是「變速齒輪」
遊戲外掛程式分析
這個動態連線庫的作用很大,不要低估了哦,它可以切入所有的程序空間,也就是可以載入到所有的遊戲裡面哦,只要用對,你會發現很有用途的 這個需要你複習一下win32程式設計的基礎知識了,呵呵,趕快去看書吧 2截獲訊息 有些遊戲的響應機制比較簡單,是基於訊息的,或者用什麼定時器的東西,這個時候你就可以用攔截...
遊戲加速外掛程式的原理是什麼 ?
加速類輔助會對遊戲平衡造成極大的破壞,這類輔助會通過hook api的方式來達到修改遊戲對時間判斷的目的,一般情況下,在r3層,這類輔助會在 queryperformancecounter timegettime gettickcount 這三個api上hook,修改他們的返回值。獲取 cpu 效能...
網頁遊戲外掛程式分析及防範
最近在開發社群版網頁遊戲,其實在整個開發過程中碰到了不少問題。而這些問題也被很細心的使用者們發現,並使用外掛程式鑽了空子。例如我在前面曾寫過的一篇部落格 web開發安全守則之永遠不要相信使用者的輸入 中介紹過,因為判斷使用者購買道具時,整個程式遺漏對負數的處理。今天藉著另外乙個外掛程式問題,講講網頁...