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&…

三极管 导通条件

一、三极管理解 三极管是电子行业常用的元器件之一&#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…

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 模态…

LeetCode/NowCoder-链表经典算法OJ练习2

最好的&#xff0c;不一定是最合适的&#xff1b;最合适的&#xff0c;才是真正最好的。&#x1f493;&#x1f493;&#x1f493; 目录 说在前面 题目一&#xff1a;分割链表 题目二&#xff1a;环形链表的约瑟夫问题 SUMUP结尾 说在前面 dear朋友们大家好&#xff01;&…

(done) 什么是马尔可夫链?Markov Chain

参考视频&#xff1a;https://www.bilibili.com/video/BV1ko4y1P7Zv/?spm_id_from333.337.search-card.all.click&vd_source7a1a0bc74158c6993c7355c5490fc600 如下图所示&#xff0c;马尔可夫链条实际上就是 “状态机”&#xff0c;只不过状态机里不同状态之间的边上是 “…

车载电子电器架构 —— Vector对于车载以太网的解决方案(协议栈)

车载电子电器架构 —— Vector对于车载以太网的解决方案(协议栈) 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你…

实战WinRAR捆绑图片和恶意程序并自动上线Cobalt Strike(cs钓鱼日记)

钓鱼 - WinRAR捆绑图片和恶意程序并自动上线Cobalt Strike 环境准备 工具&#xff1a;Cobalt Strike、Winrar压缩工具、一张JPG图片 虚拟机IP&#xff1a; 【攻击机】Kali&#xff1a;192.168.232.128 【靶机】win7&#xff1a;192.168.232.144 情景&#xff1a;在钓鱼事…