實驗目標:經過使用CE遍歷內存,定位到植物無冷卻的核心代碼處,並經過修改關鍵的跳轉來實現全部植物的無冷卻。spa
無冷卻的遍歷技巧1:3d
打開CE->回到遊戲種植一顆向日葵 -> 掃描未知初始數值blog
而後切迴游戲 ->立刻切回CE ->搜索變更的數值 -> 一直重複 ->直到冷卻結束遊戲
此時不進行任何建造 -> 回到CE -> 搜索未變更的數值 -> 依次排查進程
無冷卻的遍歷技巧2:內存
打開CE-> 搜索類型選擇字節類型-> 在植物亮的狀態時搜索1搜索
拿起植物-> 搜0 -> 放下植物搜1 ->拿起植物搜0-> 一直重複-> 地址通常在最後面循環
1.打開CE附加植物大戰殭屍,而後種植一顆向日葵,搜索未知初始化數據。遍歷
2.切迴游戲,而後等待0.5秒左右,立刻暫停,回到CE搜索變更的數值,循環往復,直到向日葵徹底冷卻完畢,最後搜索一次變更的數據。技巧
3.而後回到遊戲,等待0.5秒左右,切回CE搜索未變更的數值,循環往復,以下我已經找到了,當咱們將陽光地址鎖定爲1000的時候,向日葵則無需冷卻了,說明這個定時器是一個遞增的定時器。
4.咱們直接在找到的地址處右擊,選擇查找是什麼寫入了這個地址,或這直接選中並按下【F6】,回到遊行並種植一顆向日葵,會發現有一行寫入代碼,咱們記下它的內存地址【0048728C】,而後關閉CE吧。
5.接下來咱們使用OD直接附加進程,而後直接【F9】運行程序,默認會停在系統領空,直接按下【Ctrl + G】輸入【00401000】去程序領空,接着搜索【0048728C】會看到以下代碼。
我已經將代碼的大致功能分析的差很少了,這裏咱們有多種破解思路,第一種是直接將計時器的時間改大,這樣植物的冷卻時間會變快,或者直接將以下【JLE】直接【NOP】填充,因爲全部的植物都會使用這一個計算冷卻的CALL因此只要咱們將跳轉NOP掉的話,全部的植物天然就無冷卻了。
6.咱們NOP掉,回到遊戲試試,會發現已經有效果了。
如上這是第一種遍歷方式。
1.打開CE並開始一關新的遊戲,而後直接將搜索類型修改成【字節型】,咱們假設拿起植物是0,放下植物是1,這裏默認向日葵是冷卻完成了的,因此咱們就直接搜索1
2.接着回到遊戲,咱們拿起向日葵,而後不要種植,直接回到CE搜索0
3.回到遊戲放下植物,而後直接在CE中搜索1,以此重複進行,最後可以獲得幾個控制冷卻狀態的地址。
4.通過上方的遍歷,最後會看到以下地址欄中的三個地址,這裏咱們在第三個地址上右擊,選擇【找出是什麼改寫了這個地址】,而後回到遊戲,當咱們拿起植物會出現第一條彙編指令,後面的00也就是植物的狀態,而當咱們放下時會出現第二條指令,01則表示放下了植物。
5.接着咱們使用OD附加遊戲進程,而後跳轉到【0040CDEA】這個地址處分析一下代碼,此處咱們將【0040CDEA】處的代碼的操做數改爲0則能夠實現無冷卻,效果和上方截圖相同。