Step 6: Pointers: (PW=098712) 第六步教您如何使用指針
說明:U(up的u)=上圖,D(down的d)=下圖,UD=上下圖,藍色自表示注釋,為了保護大家的眼睛字體大小使用小
U找到上圖裡面Value為100的值,不要跟我說你不會找喔,不會的話去看tutorial step 2 tutorial 1 教學
U找到後的結果如上圖,因為這一個是指針類型的所以直接改值的話是沒有用的
UD在找到的值上面按右鍵選擇Find out what accesses this address(找出誰訪問此位址)※{Niauwu said:雖然tutorial裡面是說要按Find out what accesses this address但是我個人建議用Find out what write to this address因為其實兩個是差不多的東西,只差在一個是accesses(訪問);一個是write to(寫入),而且寫入的這一個找到的會比較快,因為訪問會出現很多個,但是寫入就出現較少個} ,會出現如下圖的一個新視窗
D回到tutorial裡面按下Change value
D再回到剛剛被開啟的新視窗裡面,發現多了四個新的東西(這是用accesses找的),以我的經驗來看,一看就知道要找的是第二個(00422173 - 89 02 - mov [edx],eax),為甚麼呢?因為我有經驗,阿不是啦XD,是因為真相知有一個,如果您仔細一看,不難發現其實第一第三第四個其實是一模一樣的東西,用刪去法來看,所以答案是B
D如果用write to 來找的話只有出現一個(如下圖),所以說用write to 來找是正確的選擇,因為真相只有一個就是這一個的啦
UD在找到的"真相"上面點兩下(或者按More information),出現一個新的視窗(如下圖),有沒有發現?其實在黃色的框框裡面就是剛剛找到的"真相",上面寫的00422173代表它的位置,mov [edx],eax是組合語言,意思是把eax裡面的值複製到edx裡面,從圖中可以發現eax=000000DA而EDX=00066628ˊ,而且00066628就是一開始要找的值的address,{對組合語言有興趣的話可以上網查mov instruction},再看紅色的框框裡面寫說需要被找到位址指針的值可能是0006628,意思就是指針的值可能是00066628(記住此值),回到cheat engine 找這個值。
D把Hex打勾(Hex打勾代表用16進位制),在value:裡面輸入剛剛要記下來的值00066628其實只要輸入66628就可以了,因為00066628=66628(為甚麼一樣呢?我舉一個例子你就懂了,假設我有0001000(十進位)元是不是等於我有1000(十進位)元呢?是的,所以當然一樣阿),按下First Scan。
D剛好只有找到一個所以可以百分之百確定就是這一個,點兩下讓他跑到下面框框,因為他的Value目前是以10進位表示,但是我想要看16進位是多少所以,在上面按右鍵選擇show as hexadecimal(以16進位表示)
休息一下看個廣告吧
U有沒有發現一個很神奇的事情Value=808的Address=0006628,Value=00066628的Address=0057C370,這就是所謂的指針,只有指一次(address=0006628指到Value=00066628)所以是一級指針,除了一集指針以外也可以有多重指針(多重指針會在tutorial step 9 多重指針 tutorial 8)裡面教學。
U接下來重頭戲要來了,1.按Add address manually(手動加入位址),2.Pointer打勾,3.在Address of pointer(指針的位址,其實指針的位址就是value=00066628的address)輸入黃色框框內的數字(前面兩個零可以不用輸入因為0057C370=57C370,後面的offset{修正}先不用理它),4.按ok
UD出現新的東東,把這個得Value改到5000並鎖起來,回到tutorial,按下黃色框框中的Change pointer,此時紅色框框會出現"你有3秒的時間把值改成5000(其實我們找就改完了,所以就等3秒吧!)
U大功告成
讓我們來複習一次1.開tutorial 2. 輸入跳關密碼098712 3.按ok 4.輸入100 5.按First Scan 6.按Change value 7.輸入change後的value 8.按Next Scan 7.找到後加到下面框框 8.按New Scan 9.勾Hex 10.輸入剛剛找到的值的Address 11.按First Scan 12.找到後按Add address manually 13.打勾pointer 14.輸入第二個找到的值得Address 15.按ok 16.把值改到5000 17.鎖住 18.按Change pointer
注:我直接跳過Find out what write to this address 這個步驟因為我們事先就知道要找指針而且是簡單的一級指針,所以其實在複習的第10步驟只要直接輸入一開始找的Address就可以了,因為一開始的value的Address就是指針的Value。
恭喜您完成了tutorial step 5 pointer 第四關"指針關",Cheat engine的經驗值又增加了不少,能夠看到最後表示您是一位有耐心的人,而且非等閒之輩,或許大家會覺得我講的好複雜喔,其實是因為我要詳細的解釋"為甚麼",而不是簡單的教您如何操作,因為操作其實很簡單就點幾下滑鼠按幾下鍵盤就可以了,但是你永遠不會知道為甚麼要這樣操作,當狀況一改變時就無法靈機應變。
最後還是謝謝大家的捧場,有了大家的回應我就更有教學熱誠。