吾愛破解 - LCG - LSG |安卓破解|病毒分析|破解軟件|www.pkixxr.icu

 找回密碼
 注冊[Register]

QQ登錄

只需一步,快速開始

搜索
查看: 2558|回復: 53
上一主題 下一主題

[原創] 植物大戰僵尸修改器DIY(二)CD詳解

  [復制鏈接]
跳轉到指定樓層
樓主
丸子de爸爸 發表于 2019-10-5 00:36 回帖獎勵
本帖最后由 丸子de爸爸 于 2019-10-5 12:06 編輯

前言

之前做星際的時候,就有兄弟們說,為啥不做一個原子彈無CD呀。好像大家對CD這個東西挺感興趣,那我們這一篇就來研究一下,做無CD的思路吧。

這個植物大戰僵尸系列呢,目前暫定想法就是3-4集的樣子。主要就是針對于各種不同的功能,進行一個思路的引導和分析。最后一集的時候,會介紹如果使用易語言和AA引擎,將他直接制作成一個真正的修改器,盡情期待。

PS:我講的是思路,植物大戰僵尸,只是一個例子,大家可以把思路拓展到別的方面去,注重思維靈活。

歡迎文明轉載,請注明出處  丸子de爸爸

本文所有技術資料僅供研究,不鼓勵任何盜版商用行為

請大家支持正版,支持正版!支持正版!!!

上集傳送門

工具

CheatEngine6.7

植物大戰僵尸本體

PS:(我使用的是年度版,可以直接解鎖所有物品,不然你就自己打到后面去吧)

本次基礎知識

內存,一切皆內存,我們操作的全部都是內存。

所有地址相關的概念,都可以理解為坐標,用來給我們做標記的而已。

如果實在搞不明白,你想想指南針為啥指向北邊,為啥叫南北,只是定義,只是公認

PS:上面這一段是重復了,但是我覺得還是有必要多重復一下,看多了,大家就印象深刻一點。

CE數據模糊搜索

在搜索數據時,有時數據并不是有固定值的,比如CD,只知道他是增加或是減少,此時需要怎么做?

可以使用CE的模糊搜索功能,更改掃描模式為“未知的初始值”,進行初次掃描后,就可以根據數值的增減,來對數值進行查找了。

例:植物生命值,種下植物之后,首次掃描,紀錄植物滿血的狀態。然后等僵尸咬了一口植物,植物生命值減少,進行數字的減少操作,多次重復,得到植物生命值。

每一次模糊搜索,都僅僅針對于上一次的搜索結果。

匯編語句

inc

相當于編碼中的i++,就是自身+1。

例:inc eax,其實就是eax = eax + 1

dec

相當于編碼中的i--,就是自身-1。

例:dec eax,其實就是eax = eax - 1

cmp

簡單理解為比較語句,通常結合j**跳轉一起使用。有興趣的可以去查一下,不講多了,講多了反而容易混亂。

例:cmp eax ,ebx,比較eax和ebx

jle

上一次比較的結果,左側小于等于右側,則跳轉。

例:eax = 1,ebx = 2。cmp eax,ebx。此時jle就會跳轉。

test

兩個參數進行與操作。如果兩個參數相同,則為判斷是否為0。這個也可以查一下,很多內容。

例:test eax,eax。

實現步驟

植物無CD

破解最重要的基礎,CE找到對應的內存

CE查找CD地址

先點一下墓碑旁邊的鎖,解鎖一下所有內容,省事很多

進入冒險模式第一關,隨便把植物選滿(記得選食人花和堅果,待會有用)

CE附加一下進程"PlantsVsZombies.exe"

開始游戲后,切換到CE,掃描類型改為“未知的初始值”,執行首次搜索


得到的結果數量很多(在附加進程按鈕下面就是數量),接下來我們講一下CD的機制。

一般的CD計算,在匯編中,都是通過循環來判斷,流程圖如下

就是當CD沒完成的時候,會一直循環,直到滿足條件,才會執行正常的邏輯

根據CD流程圖,所以接下來的動作就如下

植物大戰僵尸的CD是按照0開始增大,CD完成再恢復成0的邏輯。流程圖直接按增大邏輯。(我自己試出來的)

PS:正常的話,不知道是可以使用,模糊查找的變化的數值。但是如果數據太多,先猜一個增大或者減少,如果找不到,再搜另外一種可能,會更快找到內存。

這里為啥要判斷CD完沒完成呢?為啥又要減少。

