Saya memiliki program di mana saya kehilangan kode sumber C ++. Apakah ada pengurai C ++ yang bagus di luar sana?
Saya sudah berlari melintasi Boomerang .
Saya memiliki program di mana saya kehilangan kode sumber C ++. Apakah ada pengurai C ++ yang bagus di luar sana?
Saya sudah berlari melintasi Boomerang .
Jawaban:
Anda dapat menggunakan IDA Pro oleh Hex-Rays . Anda biasanya tidak akan mendapatkan C ++ yang baik dari biner kecuali Anda telah mengompilasi informasi debugging. Bersiaplah untuk menghabiskan banyak tenaga kerja manual membalikkan kode.
Jika Anda tidak menghapus binari, ada beberapa harapan karena IDA Pro dapat menghasilkan kode mirip C untuk Anda gunakan. Biasanya ini sangat kasar, setidaknya saat saya menggunakannya beberapa tahun yang lalu.
informasi dibuang dalam proses kompilasi. Bahkan jika dekompiler dapat menghasilkan kode logis yang setara dengan kelas dan semuanya (mungkin tidak bisa), bagian yang mendokumentasikan sendiri hilang dalam kode rilis yang dioptimalkan. Tidak ada nama variabel, tidak ada nama rutin, tidak ada nama kelas - hanya alamat.
Ya, tetapi tidak satupun dari mereka akan berhasil menghasilkan kode yang cukup dapat dibaca sepadan dengan usaha. Anda akan menghabiskan lebih banyak waktu untuk mencoba membaca sumber yang didekompilasi dengan blok assembler di dalamnya, daripada menulis ulang aplikasi lama Anda dari awal.
Saya belum melihat dekompiler yang menghasilkan kode C ++. Saya telah melihat beberapa percobaan yang membuat upaya yang masuk akal untuk menghasilkan kode C, tetapi mereka cenderung bergantung pada pencocokan pola pembuatan kode dari kompiler tertentu (yang mungkin telah berubah, sudah lama sejak saya terakhir melihat ini ). Tentu saja semua informasi simbolis akan hilang. Google untuk "decompiler".
Bergantung pada seberapa besar dan seberapa baik kode aslinya ditulis, mungkin ada baiknya memulai lagi dalam bahasa favorit Anda (yang mungkin masih C ++) dan belajar dari kesalahan apa pun yang dibuat pada versi terakhir. Bukankah seseorang pernah berkata tentang menulis satu untuk dibuang?
nb Jelas jika ini adalah produk besar, maka mungkin tidak sepadan dengan waktu.
objdump
untuk Linux