計算機對?進制資料的處理機制
修改植物大戰僵尸存盤資料
二進制是什么?為什么采用二進制?
二進制(binary)在數學和數字電路中指以2為基數的記數系統,以2為基數代表系統是二進位制的,人類算數采用十進制,可能跟人類有十根手指有關,但是,機器又如何能識別十進制呢,機器只能識別電壓的高低,所以采用了二進制,
任務要求
修改「植物大戰僵尸」的二進制的存檔檔案,修改新玩家的關卡進度,修改游戲的金錢數量
任務需求
- 作業系統:win10 64位
win推薦hex editor neo,Linux或Mac使用vim的二進制編輯模式 - 植物大戰僵尸游戲下載鏈接
- 二進制編輯器
任務程序
1.找到存盤二進制資料的檔案
首先,我的想法是想要改變玩家資料,肯定是存在玩家資料的二進制檔案,但是一開始我尋找到的是下載植物大戰僵尸的下載地址里找的userdata,然后發現里面只有.txt檔案,然后細想能夠修改資料的地方會是這么顯而易見的地方嘛,顯然不是這樣子!
1.先打開c盤,打開查看,最后在隱藏的專案上打開隱藏的檔案

2.然后找到ProgramData→ PopCap Games→PlantsVsZombies→userdata(恭喜你找到了)

2.游戲試玩,對比二進制資料
然后看著二進制代碼,自然是一臉懵逼,但是想到可以通過對比資料來觀察資料變化的邏輯,我就當即開始第一把植物大戰僵尸(以下是我的發現)
1.users.dat是用來存盤不同的用戶,圖中03指代的是三個用戶

2.users.dat中如圖畫圈的位置指代的增加或者刪減用戶的次數

3.針對不同的用戶圖中14和01正是指代游戲關卡數,并且當輸入的十進制值大于32的時候顯示6-



4.修改金錢真的是煞費苦心,這個資料經過多次嘗試和總結,圖中 08 09 位置便是修改金錢的位置,但是如何計算出來的2400呢?(我設定的是16進制并且需要逆向輸出)
十六進制 十進制
00 F0 → 15 *16=240 → 240 *10=2400(可知金錢的最小單位是10)


如果覺得十六進制轉換麻煩的話,也不妨直接改變資料變成10進制,修改操作如下

此時,我們也比較順利地完成了修改新玩家的關卡進度,修改游戲的金錢數量的任務,但是我覺得如果每次去進行嘗試然后觀察分析得出結論,往往會有點草率和資料不一定準確的問題,所以我們需要進行更深入的了解,探索永無止境!
拓展任務 :使用二進制畫一個圖(帶黑線的影像)
了解bmp位圖編碼存盤方式
BMP取自位圖Bitmap的縮寫,也稱為DIB(與設備無關的位圖),是一種獨立于顯示幕的位圖數字影像檔案格式,常見于微軟視窗和OS/2作業系統,Windows GDI API內部使用的DIB資料結構與 BMP 檔案格式幾乎相同,概念難免讓人枯燥
講講我做的時候的想法
首先我的腦子第一反應居然是去網上找空白的.bmp位圖,顯然啥也沒找到還浪費很多時間
以下這是windows系統自帶的畫圖3D 可以直接生成.bmp圖片
為啥我會選擇白和黑呢?沒有對比,你就無法從中總結規律,不僅我們人是這樣的,神經網路模型的訓練也是如此


從以下的圖中我發現2點相似之處
第一.bmp前面的十六進制有很大的相似之處
第二白色對應的內容是FF,而黑色對應的是00,那接下來畫圖是不是很容易,不過要注意的是保存影像的像素寬度和高度盡量設定小一些,資料量比較少,處理起來比較方便


最后,我簡單的畫了一條黑色直線

拓展位圖檔案頭

位圖檔案頭
0-1:42 4D 為位圖的標志,轉換成 ASCII 碼的話就是 BM,
2-5:(00 00 76 f6)H = 30,454 D(bytes),表示檔案大小為30,454 bytes
6-9:(00 00 00 00)H為保留字,
10-13:(00 00 00 36)H = 54D,檔案起始位置標志,表示檔案從第54位開始,
自測
- 110101010001轉?六進制是多少? D51
- 101011.101011的?進制數是多少? 43.671875
- 常?的視頻編碼格式有哪些? .mp4 .avi
- 65對應ASCII碼是哪個字符? A
總結
我是一名大二本科生,我渴望去探索一些新奇的東西,所以我加入到c1實習生認證的隊伍中,經歷第一個任務,我覺得在做任務的同時我也學到了很多,是非常有意義的一件事情,
我來到csdn已經一年了,但是從來沒有想過自己去寫,從來都是看各種大佬的文章,但是我也想改變,就像《討厭的勇氣》這本書中我正缺乏的勇氣,今天,我鼓起“勇氣”把它記錄下來
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/272782.html
標籤:其他
