一个用于操作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如何使用dasein API连接Azure云(blob存储)   java如何将Jframe cardlayout中的“card”从属于card的Jpanel更改为另一个类?   java如何在单个消息框中显示循环的所有迭代?   java如何设置netbeans保存项目的操作?   java网站的某些选项在web视图中不起作用   java如何在安卓中打开从右到左的菜单滑动条   java更容易反转由静态方法(函数接口)内联创建的比较器?   映射Java HashMap。获取(键)和树形图。获取equals和compareTo方法的(键)用法   java Health endpoints只显示“status:up”,不显示敏感信息   java当我一直按back按钮登录时,字段显示以前插入的用户数据   JTable单元中的java图像显示   go Java vs.Golang for HOTP(rfc4226)   java使用函数链减少分支和清理代码,这有意义吗   java我应该为每个查询创建一个新的DB连接吗?   java推荐的函数调用方法(是否使用CompiledScript?)   java截断分区和地板分区有什么区别?   没有spring引导的java Profile特定属性文件?   异常如何在java中从控制台读取密码?