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