植物大战僵尸修改阳光

工具:
CE
python
一、寻找基址
首先打开CE和游戏,把游戏附加上去

在这里插入图片描述 首先我们查找阳光值,这里是50
在这里插入图片描述 查找到有12013条,我们通过修改阳光值再次扫描来减少结果,这里一次就只剩一个了
在这里插入图片描述 通过Ctrl+F5来看看谁访问了这个地址
在这里插入图片描述 这里我们看到他有一个偏移量,是5578,EDX的地址为32DE0D38,我们重新查找一下这个地址,注意要勾上16进制
在这里插入图片描述 我们找到47个结果,它没有减少了,我们来一个一个看一下
在这里插入图片描述 找到这个很像,我们来看一下
在这里插入图片描述 可以看到偏移量为868,地址为027B9ED8重复刚才的操作
在这里插入图片描述 这里有四个基址,应该就在这里面了,通过手动添加地址看能不能反推到阳光值,
在这里插入图片描述 我们得到了这个阳光值,并且修改数值,阳光值也变化了,可以确定,这个00755E0C就是我们要找的基址,后面进入代码阶段

二、写代码
有了上面找的基址和偏移量,代码就可以这么写:

# -*- coding: utf-8 -*-
# Name:         1
# Description:  
# Author:       XueCheng Wang
# Date:         2020/5/7

import win32gui
import win32api
import win32process
import ctypes   #c/c++语言调用

# 修改阳光值
def sun(process_handle):

    # 调用动态连接库
    kernel32 = ctypes.windll.LoadLibrary(r"./kernel32.dll")
    data1 = ctypes.c_long()
    kernel32.ReadProcessMemory(int(process_handle), 0x00755E0c, ctypes.byref(data1), 4, None)
    data2 = ctypes.c_long()
    kernel32.ReadProcessMemory(int(process_handle), data1.value + 0x868, ctypes.byref(data2), 4, None)
    SUN = ctypes.c_long(int(1000))
    kernel32.WriteProcessMemory(int(process_handle), data2.value + 0x5578, ctypes.byref(SUN), 4, None)

if __name__ == '__main__':
    # 获取窗口句柄
    Hwnd = win32gui.FindWindow("MainWindow","Plants vs. Zombies")
    # 获取进程id
    process_id = win32process.GetWindowThreadProcessId(Hwnd)[1]
    # 获取进程句柄
    process_handle = win32api.OpenProcess(0x1F0FFF,False,process_id)
    # 无限阳光
    sun(process_handle)

这样就实现了植物大战僵尸的阳光修改,加上界面

在这里插入图片描述

原创文章 3 获赞 20 访问量 215

猜你喜欢

转载自blog.csdn.net/qq_41337427/article/details/106026001