本帖最后由 Eorton 于 2019-3-27 12:43 编辑
初来乍到,还请各位大佬多多包涵!
好,首先引用老师的帖子植物大战僵尸之无限阳光
https://www.52pojie.cn/thread-864385-1-1.html
(出处: 吾爱破解论坛)
目的是找到阳光的基址
首先我们打开植物大战僵尸,我们看到是50阳光值
sun = 50
接下来,因为我们跳过了找基址的那个步骤了,我们已经基址了,直接上基址
[Python] 纯文本查看 复制代码 阳光偏移地址PlantsVsZombies.exe+2AA00C
004537CE - int 3
004537CF - int 3
004537D0 - cmp dword ptr [eax+00000768],00
004537D7 - jne PlantsVsZombies.exe+537DC
004537D9 - xor al,al
0041BA72 - jg PlantsVsZombies.exe+1BA80
0041BA74 - sub esi,ebx
0041BA76 - mov [edi+00005560],esi
0041BA7C - mov al,01
0041BA7E - pop esi
众所周知,阳光值地址是:
第二级指针
第一级指针 = [第二级指针 + 0x768]
阳光地址 = [第一级指针 + 0x5560]
不懂的话下面详细用CE演示下就明白
我们完成赋值后,出现真实阳光数值,证明我们已经找到真实地址了
记录下地址,点OK,我们这边算得地址是 0X16E4E838
完事,基本没CE什么事了,可以out了
然后,我们开始pypypypy ????你们想什么,我说的是Python!
开撸!
[Python] 纯文本查看 复制代码
# 导入一些API必须库from win32gui import *
# from win32com import *
# from win32con import *
from win32api import *
# import ctypes
from ctypes import *
from win32process import *
# import struct
[Python] 纯文本查看 复制代码
# 最高权限附加进程
PROCESS_ALL_ACCESS=(0x000F0000|0x00100000|0xFFF)
kernel32 = windll.LoadLibrary("kernel32.dll")
window_handle = FindWindow(None,"植物大战僵尸中文版")
process_id_read = GetWindowThreadProcessId(window_handle)[1]
process_handles = OpenProcess(0x1F0FFF,False,process_id_read)
[Python] 纯文本查看 复制代码
# 阳光值内存修改
written = c_int(0)
sun = 9999
kernel32.WriteProcessMemory(int(process_handles),0x16E4E838,byref(c_int(sun)),4,bytes(written))
print("That is OK")
好了,我们来检验下
好了,开CE检测当然修改成功啊!我们干掉CE再来
hahahahaha修改成功了吧,本次是用Python来写的,大牛别喷我,我就一单单小白,还不会怎么在Python写偏移,谢谢大家的支持!
----------------------------------------------------------------------------------------------------------------------------------------------
回复:@循环不计次 所说的“怎么找地址很关键”
前面所说,引用前辈老师的帖子:“https://www.52pojie.cn/thread-864385-1-1.html”,所以这里不重复叙述!请移步看老师的帖子,本文是说用Python怎么实现的,谢谢!
|