我有一些PPC代碼,我想轉換回它的原始C代碼,有沒有辦法做到這一點?可能是一個人(比如知道PPC重建C代碼的人)或程序?是否可以將PPC程序集轉換爲C?
1
A
回答
0
Boomerang聲稱支持PPC反編譯。
1
是的,沒有。
原則上可以將任何語言的程序翻譯成任何其他語言。結果不會很漂亮。
如果現有的代碼真的是編譯的結果,沒有太多的巧妙的優化,那麼很可能是一個相當死板的過程可以把它轉回到C.這往往是直接手工處理少量的代碼,但對於大型代碼庫來說卻很乏味且容易出錯。
有一些逆向工程工具在野外有關反編譯的聲明。在一般情況下,這不是一個簡單的問題。
使問題自動化的一種方法是爲已經支持C語言後端的編譯器創建PPC彙編(甚至二進制)前端。其結果是一個交叉編譯器讀取PPC代碼併產生高度混淆的C代碼。例如,我知道GCC有一個C後端。
無論您採取什麼方法,對於現有二進制文件,您都有一個良好的測試套件(以及運行它的能力)可能很關鍵,這樣您就可以證明翻譯是等同的。
編輯:請注意,您將永遠不會收到原始評論,並且只能訪問使其成爲符號表或類似調試信息的原始變量和函數名稱。
0
不可以。反編譯與獲取c不同。你永遠無法得到c回來。您可以嘗試對其進行逆向工程,試圖瞭解它在做什麼,但是一些信息會永久丟失。
這是自食其果項目:
然而,一般的反編譯器不會試圖扭轉反編譯的每一個動作,而是反覆地將輸入程序,直到結果是高層次的源代碼。因此不會重新創建原始源文件; 可能沒什麼喜歡它。
所以產生了一些C代碼可能是(但永遠不會知道)C源代碼。
1
IDA Pro 6.95包括PPC反編譯器。 但它有點貴(2350美元)
相關問題
- 1. 是否可以將調試程序集轉換爲發佈程序集?
- 2. 是否有程序將程序集轉換爲C++?
- 3. 是否可以將VBA轉換爲C#?
- 4. 將C++程序轉換爲程序集
- 5. 將C程序轉換爲程序集?
- 6. 是否有可能將Windows程序集轉換爲單聲道?
- 7. 將C函數轉換爲程序集
- 8. 將C#代碼轉換爲程序集
- 9. 是否可以將NSInteger轉換爲NSNumber?
- 10. 是否可以將byte []轉換爲bitmapsource?
- 11. 是否可以將MBCS轉換爲DBCS?
- 12. 是否可以將View轉換爲ViewGroup?
- 13. 是否可以將Button轉換爲TextView?
- 14. 是否可以將TextPointer轉換爲Integer
- 15. 是否可以將wpa_supplicant.conf轉換爲NetworkManager?
- 16. 是否可以將常規Java應用程序轉換爲Web應用程序?
- 17. 是否可以將C#字符串轉換爲SqlChars?
- 18. 是否可以將序列化的ASP.NET數據集轉換爲PHP對象?
- 19. 所有程序都可以轉換爲程序集嗎?
- 20. 將簡單的C++程序轉換爲程序集(68000)
- 21. 是否可以將schematron模式編譯爲Biztalk程序集
- 22. 是否可以將Android應用程序轉換爲在Windows上運行?
- 23. 是否可以將Oracle Forms6應用程序轉換爲Windows Forms(.net)?
- 24. 是否可以將WinForms應用程序轉換爲COM服務器?
- 25. 是否可以將用Adobe Flex編寫的應用程序轉換爲JavaScript?
- 26. 將C轉換爲MPI API C程序
- 27. 將僞代碼轉換爲程序集
- 28. 將x86轉換爲x86-64程序集
- 29. 將方程轉換爲c程序
- 30. 是否可以將查詢的輸出轉換爲可能?
PPC和PowerPC一樣嗎? – ruslik 2010-12-04 01:11:48
是的,PowerPC組件。 – user330416 2010-12-04 01:12:22
由於編譯爲機器代碼是一個有損耗的過程,因此無法獲取*原始* C。沒有1對1的對應關係。然而,Power的反彙編/反編譯器不在我的專業範圍之內。 – SingleNegationElimination 2010-12-04 01:14:58