tft每日頭條

 > 科技

 > 植物大戰僵屍如何增強神器

植物大戰僵屍如何增強神器

科技 更新时间:2024-07-22 15:27:52
前言:

外挂的本質其實就是找到進程中的某個變量或者某行代碼的内存地址,然後進行修改,完成其想要完成的功能。這是最基本的要求,當然如果想要深入去學習制作外挂的話,還有很多東西很多内容,首先,你要懂得彙編,其次如果是制作Windows平台上的外挂的話,要深入了解PE文件格式,Windows内核等相關知識,再次如果應用程序中的代碼或者變量是加密的話,或者是加殼的話,你要深入學習解密和脫殼方面的知識,最後應用程序如果是加了檢測的話,還要懂得如何過檢測。今天,我們通過實現在植物大戰僵屍中秒殺僵屍的這樣一個小小的例子,去學習一下如何找到某内存地址然後修改該内存地址中的内容,完成秒殺僵屍的功能。

思路:

我們先要盲猜一下植物大戰僵屍遊戲設計者的思路:植物打一下僵屍,僵屍是會減少血量的,當血量減少到0的時候,僵屍就挂掉。

因此,關鍵找到植物打一下僵屍然後所執行的扣除血量的指令,我們可以先找到某一隻僵屍的血量值所在的内存地址,然後讓植物打一下僵屍,接着看一下是進程中哪一條指令修改了這個内存地址,而這一行指令很有可能是植物打一下僵屍,然後執行的扣掉僵屍血量的指令。

1.找到某個僵屍血量值的内存地址

打開CE工具,附加一下植物大戰僵屍的進程,然後等某一隻僵屍出現時,使用CE工具首次掃描一下,掃描類型選擇未知的初始數值。

植物大戰僵屍如何增強神器(手把手教你用20行代碼實現植物大戰僵屍秒殺僵屍的功能)1

然後種下一棵植物,讓這個植物打僵屍,打一次,我們就在原先的掃描基礎上,把掃描類型換成減少的數值,然後點擊再次掃描。一直打一直掃,掃到差不多,看一下比較像血量值的。

植物大戰僵屍如何增強神器(手把手教你用20行代碼實現植物大戰僵屍秒殺僵屍的功能)2

發現這個數值有點像,上次的數值是植物還沒打到的數值,為130,然後植物打了一下,這個數值變成110了,扣了20點血量,因此,我們嘗試着把這個值當成這個僵屍的血量值,其内存地址為0x29C10840

植物大戰僵屍如何增強神器(手把手教你用20行代碼實現植物大戰僵屍秒殺僵屍的功能)3

2.找到扣僵屍血量的指令

我們再讓植物打一下僵屍,然後查看一下修改該内存地址(0x29C10840)的指令代碼,我們找到了,是這一條指令修改了該内存地址的值,很明顯,[edi 000000C8]是該隻僵屍的血量内存地址值,ebp是即将需要賦的值。

植物大戰僵屍如何增強神器(手把手教你用20行代碼實現植物大戰僵屍秒殺僵屍的功能)4

我們再看仔細一點,發現ebp首先會減掉一個值(内存地址為0x0054D0BA的指令sub ebp,[esp 20]),然後再把相減的結果賦值給僵屍血量(mov [edi 000000C8],ebp),那我們是不是可以在相減的這一行代碼做一下手腳呢?當然可以,直接讓其相減的結果為0,就能做到直接秒殺僵屍了。怎麼讓其相減結果為0呢,隻需要改成sub,ebp,ebp即可。

植物大戰僵屍如何增強神器(手把手教你用20行代碼實現植物大戰僵屍秒殺僵屍的功能)5

我們直接改一下,之前這一條sub指令是四個字節的,但是更改為sub ebp,ebp之後,隻占兩個字節,為了不影響後續的指令,再加上兩個空指令nop填充。

植物大戰僵屍如何增強神器(手把手教你用20行代碼實現植物大戰僵屍秒殺僵屍的功能)6

最後神奇地發現,僵屍隻要被打了一炮就死了,至此,我們從CE工具的角度完成了該功能的調試,緊接着我們做一個小程序實現這個功能,這個程序的要完成的任務很簡單,就是直接修改内存地址為0x0054D0BA的指令修改為sub ebp,ebp, 然後再用兩個nop填充即可,如上圖,即把0x29,0xED,0X90,0X90這四個字節填充到0x0054D0BA處。

實現代碼:

植物大戰僵屍如何增強神器(手把手教你用20行代碼實現植物大戰僵屍秒殺僵屍的功能)7

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved