Python修改exe之类的游戏文件中的数值

文章目录

  • 场景
    • 查找
    • 修改
  • 补充
    • 字节
    • to_bytes

场景

某些游戏数值(攻击力、射程、速度…)被写在exe之类的文件里
要先查找游戏数值,然后修改

查找

首先,要查找数值,大数重复较少,建议从大数找起

F = '游戏原件.exe'def find_your_sister0(a: bytes):"""查找字符串"""length = len(a)with open(F, 'rb') as f:b = f.read()for i in range(len(b) - length + 1):if b[i: i + length] == a:print(i, b[i - 30: i + length + 30])def find_your_sister1(a: int):"""查找0~255的数"""with open(F, 'rb') as f:b = f.read()  # <class 'bytes'>for i in range(len(b)):if b[i] == a:print(i)def find_your_sister2(a: int):"""查找0~65535的数"""ab = a.to_bytes(2, byteorder='little')print(a, '转字节数组', ab)with open(F, 'rb') as f:b = f.read()for i in range(len(b) - 1):if b[i: i + 2] == ab:print(i)if __name__ == '__main__':# find_your_sister0(b'fighter')# find_your_sister1(11)find_your_sister2(13536)

修改

F1 = '游戏原件.exe'
F2 = '游戏魔改文件.exe'def cp():with open(F1, 'rb') as f:b = f.read()with open(F2, 'wb') as f:f.write(b)def replace1(new_data: int, offset: int):"""修改1个byte"""with open(F2, 'rb') as f:b = f.read()with open(F2, 'wb') as f:f.write(b[:offset])f.write(new_data.to_bytes(1, byteorder='little'))f.write(b[offset + 1:])print(offset, '偏移量的位置', b[offset], '修改为', new_data)def replace2(new_data: int, offset: int):"""修改2个bytes"""nb = new_data.to_bytes(2, byteorder='little')  # 例如:256 --> b'\x00\x01'with open(F2, 'rb') as f:b = f.read()with open(F2, 'wb') as f:f.write(b[:offset])f.write(nb)f.write(b[offset + 2:])print(offset, '和', offset + 1, '偏移量的位置', b[offset: offset + 2], '修改为', nb)if __name__ == '__main__':cp()replace2(1600, 27935)  # 离子炮HPreplace1(76, 439952)  # 离子炮Areplace1(29, 440055)  # 风暴Areplace2(630, 376339)  # 大喷火HPreplace1(23, 393697)  # 小喷火Vreplace1(20, 393726)  # 中喷火Vreplace1(19, 393759)  # 大喷火Vreplace1(24, 393977)  # 阿基里斯Vreplace1(9, 393290)  # 重炮兵Vreplace1(13, 393490)  # 重防空Vreplace2(1100, 439604)  # 阿基里斯A

补充

字节

字节(Byte)是计算机信息技术用于计量存储容量的一种计量单位,储存的数值范围为0~255

WinHex是一款十六进制编辑器,编辑界面如下

to_bytes

函数说明

