逆向分析中文編程易語言實現FPS遊戲無後座力快速射擊

學習中文編程易語言的請關注我。點擊我的視頻欄 可以看大量易語言教程哦

學習中文編程易語言的可以點擊文章下方的瞭解更多去學習

注意。文章所講內容。僅供學習交流本地遊戲CS。請不要用於網絡遊戲。

在FPS遊戲中,射擊函數是調用非常頻繁的,如果要對每一顆子彈的射擊情況進行服務器驗證的話,對服務器的壓力是非常大的。尤其是CS這種局域網遊戲,對於早些年的低配置電腦來說,這種壓力更加難以承受。所以射擊函數的很多重要信息都是在本地進行驗證的。下面我們通過篡改遊戲代碼的方式來達到無限子彈,無後坐力,快速射擊三種功能。

我們用CS創建一個awp房間,玩家可以在這個地圖上拾取到狙擊槍,我們要在這個地圖中實現AK的無後座速射。

首先用CE對AK的子彈數量進行掃描,可以得到將近200個結果(如圖)


逆向分析中文編程易語言實現FPS遊戲無後座力快速射擊

分別對這些結果進行修改,發現其中的一個地址可以改變子彈的數量(如圖)


逆向分析中文編程易語言實現FPS遊戲無後座力快速射擊

用OD加載遊戲,並在地址上下硬件寫入斷點,再次射擊時遊戲斷下(如圖)


逆向分析中文編程易語言實現FPS遊戲無後座力快速射擊

我們可以看到子彈的數量是來源於eax的,而eax在上面來源於一個dec eax,也就是說每次代碼經過這裡,eax自減1。我們將這條dec改成nop就可以讓子彈數量不變,

如果將其改為inc的話,就可以讓子彈越用越多,不過當子彈多到一個臨界值就會歸零,並從新遞增。

我們返回到外層來觀察一下這個射擊函數(如圖)


逆向分析中文編程易語言實現FPS遊戲無後座力快速射擊

這個函數有3個參數,而且只有AK射擊時會斷下,這說明每一種槍的射擊函數是獨立的。對三個參數進行分析,可以得出前面兩個參數是浮點數,而第三個參數為0。這裡我們先記錄一下前兩個參數的數值分別為0.009624999和0.09549999。

下面我們用同樣的方法得到狙擊槍的射擊函數(如圖)


逆向分析中文編程易語言實現FPS遊戲無後座力快速射擊

得出前兩個參數為0.001和1.45,第三個參數也是0。第一個參數我們無法判斷是什麼,我們把兩把槍對比後可以發現第二個參數很有可能是槍的射擊間隔,也就是射擊速度,因為這兩個數值和兩把槍實際情況是匹配的。為了驗證這一點,我們將AK的第二個參數改為0.001(如圖)(如圖


逆向分析中文編程易語言實現FPS遊戲無後座力快速射擊


逆向分析中文編程易語言實現FPS遊戲無後座力快速射擊

這是我們進行射擊可以看到射擊速度明顯變得快了很多,但是槍的抖動也變得更加厲害。那麼在解決了射擊速度和子彈數量之後,我們的最後一個任務就是將窗口抖動解決掉。

為了驗證抖動代碼所在的位置,我們對AK的射擊函數進行調用,發現單獨調用這個函數窗口也會抖動,也就是說這個抖動代碼是在函數內部的。

窗口抖動如果用代碼去實現,其實就是對人物朝向的一種改變,在射擊的同時對朝向值進行微調就可以達到抖動的效果。而這個朝向值往往是用浮點數存放的,所以我們在函數內部對浮點數寫入代碼進行分析。

在函數頭部下斷後,按F8逐條向下走,在1D901574處的函數的參數中有一些是對浮點數賦值的,我們觀察下發現這些數值看起來都比較大,並不太適合做為一個朝向(如圖)


逆向分析中文編程易語言實現FPS遊戲無後座力快速射擊

於是我們繼續向下分析,在1D901697 處可以看到一條浮點數寫入代碼,但是觀察後發現這裡寫入的是射擊間隔0.0099(如圖)


逆向分析中文編程易語言實現FPS遊戲無後座力快速射擊


繼續向下看,我們發現函數馬上就結束了,而結束前只剩下一個子函數沒有進行分析(如圖)


逆向分析中文編程易語言實現FPS遊戲無後座力快速射擊

這個函數的參數都是浮點數,我們猜測這個函數就是窗口的抖動函數。這裡有兩種辦法,第一種是到函數內部繼續分析,找到抖動的精確代碼,第二種是直接將函數NOP掉,那麼同樣不會經過抖動代碼。我們選擇簡單粗暴的第二種,當然在nop函數前還要觀察平棧情況。函數共有7個函數,而函數內部會retn 1C,正好是平衡的,所以我們要講7個參數和CALL都NOP掉(如圖)


逆向分析中文編程易語言實現FPS遊戲無後座力快速射擊

之後我們再次進行射擊,發現槍口非常平穩,這說明我們修改成功了。

但是當我們移動或者是跳躍,下坡時,發現這些改動都失效了,說明在不同的情況下射擊經過的代碼是不同的,為了能讓人物在任何情況下都能無後座力速射,我們又改動了以下代碼(如圖)(如圖)


逆向分析中文編程易語言實現FPS遊戲無後座力快速射擊


逆向分析中文編程易語言實現FPS遊戲無後座力快速射擊

這樣我們就完成了對AK47的修改,大家可以嘗試用同樣的方法找到其他槍的無後座速射。


其實我們還可以實現對FPS遊戲透視畫框。用中文編程實現。見下面視頻效果



逆向分析中文編程易語言實現FPS遊戲無後座力快速射擊


分享到:


相關文章: