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

文章目录

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

场景

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

查找

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

F = '游戏原件.exe'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_sister1(133)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(72, 439952)  # 离子Areplace1(28, 440055)  # 风暴Areplace2(660, 376339)  # 大喷火HPreplace2(1120, 376402)  # 美洲狮HPreplace2(560, 376366)  # 重激光HPreplace1(23, 393697)  # 小喷火Vreplace1(20, 393726)  # 中喷火Vreplace1(17, 393759)  # 大喷火Vreplace1(24, 393977)  # 阿基里斯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.

函数示例

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

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

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

相关文章

ROS机器人编程技术应用与实践

机器人编程技术ROS编程基础应用与实践 通过对ROS基础操作命令的应用&#xff0c;熟练掌握以下技能&#xff1a; 1、掌握ROS工作空间和功能包的创建和编译&#xff1b; 2、掌握消息文件和服务文件的创建和编译&#xff1b; 3、能够运用Python编写消息发布节点与主题订阅节点&am…

【JVM】垃圾回收机制(Garbage Collection)

目录 一、什么是垃圾回收&#xff1f; 二、为什么要有垃圾回收机制&#xff08;GC&#xff09;&#xff1f; 三、垃圾回收主要回收的内存区域 四、死亡对象的判断算法 a&#xff09;引用计数算法 b&#xff09;可达性分析算法 五、垃圾回收算法 a&#xff09;标记-清除…

Oracle体系结构初探:闪回技术

在Oracle体系结构初探这个专栏中&#xff0c;已经写过了REDO、UNDO等内容。觉得可以开始写下有关备份恢复的内容。闪回技术 — Oracle数据库备份恢复机制的一种。它可以在一定条件下&#xff0c;高效快速的恢复因为逻辑错误&#xff08;误删误更新等&#xff09;导致的数据丢失…

【C++】深入剖析C++11中右值引用和左值引用

目录 一、左值引用 && 右值引用 二、左值引用于右值引用的比较 三、 右值引用使用场景和意义 1、函数返回值 ①移动赋值 ②移动构造 2、STL容器插入接口 ​3、完美转发 一、左值引用 && 右值引用 传统的C语法中就有引用的语法&#xff0c;而C11中新增了…

Day 43 1049. 最后一块石头的重量 II 494. 目标和 474.一和零

最后一块石头重量Ⅱ 有一堆石头&#xff0c;每块石头的重量都是正整数。 每一回合&#xff0c;从中选出任意两块石头&#xff0c;然后将它们一起粉碎。假设石头的重量分别为 x 和 y&#xff0c;且 x < y。那么粉碎的可能结果如下&#xff1a; 如果 x y&#xff0c;那么两…

提取网页元数据的Python库之lassie使用详解

概要 Lassie是一个用于提取网页元数据的Python库,它能够智能地抓取网页的标题、描述、关键图像等内容。Lassie的设计目的是为了简化从各种类型的网页中提取关键信息的过程,适用于需要预览链接内容的应用场景。 安装 安装Lassie非常简单,可以通过Python的包管理器pip进行安…

芋道系统springcloud模块启动报错,枚举类不能为空

问题描述&#xff1a; Error starting ApplicationContext. To display the conditions report re-run your application with debug enabled. 2024-05-10 15:50:15.756 | ERROR 9120 | main [TID: N/A] o.s.b.d.LoggingFailureAnalysisReporter | ************************…

TriCore: Architecture

说明 本文是 英飞凌 架构文档 TriCore TC162P core archiecture Volume 1 of 2 (infineon.com) 的笔记&#xff0c;稍作整理方便查阅&#xff0c;错误之处&#xff0c;还请指正&#xff0c;谢谢 :) 1. Architecture 2. General Purpose & System Register 名词列表&#…

通俗的理解网关的概念的用途(三):你的数据包是如何到达下一层的

其实&#xff0c;这一章我写不好&#xff0c;因为这其中会涉及到一些计算和一些广播等概念&#xff0c;本人不善于此项。在此略述&#xff0c;可以参考。 每台设备的不同连接在获得有效的IP地址后&#xff0c;会根据IP地址的规则和掩码的规则&#xff0c;在操作系统和交换机&a…

【前端基础】CSS样式+Vue中绘制时间轴

深度选择器 在 Vue.js 中&#xff0c;/deep/、>>>、:deep 和 ::v-deep 这些都是深度选择器&#xff0c;用于修改子组件的样式。它们主要用于解决作用域样式和组件样式之间的冲突问题。 1. /deep/ 或 >>> /deep/ 和 >>> 是相同的选择器&#xff0c;…

uniApp开发小程序自定义tabBar底部导航栏+tabBar中间凸起自定义样式实现

先看效果是否可以满足你们&#xff0c;如果可以满足你只要一步一步照着做绝对没有错。 本人技术不佳&#xff0c;研究了一整天&#xff0c;全网的大佬们写的博客看的晕头转向&#xff0c;避免大伙再走弯路&#xff0c;跟着我以下步骤一点一点来绝对可以实现。 最终效果图&#…

二、ArkTS语法学习

上一篇我们学习了Harmony​​​​​​开发入门&#xff0c;接下来我们简单学习一下ArkTS 一、ArkTS起源 在TS基础上扩展了申明式UI和状态管理等相应的能力 二、TS语法基础 1、类型 any 任意类型&#xff08;动态类型&#xff09; let a: any 5; a "str" num…