Return an array of bytes representing an integer.lengthLength of bytes object to use.  An OverflowError is raised if theinteger is not representable with the given number of bytes.byteorderThe byte order used to represent the integer.  If byteorder is 'big',the most significant byte is at the beginning of the byte array.  Ifbyteorder is 'little', the most significant byte is at the end of thebyte array.  To request the native byte order of the host system, use`sys.byteorder' as the byte order value.signedDetermines whether two's complement is used to represent the integer.If signed is False and a negative integer is given, an OverflowErroris raised.

函数示例(256–>100–>0100–>01,00–>00,01

>>> a = 256>>> hex(a)
'0x100'>>> a.to_bytes(2, byteorder='little')
b'\x00\x01'

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/11634.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OPT系列极速版远距离光数据传输器|光通讯传感器安装与调试方法

OPT系列极速版远距离光数据传输器|光通讯传感器使用红外激光通信&#xff0c;满足全双工 100M 带宽&#xff0c;通讯距离可达 300 米。能够快速&#xff0c;稳地传送数据&#xff0c;支持主流的工业控制总线&#xff08;Profinet&#xff0c;Ethercat 等&#xff09;&#xff1…

【JVM】从可达性分析,到JVM垃圾回收算法,再到垃圾收集器

《深入理解Java虚拟机》[1]中&#xff0c;有下面这么一段话&#xff1a; 在JVM的各个区域中&#xff0c;如虚拟机栈中&#xff0c;栈帧随着方法的进入和退出而有条不紊的执行者出栈和入栈操作。每一个栈帧中分配多少内存基本上是在类结构确定下来时就已知的&#xff08;尽管在…

【RAG 论文】BGM:为 LLM 和 Retriever 的偏好 gap 搭建一个 Bridge

论文&#xff1a;Bridging the Preference Gap between Retrievers and LLMs ⭐⭐⭐ Google Research, arXiv:2401.06954 论文速读 LLM 与 Retriever 之间存在一个 preference gap&#xff1a;大多数 retriever 被设计为 human-friendly&#xff0c;但是 LLM 的偏好与人类的却…

长难句打卡 5.13

And in Europe, some are up in arms over a proposal to drop a specific funding category for social-science research and to integrate it within cross-cutting topics of sustainable development. 在欧洲&#xff0c;有些人正竭力反对一项“终止专用于社会科学研究的…

网络安全防护:抵御DDoS和CC攻击

在当今数字化时代&#xff0c;网络安全已成为任何组织或个人不可忽视的重要议题。DDoS&#xff08;分布式拒绝服务&#xff09;攻击和CC&#xff08;命令与控制&#xff09;攻击作为两种最为常见的网络攻击方式&#xff0c;给网络运营者和用户带来了巨大的威胁和影响。本文将介…

函数memcpy的实现及详解

前言 今天我们来了解一下memcpy函数和它的作用吧&#xff0c;咋们之前已经熟悉了strcpy的使用&#xff0c;它的作用是字符串的拷贝&#xff0c;那么当我们要拷贝其他类型的数据时&#xff0c;应该使用什么函数呢&#xff0c;我们今天给大家介绍的就是memcpy函数&#xff0c;他可…

C++语言的字符数组

存放字符数据的数组是字符数组&#xff0c;字符数组中的一个元素存放一个字符。字符数组具有数组的共同属性。 1. 声明一个字符数组 char c[5]; 2. 字符数组赋值方式 &#xff08;1&#xff09;为数组元素逐一赋值 c[0]H c[1]E c[2]L c[3]L c[4]O &#xff08;2&…

微信小程序开发,构建NPM报错解决

报错信息如下&#xff1a; message&#xff1a; NPM packages not found. Please confirm npm packages which need to build are belong to miniprogramRoot directory. Or you may edit project.config.jsons packNpmManually and packNpmRelationList appid: wx7144a5d5411…

SpringBoot 启动时查询数据库数据,并赋值给全局变量

创建一个组件 AreaData import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.CommandLineRunner; import org.springframework.stereotype.Component;import java.u…

三极管 导通条件

一、三极管理解 三极管是电子行业常用的元器件之一&#xff0c;他是一种电流型控制的器件&#xff0c;他有三种工作状态&#xff1a;截止区&#xff0c;放大区、饱和区。当三极管当做开关使用时&#xff0c;他工作在饱和区。下面简短讲解三极管作为开关使用的方法&#xff0c;只…

2.三极管

2.习题 3.知识补充

Web 安全 PHP 代码审查之常规漏洞

前言 工欲善其事&#xff0c;必先利其器。我们做代码审计之前选好工具也是十分必要的。下面我给大家介绍两款代码审计中比较好用的工具。 一、审计工具介绍 PHP 代码审计系统— RIPS 功能介绍 RIPS 是一款基于 PHP 开发的针对 PHP 代码安全审计的软件。 另外&#xff0c;…

Spring Cloud 概述及项目创建

本篇主要介绍什么是Spring Cloud&#xff0c;以及Spring Cloud工程的创建 目录 一、什么是微服务&#xff1f; 集群 分布式 微服务 二、Spring Cloud 什么是Spring Cloud Spring Cloud 版本 Spring Cloud实现方案 Spring Cloud 工程创建 创建父工程 创建子工程 一、…

MySQL 大量数据插入优化

效率最好的方式是&#xff1a;批量插入 开启事务。 1、数据批量插入相比数据逐条插入的运行效率得到极大提升&#xff1b; ## 批量插入 INSERT INTO table (field1, field12,...) VALUES (valuea1, valuea2,...), (valueb1, valueb2,...),...;当数据逐条插入时&#xff0c;每…

C++类细节,反汇编,面试题02

文章目录 2. 虚函数vs纯虚函数3. 重写vs重载vs隐藏3.1. 为什么C可以重载&#xff1f; 4. struct vs union4.1. 为什么要内存对齐&#xff1f; 5. static作用6. 空类vs空结构体6.1. 八个默认函数&#xff1a;6.2. 为什么空类占用1字节 7. const作用7.1 指针常量vs常量指针vs常量…

【SRC-CPP-OpenCV】给图片更换背景色

文章目录 Part.I IntroductionPart.II Main_bodyChap.I 源码简析Chap.II 效果展示 Part.III 源码Reference Part.I Introduction 本文将介绍如何用 OpenCV 更换图片的背景色&#xff08;附有完整代码&#xff09;。 Part.II Main_body Chap.I 源码简析 配置部分&#xff1a…

Java文字识别接口、票据ocr、接口开发文档

曾经看到过这样一句话“如果把产品比作孩子的话&#xff0c;那么产品经理就是生孩子的”。由此可见&#xff0c;产品经理对于产品的重要性。一位有经验的产品经理提出的产品需求往往逻辑清晰&#xff0c;技术开发过程中修改需求的次数少&#xff0c;产品上线、推出后让人易于接…

uniapp:项目目录下没有package.json文件的创建办法

问题 在HbuilderX开发工具创建的uniapp项目&#xff0c;默认没有package.json文件。 此时如果在控制台使用npm 命令添加外部依赖包时&#xff0c;就会出现“no such file or directory *** package.json ”的提示错误。 解决方案 在控制台使用npm 命令&#xff0c;进行初始…

1-3ARM_GD32点亮LED灯

简介&#xff1a; 最多可支持 112 个通用 I/O 引脚(GPIO)&#xff0c;分别为 PA0 ~ PA15&#xff0c;PB0 ~ PB15&#xff0c;PC0 ~ PC15&#xff0c;PD0 ~ PD15&#xff0c;PE0 ~ PE15&#xff0c;PF0 ~ PF15 和 PG0 ~ PG15&#xff0c;各片上设备用其来实现逻辑输入/输出功能。…

【论文精读】| KBS2023-TMBL-多模态情感分析系列文章解读

TMBL: Transformer-based multimodal binding learning model for multimodal sentiment analysis 一. KBS2023-TMBL-用于多模态情感分析的极向量和强度向量混合器模型1 Abstract1.1 Motivation1.2 Method1.3 Results 2. Related Work2.1 情感分析2.1 基于transformer的2.1 模态…