因為每一種植物是一個CD,當在CD狀態時,CD值持續增大,當CD完成時,需要變為0。所以是減少了。

例:CD為3000,建造過程中,從0-3000一直增大,每一次時間間隔,都會增大,如1000,1100。完成CD時候,變成了0,自然會比上一次的數據都要少,所以搜索減少。

一通操作,找出了CD地址如下,你們的和我的不一定一樣

判斷找對了的方法在于,他數值的增長和歸零,和你植物的CD是同步的。

右鍵地址,選擇“是什么改寫了地址”

此時再回到游戲,選擇搜索到CD的植物(每種植物的CD是單獨是,所以一定要選同一個哦)

可以發現,你選中植物的時候,就有一條訪問紀錄,再次說明我們找對了。

反匯編分析

接下來簡單了,回到最初的流程,CD完成時,需要重置CD。

于是切入口出現了,根據流程,他會在循環中不斷判斷是否要重置CD。

所以只要將CD是否完成的判斷條件更改為一直完成,就可以實現無CD了。

種下找到CD的植物,等待他CD重置,會發現訪問列表中多了一條數據。

內容為: mov [esi+24],0000000。根據匯編知識,我們知道這是給[esi+24]置0。

反匯編分析

選擇最后那條記錄,點擊“顯示反匯編程序”

已經知道[esi+24]是植物CD了,那我們在往上看,發現了什么?

紅框內的語句從上到下分別為:

  • CD增加1
  • 將CD賦值到eax
  • 比較CD和一個值(這里可以推斷是最大值了)
  • 如果CD小于最大值,則跳轉
  • 給eax賦值為esi
  • 將CD置0

于是可以推測,jle那一句代碼,就是流程圖中的判斷CD是否完成的邏輯

修改匯編代碼

右鍵jle那一行,選擇“使用空指令替換”。即,讓這一行始終不執行。

然后回到游戲,CD移除。

小作業,可以按照上一集的做法,嘗試自己寫一下自動注入的AA腳本。并在CE中使用。

超級吃人花

食人花界的大胃王,移除消化時間,吃起來沒完沒了。

大家可以嘗試先不往下看,自己使用無CD的方法,看自己能不能找到怎么做。

CE查找消化CD地址

在離僵尸稍微遠一點的地方,種下一顆食人花。(遠一點是為了我們好記錄首次信息,別一下去就吃了,比較麻煩)

之后在第一個僵尸后面,擺一個堅果。(保護食人花不被后面的吃了,給我們多點時間。所以,為啥我不先做無敵。忘了....)

開啟一個“新的掃描”,掃描類型改為“未知的初始值”,執行首次搜索


按道理,一個游戲的邏輯都是一樣的,所以CD也應該是增大,然后這個游戲居然不是。食人花的CD居然是減少。

按照CD同樣的操作,只不過變成了減少。找到一個可疑值,為啥判斷是他,你看其他的都大成什么樣了,吃大象都消化了呀。

測試一下,右鍵“改變已選中地址的值”,改為0,發現食人花馬上就吞下去了。就是他了。

反匯編分析

選中食人花吞噬CD,右鍵“找出是什么改寫了這個地址”,然后就等吧。等啥,等僵尸來,就像種植CD,每一種植物同一個CD。食人花是每一朵一個吞噬CD,所以,只有等再來一個僵尸的時候,我們才可以觀察數據。

等它吃了一個僵尸,趕緊觀察數據,發現有兩條紀錄只調用了一次,第三條數據會特別一點,因為第一條才46,但是食人花消化是需要很久的。而我們又知道消化CD是遞減的,所以在剛吃進去的時候,應該需要賦值一個最大值,然后慢慢遞減,所以這個00000FA0就是最大值,選中他,“顯示反匯編程序”

修改匯編代碼

來到匯編界面,根據分析,我們知道他賦值的就是最大值,那么,我直接把最大值改為0,是不是就直接無消化CD呢?

雙擊選中的代碼,將后面的00000FA0,改為0。

回到游戲,發現還是沒有消化呀,那是因為我們這個修改,只是在食人花吃僵尸的時候生效,所以回內存地址中,把消化CD手動置為0,再看。接下來所有的僵尸就是一口一個不停了。

總結

在沒有準確數據顯示的時候,嘗試使用CE的模糊搜索,可以很方便的幫我們定位內存地址。通過檢測內存地址的訪問和改寫,我們又可以很快的定位到匯編的邏輯。于是,修改程序就變成了一個簡單的事情。

