C# 如何打开外来文件扩展名(如游戏文件中的文件扩展名)?

C# 如何打开外来文件扩展名(如游戏文件中的文件扩展名)?,c#,assembly,lua,game-engine,reverse-engineering,C#,Assembly,Lua,Game Engine,Reverse Engineering,为了这个游戏,我现在正在修改,它的档案以“.rpf”结尾(是“愤怒引擎包文件”的缩写) 程序员在不访问rage引擎的情况下,如何找到打开这些类型文件/档案的方法 为了开始尝试打开外来文件扩展名,您需要知道什么?由于OpenIV团队创建了打开文件所需的程序,文件可以被打开,但是当开发一个应用程序以完成打开另一个文件的任务时,开发人员如何准确地确定甚至知道从何处开始呢?它被称为 使用十六进制编辑器查看文件时,注意到一些文本或看起来像偏移量的数字。你运用自己的经验写类似的东西,做一些假设,检查它对多个

为了这个游戏,我现在正在修改,它的档案以“.rpf”结尾(是“愤怒引擎包文件”的缩写)

程序员在不访问rage引擎的情况下,如何找到打开这些类型文件/档案的方法

为了开始尝试打开外来文件扩展名,您需要知道什么?由于OpenIV团队创建了打开文件所需的程序,文件可以被打开,但是当开发一个应用程序以完成打开另一个文件的任务时,开发人员如何准确地确定甚至知道从何处开始呢?

它被称为
使用十六进制编辑器查看文件时,注意到一些文本或看起来像偏移量的数字。你运用自己的经验写类似的东西,做一些假设,检查它对多个条目是否正确,等等。

它被称为

使用十六进制编辑器查看文件时,注意到一些文本或看起来像偏移量的数字。你可以根据自己的经验编写类似的内容,做出一些假设,并检查它是否适用于多个条目,等等。

打开此类文件的方法很多。 首先,您可以使用特定的程序来打开它们,就像OpenIV for RPF archive一样。 例如,如果你试图修改或编写一个作弊程序,大多数人会反汇编程序或用十六进制编辑器打开它们

像HexEdit这样的程序将程序的二进制值更改为十六进制数,例如将字节10100101更改为十六进制0xA5h(A5)

另一种方法是反汇编程序。ollyDbg、IDA Pro或其他程序将二进制值分解为汇编代码。现在你可以搜索一些偏移量,地址和文本,你可以删除或编辑它们,让程序做你想要的

有些程序能够生成C或C的伪代码,例如(.NET Reflector),这有助于您了解程序的功能

例如,在您读取了一些内存地址及其偏移量之后,您可以在反汇编程序本身中将它们更改(例如,JNZ(如果不是零,则跳转)为JMP(跳转),以便在每种情况下直接跳转),并将这些代码写入可执行文件,或者您可以在自己的程序中实现它们,从而更改或修补它们


这就是你要了解程序是如何工作的原理,然后你可以添加自己的一些功能,或者编写一个完整的新应用程序来完成打开任何文件的任务。正如弗拉德所说,这就是所谓的逆向工程。

有很多方法可以打开这样的文件。 首先,您可以使用特定的程序来打开它们,就像OpenIV for RPF archive一样。 例如,如果你试图修改或编写一个作弊程序,大多数人会反汇编程序或用十六进制编辑器打开它们

像HexEdit这样的程序将程序的二进制值更改为十六进制数,例如将字节10100101更改为十六进制0xA5h(A5)

另一种方法是反汇编程序。ollyDbg、IDA Pro或其他程序将二进制值分解为汇编代码。现在你可以搜索一些偏移量,地址和文本,你可以删除或编辑它们,让程序做你想要的

有些程序能够生成C或C的伪代码,例如(.NET Reflector),这有助于您了解程序的功能

例如,在您读取了一些内存地址及其偏移量之后,您可以在反汇编程序本身中将它们更改(例如,JNZ(如果不是零,则跳转)为JMP(跳转),以便在每种情况下直接跳转),并将这些代码写入可执行文件,或者您可以在自己的程序中实现它们,从而更改或修补它们


这就是你要了解程序是如何工作的原理,然后你可以添加自己的一些功能,或者编写一个完整的新应用程序来完成打开任何文件的任务。正如弗拉德所说,这就是所谓的逆向工程。

一个网络搜索带来了这一点:正如所说的,你必须查找文件格式。即使对于像
bmp
这样的常见类型,除非研究它的文档,否则也不会有什么进展。然而,问题不在于“打开文件”,而是网络搜索带来了这样一个问题:正如所说的,你必须查找文件格式。即使对于像
bmp
这样的常见类型,除非研究它的文档,否则也不会有什么进展。然而,问题不在于“打开文件”。因此,在这方面具备汇编编程知识会特别好吗?@JZersche不一定。谈论十六进制数据不需要汇编程序。它是一种查看或表达数据值的方法。但正如答案所说,在探索文件格式时,了解如何读取十六进制数据是很有价值的。十六进制表示法就像是更难读懂的二进制值的简写,将4位的集合压缩成更容易被人读懂的格式。因此,在这方面掌握汇编编程知识会特别好吗?@JZersche不一定。谈论十六进制数据不需要汇编程序。它是一种查看或表达数据值的方法。但正如答案所说,在探索文件格式时,了解如何读取十六进制数据是很有价值的。十六进制表示法就像是较难读懂的二进制值的简写,它将4位的集合压缩成一种人类更容易读懂的格式。