摘要:上篇文章我許了一個愿,就是想讓大家多多關(guān)注我,然后我的粉絲就蹭蹭的漲了好幾百,謝謝大家的厚愛。可是我發(fā)現(xiàn)粉絲是漲了,三連變少了,謝謝大家這次給我三連,我一定再接再厲。地址的尋找陽光總值,種植一個豌豆需要,非常不夠用。
目錄
? ? ? ? 大家好,我叫善念。上篇文章我許了一個愿,就是想讓大家多多關(guān)注我,然后我的粉絲就蹭蹭的漲了好幾百,謝謝大家的厚愛。可是我發(fā)現(xiàn)粉絲是漲了,三連變少了,謝謝大家這次給我三連,我一定再接再厲。有問題留在評論區(qū),我會一一回復(fù),謝謝大家!
?????????
? ? ? ? 這次要做的是修改一款單機游戲的數(shù)據(jù),學(xué)過C語言的朋友肯定經(jīng)常會看到有些老師講這個案例,就是《植物大戰(zhàn)僵尸》這個課題,不過此文我將帶大家利用Python來實現(xiàn)(2019原創(chuàng)課題,附視頻教程)。
? ? ? ? 關(guān)于安裝的這一塊....我以前是在網(wǎng)站上下載的,現(xiàn)在再去找估計隨便百度下載一個就可以了,這里就用我之前的吧
鏈接:https://pan.baidu.com/s/1MviRuMQtKZECeYVDRZxcHw?
提取碼:9pfz?
????????安裝下載后切記要避免點到一些廣告上去,和一些瀏覽器的鎖定勾選記得取消掉。 進入游戲是全屏,不方便我們觀察效果以及編寫程序,可以在選項中取消勾選全屏
?
????????????????我的理解就是,所有的程序的本質(zhì)都是變量與數(shù)值的集合。?
? ? ? ? ????????比如說咱們玩的游戲它也是一個程序吧,游戲的角色血量、藍條是不是都是一個數(shù)值儲存在變量內(nèi),那么如果我們找到存放這個數(shù)值的變量(也可以叫做地址),修改這個變量的值,那么是不是就可以做到給咱們得人物加血量、修改人物等級的一系列操作。
? ? ? ? ? ? ? ? ?首先確定修改哪一款游戲的數(shù)據(jù),然后確定修改游戲的哪一個數(shù)據(jù),然后去尋找這個游戲內(nèi)這個數(shù)據(jù)的地址,然后去修改這個數(shù)據(jù)。
? ? ? ? ? ? ? ? 聽起來有點繞。好吧,是我的語文學(xué)習(xí)的太差啦
? ? ? ? ? ? ? ? 這里需要利用到一個句柄查看工具這里我給大家已經(jīng)下載好了。
????????????????鏈接:https://pan.baidu.com/s/1mUJ9Y8LntOsg0Vt9J0YMnA?
????????????????提取碼:4f7h?
? ? ? ? ? ? ? ? 把放大鏡拖動到游戲的標題上,就可以查看到這個窗口的所有信息
?????????可以看下咱們?nèi)蝿?wù)管理器中的進程ID是否也是39156
?
import win32process# 進程模塊import win32gui# 界面# none 窗口的類名 窗口的IDwindow_handle = win32gui.FindWindow(None, "植物大戰(zhàn)僵尸中文版") #Pyspy++ 窗口句柄win32gui.print(window_handle)process_id = win32process.GetWindowThreadProcessId(window_handle)[1] #取進程IDprint(process_id)process_handle = win32api.OpenProcess(0x1F0FFF, False, process_id)#進程句柄# 進程句柄是否可以被子進程繼承,一般選false(不可被繼承)# #這種是用線程內(nèi)核對象的默認安全屬性, 子進程不能繼承父進程的句柄,不可以繼承,# 則子進程是不可以通過句柄訪問改內(nèi)核對象。print(process_handle)
? ? ? ? 關(guān)于這個代碼我講解一下?,如何確定一款游戲是由進程的句柄來判斷的,而我們手動取到游戲的窗口ID 與類名后,可以得到進程ID,由進程ID可以得到游戲句柄。
? ? ? ? ????????陽光總值150, 種植一個豌豆需要100,非常不夠用。咱們現(xiàn)在需要實現(xiàn)的功能是無限陽光,達到無限種植豌豆的效果。這里需要用到CE軟件,我給大家提供。
????????????????鏈接:https://pan.baidu.com/s/1e0hRCK323Hiq3TM_lwBL4g?
????????????????提取碼:5e0r?
?
Python永遠的神,實戰(zhàn)開發(fā)游戲內(nèi)存輔助!
????????????????
? ? ? ? ? ? ? ? 由于咱們是用Python這門編程語言來實現(xiàn)的,這里需要用Python去調(diào)C,用到動態(tài)鏈接庫,所以要配置一下內(nèi)核模塊(動態(tài)鏈接庫kernel32.dll),C:/Windows/System32/kernel32.dll放到這個目錄下,我這里也給大家下載好了。
????????????????鏈接:https://pan.baidu.com/s/1idc_lYgqoqeJGrrjSw7tsg?
????????????????提取碼:zo2g?
import win32api# 系統(tǒng)模塊import win32process# 進程模塊import win32gui# 界面import ctypes# C語言調(diào)用類型# python中使用ctypes模塊可以在python中直接調(diào)用C/C++。首先要將C/C++編譯成動態(tài)庫# (.dl或.so),之后python中調(diào)用即可。# C類型 調(diào)用約定# kernel32.WriteProcessMemory(int(process_handle),0x1C0A4F98,byref(c_int(1000)),4,byref(c_int(0)))kernel32 = ctypes.windll.LoadLibrary(r"C:/Windows/System32/kernel32.dll ")#加載內(nèi)核模塊 動態(tài)鏈接庫date1 = ctypes.c_long()kernel32.ReadProcessMemory(int(process_handle),0x006A9EC0,ctypes.byref(date1),4,None)#None讀取的一個數(shù)據(jù)的大小 尺寸 長度# 緩沖區(qū),各種語言的文本要求不一樣,為了兼容,那么自定義一個文本# 地址會變,但是里面存儲的數(shù)據(jù)不會變。print(date1.value)date2 = ctypes.c_long()kernel32.ReadProcessMemory(int(process_handle),date1.value+0x768,ctypes.byref(date2),4,None)print(date2.value)date3 = ctypes.c_long()kernel32.ReadProcessMemory(int(process_handle),date2.value+0x5560,ctypes.byref(date3),4,None)print(date3.value)sun = input("請輸入你要改變的陽光值:")# kernel32.WriteProcessMemory(int(process_handle),date2.value+0x5560,ctypes.byref(ctypes.c_long(int(sun))),4,None)kernel32.WriteProcessMemory(int(process_handle),date2.value+0x5560,ctypes.byref(ctypes.c_long(int(sun))), 4, None)# 關(guān)閉進程kernel32.CloseHandle(int(process_handle))
????????
#!/usr/bin/python3# -*- coding: utf-8 -*-# @Time : 2019/4/30 16:00# @Author : 善念import win32api# 系統(tǒng)模塊import win32process# 進程模塊import win32gui# 界面import ctypes# C語言調(diào)用類型# python中使用ctypes模塊可以在python中直接調(diào)用C/C++。首先要將C/C++編譯成動態(tài)庫# (.dl或.so),之后python中調(diào)用即可。# none 窗口的類名 窗口的IDwindow_handle = win32gui.FindWindow(None, "植物大戰(zhàn)僵尸中文版") #Pyspy++ 窗口句柄win32gui.print(window_handle)process_id = win32process.GetWindowThreadProcessId(window_handle)[1] #取進程IDprint(process_id)process_handle = win32api.OpenProcess(0x1F0FFF, False, process_id)#進程句柄# 進程句柄是否可以被子進程繼承,一般選false(不可被繼承)# #這種是用線程內(nèi)核對象的默認安全屬性, 子進程不能繼承父進程的句柄,不可以繼承,# 則子進程是不可以通過句柄訪問改內(nèi)核對象。print(process_handle)# C類型 調(diào)用約定# kernel32.WriteProcessMemory(int(process_handle),0x1C0A4F98,byref(c_int(1000)),4,byref(c_int(0)))kernel32 = ctypes.windll.LoadLibrary(r"C:/Windows/System32/kernel32.dll ")#加載內(nèi)核模塊 動態(tài)鏈接庫date1 = ctypes.c_long()kernel32.ReadProcessMemory(int(process_handle),0x006A9EC0,ctypes.byref(date1),4,None)#None讀取的一個數(shù)據(jù)的大小 尺寸 長度# 緩沖區(qū),各種語言的文本要求不一樣,為了兼容,那么自定義一個文本# 地址會變,但是里面存儲的數(shù)據(jù)不會變。print(date1.value)date2 = ctypes.c_long()kernel32.ReadProcessMemory(int(process_handle),date1.value+0x768,ctypes.byref(date2),4,None)print(date2.value)date3 = ctypes.c_long()kernel32.ReadProcessMemory(int(process_handle),date2.value+0x5560,ctypes.byref(date3),4,None)print(date3.value)sun = input("請輸入你要改變的陽光值:")# kernel32.WriteProcessMemory(int(process_handle),date2.value+0x5560,ctypes.byref(ctypes.c_long(int(sun))),4,None)kernel32.WriteProcessMemory(int(process_handle),date2.value+0x5560,ctypes.byref(ctypes.c_long(int(sun))), 4, None)kernel32.CloseHandle(int(process_handle))# 關(guān)閉進程
鏈接:https://pan.baidu.com/s/1I-rHc4fZRoPEYAqffnSrCQ?
提取碼:61us?
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/123969.html
摘要:昨天在我在國外網(wǎng)站上看到一篇文章,作者分享了他自學(xué)編程個月后找到工作的經(jīng)歷。而本文中,我主要針對想要通過學(xué)習(xí)編程找工作的角度來談。我在年月犯了一個錯誤我認為首要任務(wù)是找到一份前端開發(fā)的工作。 昨天在我在國外網(wǎng)站 reddit 上看到一篇文章,作者分享了他 自學(xué)編程 9 個月后找到工作 的經(jīng)歷。文章不到一天就得到3千多贊,2百條回復(fù)。我看了下內(nèi)容,非常中肯,其中有不少建議也是我在編程教室...
摘要:消息稱,月日,也就是中國的農(nóng)歷大年初一,以太貓將登陸中國。屆時,中國的蘋果用戶將可以領(lǐng)取自己的迷戀貓了。此外,為了慶祝中國新年,新年期間在中國發(fā)放的每一只以太貓都將擁有和中國相關(guān)的背景故事。消息稱,2月16日,也就是中國的農(nóng)歷大年初一,《CryptoKitties》(以太貓)將登陸中國。該應(yīng)用中文名為《迷戀貓》,因為迷戀與密鏈同音,也有加密區(qū)塊鏈的意思。屆時,中國的蘋果用戶將可以領(lǐng)取自己的迷...
摘要:前端框架總是帶入后端思維,而則是把前端思維帶入了后端運維。前端同學(xué)對應(yīng)該尤為激動。而帶來了進一步優(yōu)化的空間。當服務(wù)器面臨攻擊重啟磁盤故障時,打開復(fù)雜的工作臺或登陸后一通操作才能恢復(fù)。 1. 引言 Serverless 是一種 無服務(wù)器架構(gòu),讓用戶無需關(guān)心程序運行環(huán)境、資源及數(shù)量,只要將精力 Focus 到業(yè)務(wù)邏輯上的技術(shù)。 現(xiàn)在公司已經(jīng)實現(xiàn) DevOps 化,正在向 Serverles...
摘要:大學(xué),光學(xué)工程研究生畢業(yè),和程序猿完全不搭邊。那怎么辦,試著學(xué)一學(xué)唄,學(xué)習(xí)才是程序猿的天性。所以我在想程序猿是不是都需要新知識刺激一下,才能保持興奮的頭腦。有句話說的很對程序猿就像好奇的貓,追著毛球的線頭玩,最后一個毛球在腦袋里攪漿糊。 說說我自己的經(jīng)歷。211大學(xué),光學(xué)工程研究生畢業(yè),和程序猿完全不搭邊。 畢業(yè)后進了成都某國字頭研究所,在行業(yè)里摸爬滾打了四年,2018年機緣巧合在家養(yǎng)...
閱讀 1226·2023-04-25 15:53
閱讀 2101·2021-11-19 09:40
閱讀 3488·2021-10-11 10:59
閱讀 2065·2019-08-30 15:55
閱讀 1954·2019-08-30 15:54
閱讀 2293·2019-08-29 13:03
閱讀 2753·2019-08-28 18:17
閱讀 1508·2019-08-27 10:51