就像标题所要求的那样。例如,如果我使用Playstation光盘,是否可以编写一个程序,将磁盘上的所有二进制文件转换回其原始代码文件,艺术资产等?这不仅仅是像解密一样的孩子吗?如果没有,是否可以为我们当前的语言制作语言或添加代码,以便将来的程序可以向后转换?谢谢!
答案 0 :(得分:2)
让我们放轻松。
假设您知道x^2 = 4
,则无法判断x是2还是-2。
同样,你有一个二进制可执行文件或汇编代码,你不能告诉它是用哪种语言编写的。
但您可以将二进制文件转换为汇编代码。有许多好的工具可用于Linux和Windows付费和免费。他们被称为反汇编。您可以使用它们来查看程序正在执行的操作,甚至可以在运行时修改它。
答案 1 :(得分:1)
在某些情况下,是的,您可以从可执行文件或脚本中获取原始或接近原始的代码集。某些开发平台更容易进行所谓的反编译。反编译使用一种称为decompiler的特殊工具用于某种语言,并且将尝试对程序进行基本的反向工程,以便您可以获得执行实际程序的代码。它可能会有点不同,因为没有注释,编译它的方式可能与编写方式不同(例如优化,编译器生成的代码)。
这更容易,特别是如果代码被编译为字节代码,如Java(即Java bytecode),用于JVM或.NET CLI(JIT编辑但是另一个故事)。对于Playstation,我认为大多数游戏可能都是用C ++编写的。使用C或C ++的情况下,没有简单的方法来反编译它,因为它的输出是直的machine code,直接在处理器上运行。是的,您可以使用assembly code将其变为disassembler并自行阅读,但与原始high level language代码无关。您可以将其称为“加密”,并且可以通过对代码进行大量逆向工程来“解密”,这些代码可能需要花费数年时间来处理大型复杂的游戏。
您可以获得资产,但您必须弄清楚它们存储的格式以及它们是否实际上是加密的。
其他Playstation光盘可能存储在proprietary format中,这意味着索尼不希望您弄清楚数据是如何格式化和存储的,也不是索尼传播的公共知识(但当然不是阻止人们试图对其进行逆向工程)
<强> TL; DR:强>
tl; dr my tl; dr:
很抱歉,但今天没有发生。我建议等到下一个千年,然后看看它是如何展开的。
答案 2 :(得分:0)
简单地说:不。 您不能将二进制1转换为1到C ++上的原始源代码或类似的东西。 但你可以进行逆向工程。