2014-02-22 189 views
0

就像標題所要求的那樣。例如,如果我拍了Playstation光盤,是否可以編寫一個程序將磁盤上的所有二進制文件轉換回原始代碼文件,藝術資產等?難道它只是像解密一樣嗎?如果沒有,是否有可能爲我們當前的語言製作一種語言或添加代碼,以便將來的程序可能向後轉換?謝謝!是否可以將二進制可執行文件轉換爲其原始代碼和其他文件?

+0

原始來源有評論,但該信息不包含在光盤上的位上。編譯語言不像腳本語言。 –

回答

0

在某些情況下,您可以從可執行文件或腳本中獲取原始或接近原始代碼集。某些開發平臺更容易完成所謂的反編譯。反編譯使用一種稱爲decompiler的特殊工具來實現某種特定的語言,並且會嘗試對該程序進行基本的反向工程,以便您可以獲取實際程序所需的代碼。它可能會有點不同,因爲不會有任何註釋,編譯的方式可能與編寫方式不同(例如優化,編譯器生成的代碼)。

這是更容易,特別是如果所述代碼是用Java編譯成字節碼等(即Java bytecode)爲JVM或.NET CLI(這是JIT ED但是另一回事)。在Playstation的情況下,我認爲大多數遊戲可能會用C++編寫。這種情況是使用C或C++,因爲它的輸出是直接在處理器上運行的直接machine code,所以沒有簡單的反編譯方法。是的,你可以把它變成assembly codedisassembler和自己讀,但沒有接近原來的high level language代碼。你可以稱它爲「加密」,並且可以通過大量逆向工程來解密它,這些代碼可能需要數年的時間才能解決這些日子裏大型和複雜的遊戲。

您可能能夠獲取資產,但您必須弄清楚它們存儲的格式以及它們是否實際加密或其他。

附加的PlayStation光盤可能存儲在proprietary format這意味着索尼不希望你弄清楚數據是如何格式化和存儲的,而不是從索尼轉發的公共知識(但當然這並不阻止人們試圖反向工程它)

TL; DR:

  • 的代碼可能是用C++編寫,其基本上不可能反編譯爲原始源代碼。
  • 除非你想花費數年讀取彙編代碼,否則你不可能得到原始代碼。
  • 儘管如此,還有其他語言不能彙編成彙編代碼或機器代碼,而是以字節碼,腳本或其他方式執行。這包括
    • 基本上所有的腳本語言
    • JVM語言 - 例如Java,Scala
    • CLR語言 - 例如C#,VB.NET,F#一般
  • 其它字節碼解釋器或JIT編譯的語言我敢肯定,索尼采用了proprietary format這意味着其最有可能使用不只是一個標準的DVD文件格式。換句話說,您不應該期望能夠將其彈出到電腦中的DVD驅動器中,並期望它能夠讀取它。

TL;博士我TL;博士:

很抱歉,但今天沒有發生真實。我建議等待下一個千年,看看它如何展示。

0

簡單地說:不。 您不能將二進制1轉換爲1到C++的原始源代碼或類似的東西。 但是你可以做逆向工程。

2

讓我們放輕鬆。

假設你知道x^2 = 4,你不能分辨x是2還是-2。

同樣是你有一個二進制可執行代碼或彙編代碼,你不能告訴的語言它是寫在。

但是你可以二進制文件轉換爲彙編代碼。有很多好的工具可用於Linux和Windows,既付費又免費。他們被稱爲反彙編。您可以使用它們來查看程序在做什麼,甚至可以在運行時對其進行修改。

相關問題