不要因為一個游戲比較老舊,就覺得他沒有可以利用的地方。只要你有想象力,它一樣可以有很多新鮮的功能,大家如果覺得有趣,可以按照本文的方法,繼續制作,土豆雷和玉米大炮的無CD,方法完全是相同的。

如果有什么意見和問題,歡迎留言或者私聊,感謝觀看!!!

免費評分

參與人數 29吾愛幣 +25 熱心值 +27 收起 理由
felixdream + 1 + 1 [email protected]
不如吃茶去 + 1 + 1 用心討論,共獲提升!
暮雪辭 + 1 我很贊同!
kai.wu + 1 + 1 [email protected]
忘川123 + 1 + 1 歡迎分析討論交流,吾愛破解論壇有你更精彩!
13593562441 + 1 我很贊同!
朱朱你墮落了 + 1 + 1 鼓勵轉貼優秀軟件安全工具和文檔!
hx924923235 + 1 + 1 [email protected]
qq1614266756 + 1 我很贊同!
tryotry + 1 + 1 [email protected]
zhorske + 1 + 1 支持一波,不容易
涼一點是薄荷 + 1 + 1 熱心回復!
Leoken + 1 + 1 [email protected]
笙若 + 1 + 1 [email protected]
Aksa + 1 + 1 [email protected]
DeadBoty + 1 + 1 [email protected]
52pj8089 + 1 + 1 用心討論,共獲提升!
alei1370 + 1 + 1 大神喲
liphily + 1 感謝發布原創作品,吾愛破解論壇因你更精彩!
銅綠 + 1 [email protected]
初晨曦流輝 + 1 熱心回復!
多幸運遇見baby + 1 + 1 用心討論,共獲提升!
傻笑的老鼠 + 1 + 1 熱心回復!
風輕然雨朦朧 + 1 + 1 熱心回復!
onihot + 1 + 1 [email protected]
李凱324 + 1 + 1 [email protected]
ISR + 1 + 1 熱心回復!
bugof52pj + 1 + 1 [email protected]
joneqm + 1 + 1 用心討論,共獲提升!

查看全部評分

發帖前要善用論壇搜索功能,那里可能會有你要找的答案或者已經有人發布過相同內容了,請勿重復發帖。

推薦
 樓主| 丸子de爸爸 發表于 2019-10-5 10:29 <
liphily 發表于 2019-10-5 08:31
這些東西,如果明白了原理,做起來真心不是什么難事——
但是寫成教程,真是一種耐心毅力活,至少,我是沒 ...

是呀,其實編程就是這樣,是一個一加一等于二的問題。搞明白了流程,自然就能得出結果,而且所謂的匯編真的一定也不難。
不過寫教程是真的需要耐心,每一篇都是至少幾個小時的編輯 ,謝謝支持。

免費評分

參與人數 2吾愛幣 +2 熱心值 +2 收起 理由
依舊_淺笑 + 1 + 1 感謝發布原創作品,吾愛破解論壇因你更精彩!
liphily + 1 + 1 感謝發布原創作品,吾愛破解論壇因你更精彩!

查看全部評分

沙發
zcz00 發表于 2019-10-5 00:56
3#
趕快 發表于 2019-10-5 00:58
4#
成國大吉大利 發表于 2019-10-5 02:15
就喜歡這個修改器
謝謝樓主分享
5#
水岸心晴 發表于 2019-10-5 03:29
學習使我快樂
6#
gift 發表于 2019-10-5 07:16
好復雜的樣子。
7#
luli1111 發表于 2019-10-5 07:28
謝謝分享
8#
ISR 發表于 2019-10-5 07:31
不明覺厲
9#
李凱324 發表于 2019-10-5 07:53
優秀!!!!你!!!你!
10#
onihot 發表于 2019-10-5 08:00
學習了,感謝分享技術
您需要登錄后才可以回帖 登錄 | 注冊[Register]

本版積分規則 警告:禁止回復與主題無關內容,違者重罰!

快速回復 收藏帖子 返回列表 搜索

RSS訂閱|小黑屋|聯系我們|吾愛破解 - LCG - LSG ( 京ICP備16042023號 | 京公網安備 11010502030087號 )

GMT+8, 2019-10-12 12:47

Powered by Discuz!

© 2001-2017 Comsenz Inc.

快速回復 返回頂部 返回列表
最新黑龙江时时