close

Step 6: Pointers: (PW=098712) 第六步教您如何使用指針

說明:U(up的u)=上圖,D(down的d)=下圖,UD=上下圖,藍色自表示注釋,為了保護大家的眼睛字體大小使用小1.png  

U找到上圖裡面Value為100的值,不要跟我說你不會找喔,不會的話去看tutorial step 2 tutorial 1 教學

2.png  

U找到後的結果如上圖,因為這一個是指針類型的所以直接改值的話是沒有用的

3.png  

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(寫入),而且寫入的這一個找到的會比較快,因為訪問會出現很多個,但是寫入就出現較少個} ,會出現如下圖的一個新視窗
4.png  
D回到tutorial裡面按下Change value
5.png  
D再回到剛剛被開啟的新視窗裡面,發現多了四個新的東西(這是用accesses找的),以我的經驗來看,一看就知道要找的是第二個(00422173 - 89 02 - mov [edx],eax),為甚麼呢?因為我有經驗,阿不是啦XD,是因為真相知有一個,如果您仔細一看,不難發現其實第一第三第四個其實是一模一樣的東西,用刪去法來看,所以答案是B
6.png  
D如果用write to 來找的話只有出現一個(如下圖),所以說用write to 來找是正確的選擇,因為真相只有一個就是這一個的啦7.png  


UD在找到的"真相"上面點兩下(或者按More information),出現一個新的視窗(如下圖),有沒有發現?其實在黃色的框框裡面就是剛剛找到的"真相",上面寫的00422173代表它的位置,mov [edx],eax是組合語言,意思是把eax裡面的值複製到edx裡面,從圖中可以發現eax=000000DA而EDX=00066628ˊ,而且00066628就是一開始要找的值的address,{對組合語言有興趣的話可以上網查mov instruction},再看紅色的框框裡面寫說需要被找到位址指針的值可能是0006628,意思就是指針的值可能是00066628(記住此值),回到cheat engine 找這個值。8.png  

D把Hex打勾(Hex打勾代表用16進位制),在value:裡面輸入剛剛要記下來的值00066628其實只要輸入66628就可以了,因為00066628=66628(為甚麼一樣呢?我舉一個例子你就懂了,假設我有0001000(十進位)元是不是等於我有1000(十進位)元呢?是的,所以當然一樣阿),按下First Scan。 
9.png  

 10.png  

D剛好只有找到一個所以可以百分之百確定就是這一個,點兩下讓他跑到下面框框,因為他的Value目前是以10進位表示,但是我想要看16進位是多少所以,在上面按右鍵選擇show as hexadecimal(以16進位表示)
休息一下看個廣告吧

11.png  
U有沒有發現一個很神奇的事情Value=808的Address=0006628,Value=00066628的Address=0057C370,這就是所謂的指針,只有指一次(address=0006628指到Value=00066628)所以是一級指針,除了一集指針以外也可以有多重指針(多重指針會在tutorial step 9 多重指針 tutorial 8)裡面教學。

12.png  

U接下來重頭戲要來了,1.按Add address manually(手動加入位址)2.Pointer打勾,3.在Address of pointer(指針的位址,其實指針的位址就是value=00066628的address)輸入黃色框框內的數字(前面兩個零可以不用輸入因為0057C370=57C370,後面的offset{修正}先不用理它)4.按ok13.png  
UD出現新的東東,把這個得Value改到5000並鎖起來,回到tutorial,按下黃色框框中的Change pointer,此時紅色框框會出現"你有3秒的時間把值改成5000(其實我們找就改完了,所以就等3秒吧!)14.png  


 15.png  
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的經驗值又增加了不少,能夠看到最後表示您是一位有耐心的人,而且非等閒之輩,或許大家會覺得我講的好複雜喔,其實是因為我要詳細的解釋"為甚麼",而不是簡單的教您如何操作,因為操作其實很簡單就點幾下滑鼠按幾下鍵盤就可以了,但是你永遠不會知道為甚麼要這樣操作,當狀況一改變時就無法靈機應變。

最後還是謝謝大家的捧場,有了大家的回應我就更有教學熱誠。

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 UM程式研究日誌 的頭像
    UM程式研究日誌

    UM程式研究日誌

    UM程式研究日誌 發表在 痞客邦 留言(0) 人氣()