就像標題所要求的那樣。例如,如果我拍了Playstation光盤,是否可以編寫一個程序將磁盤上的所有二進制文件轉換回原始代碼文件,藝術資產等?難道它只是像解密一樣嗎?如果沒有,是否有可能爲我們當前的語言製作一種語言或添加代碼,以便將來的程序可能向後轉換?謝謝!是否可以將二進制可執行文件轉換爲其原始代碼和其他文件?
回答
在某些情況下,您可以從可執行文件或腳本中獲取原始或接近原始代碼集。某些開發平臺更容易完成所謂的反編譯。反編譯使用一種稱爲decompiler的特殊工具來實現某種特定的語言,並且會嘗試對該程序進行基本的反向工程,以便您可以獲取實際程序所需的代碼。它可能會有點不同,因爲不會有任何註釋,編譯的方式可能與編寫方式不同(例如優化,編譯器生成的代碼)。
這是更容易,特別是如果所述代碼是用Java編譯成字節碼等(即Java bytecode)爲JVM或.NET CLI(這是JIT ED但是另一回事)。在Playstation的情況下,我認爲大多數遊戲可能會用C++編寫。這種情況是使用C或C++,因爲它的輸出是直接在處理器上運行的直接machine code,所以沒有簡單的反編譯方法。是的,你可以把它變成assembly code與disassembler和自己讀,但沒有接近原來的high level language代碼。你可以稱它爲「加密」,並且可以通過大量逆向工程來解密它,這些代碼可能需要數年的時間才能解決這些日子裏大型和複雜的遊戲。
您可能能夠獲取資產,但您必須弄清楚它們存儲的格式以及它們是否實際加密或其他。
附加的PlayStation光盤可能存儲在proprietary format這意味着索尼不希望你弄清楚數據是如何格式化和存儲的,而不是從索尼轉發的公共知識(但當然這並不阻止人們試圖反向工程它)
TL; DR:
- 的代碼可能是用C++編寫,其基本上不可能反編譯爲原始源代碼。
- 除非你想花費數年讀取彙編代碼,否則你不可能得到原始代碼。
- 儘管如此,還有其他語言不能彙編成彙編代碼或機器代碼,而是以字節碼,腳本或其他方式執行。這包括
- 基本上所有的腳本語言
- JVM語言 - 例如Java,Scala
- CLR語言 - 例如C#,VB.NET,F#一般
- 其它字節碼解釋器或JIT編譯的語言我敢肯定,索尼采用了proprietary format這意味着其最有可能使用不只是一個標準的DVD文件格式。換句話說,您不應該期望能夠將其彈出到電腦中的DVD驅動器中,並期望它能夠讀取它。
TL;博士我TL;博士:
很抱歉,但今天沒有發生真實。我建議等待下一個千年,看看它如何展示。
簡單地說:不。 您不能將二進制1轉換爲1到C++的原始源代碼或類似的東西。 但是你可以做逆向工程。
讓我們放輕鬆。
假設你知道x^2 = 4
,你不能分辨x是2還是-2。
同樣是你有一個二進制可執行代碼或彙編代碼,你不能告訴的語言它是寫在。
但是你可以二進制文件轉換爲彙編代碼。有很多好的工具可用於Linux和Windows,既付費又免費。他們被稱爲反彙編。您可以使用它們來查看程序在做什麼,甚至可以在運行時對其進行修改。
- 1. 將.m文件轉換爲二進制可執行文件
- 2. 二進制文件和其他文件
- 3. 將原始文件(二進制數據)轉換爲XML文件
- 4. 將python腳本轉換爲二進制可執行文件
- 5. 是否可以從二進制可執行文件中提取常量和其他預定義的值?
- 6. 可執行文件是否可以將某些內容返回給其他可執行文件?
- 7. 將其他代碼合併到可執行文件(arm-linux)
- 8. 將Ascii代碼文件轉換爲二進制文件
- 9. 將Unix可執行文件轉換爲Windows可執行文件
- 10. 是否可以在java中執行二進制文件?
- 11. 將原始二進制數據轉換爲圖像文件?
- 12. 將一個文件「反編譯」爲原始二進制代碼
- 13. SAS可以將CSV文件轉換爲二進制格式嗎?
- 14. 設置開始地址以執行原始二進制文件
- 15. 我想將可執行文件注入其他可執行文件
- 16. 將可執行文件轉換爲代碼
- 17. 將Matlab/Octave代碼轉換爲可執行文件
- 18. 是否可以從T4 .tt模板中的其他文件執行代碼以生成代碼?
- 19. 讀取二進制文件並將其轉換爲二進制字符串
- 20. 將「1」和「0」轉換爲其二進制等效文件以生成JPG
- 21. 是否可以使用VIVADO HLS將可執行C文件轉換爲VHDL?
- 22. 將.NET WinForms應用程序轉換爲二進制可執行文件
- 23. 是否可以旋轉元文件圖像而不將其轉換爲位圖?
- 24. GraphEngine TSL文件是否可以導入其他TSL文件?
- 25. m3u8文件是否可以包含其他m3u8文件?
- 26. 將JRuby二進制文件打包成可執行文件夾
- 27. 檢查文件是否由其他可執行文件運行使用
- 28. 可以將文本文件和其他文件打包成C可執行文件
- 29. Ant:將可執行文件的輸出連續轉換爲其他文件而不創建臨時文件?
- 30. Ruby中的字符串轉換爲原始二進制文件
原始來源有評論,但該信息不包含在光盤上的位上。編譯語言不像腳本語言。 –