一个用于操作ips补丁的python包

ips-util的Python项目详细描述


#ips util

summary

这是一个python包,用于操作以国际修补系统(ips)格式编码的二进制修补程序,如[此处](http://fileformats.archiveeam.org/wiki/ips_u(binary_u patch_u format))和[此处](http://old.smwiki.net/wiki/ips_file_u format)所述。IPS是一种格式,在历史上被广泛用于为经典游戏机分发ROM黑客;据我所知,尽管它有已知的局限性,但目前仍是一种标准格式,使用它的工具仍然很有用。

通过分析[lunar ips]提供的gui(https://fusoya.eludevisibility.org/lips/)和类似的工具,我创建它主要是为了帮助编写生成rom hack和输出ips补丁的python脚本。因此它可能不像其他节目那样功能齐全…但考虑到ips格式是多么简陋,我不确定这样一个工具到底能有多“功能齐全”。

我提供了一套测试来验证ips util是否尽我所能地处理ips格式的已知缺陷,但可能还有一些边缘情况我还没有想到。我也没有花太多心思来优化从源和目标文件创建补丁…基于有限的测试,结果看起来相当不错,但我知道[flips](https://github.com/alcaro/flips),例如,仍然有一些优化我还没有实现。我不太担心,我们生活在一个2KB和3KB补丁之间的差异对任何人都不再那么重要的世界。


BR/>创建一个补丁,使用现有的源和目标二进制文件:
BASH
和IPSSUTIL创建“超级马里奥世界.SMC”“超级马里奥世界[137357OH4XY3V4R] .SMC”-O 1337×P47 CH .IPS
` BR/> BR/>将补丁应用到二进制文件:
BR/> ` BASH
GT;ips_util apply 1337_p47ch.ips“super mario world.smc”-o w00t.smc
`````

>注意,在这两种情况下,如果输出文件没有使用“-o”标志指定,则结果将被写入stdout,以用于当前Linux孩子们所遇到的任何复杂的“bash”骗局。

您还可以转储修补程序的内容、预览修补程序或调试修补程序创建脚本:

``bash
>;ips_util trace 1337_p47ch.ips
````

(不过,目前,像[ips peek]这样一个合适的可视化工具(https://github.com/vector-man/ips-peek)可能在各个方面都更好。)


byteorder='little'))max out some stat
修补程序。添加rle_u记录(0x5678,b'\xea',0x10)觰nop out a buck code

with open('gavroche.ips','w+b')作为f:
f.write(patch.encode())
`````

or:

```python
from ips_util import patch

patch=patch.load('gavroche.ips')

with open('some_data.smc','rb)作为f在:
with open with open('some_patched_data.smc',“w+b”)作为f_out:
f_out.write(patch.apply(f_in.read())
````

所以就做什么吧,我不在乎。



欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何通过解决错误“活动无法转换为片段”将片段传递给类构造函数?   Java中清理Code39条码数据的regex帮助   将java转换为C++   java无法在Android Studio中生成签名的apk,出现错误   从数学方程出发   MySQL和Java内存问题   如何强制Java抛出算术异常?   java为什么JDBC将零端口视为空(默认)端口?   java如何在没有“changelog主题”的情况下加入KStream和KTable   排序我尝试合并两个排序的数组,但得到的是java。lang.ArrayIndexOutofBounds异常:5无法找出原因   如何在java中求大长度矩阵的逆?   基于maven构建的java生成类路径字符串   java每20个字符分割一个字符串,然后将每个部分打印到控制台   将字符串数字字转换为字符串数字:Java   在特定区域使用混合类型的java填充字节数组   尽管java类在开关块中实例化,但它只能调用接口方法