C ++ kod çözücü var mı? [kapalı]


116

C ++ kaynak kodunu kaybettiğim bir programım var. Orada iyi C ++ çözücüler var mı?

Boomerang ile zaten karşılaştım .


objdumpLinux için
Stypox

1
harika kullanıcı arayüzü ve harika yerleşik çözümleyici için kesici.re
Misiur

Yanıtlar:


80

Sen kullanabilirsiniz Pro IDA tarafından Hex-Rays . Hata ayıklama bilgilerini derlemediğiniz sürece, genellikle bir ikili dosyadan iyi C ++ elde edemezsiniz. Kodu tersine çevirmek için çok fazla el emeği harcamaya hazırlanın .

İkili dosyaları çıkarmadıysanız, IDA Pro'nun çalışmanız için C-benzeri kodlar üretebileceğinden biraz umut vardır. Genelde çok zor olsa da, en azından birkaç yıl önce kullandığımda.


27
Açıklığa kavuşturmak gerekirse, IDA sadece demontajı verecektir. Mümkün olduğu ölçüde, yolun geri kalanını C / C ++ kaynağına dönüştüren Hex-Rays adlı bir eklenti var.
davenpcj

2
Dokümanları okumama göre, hex-ışınları yalnızca C'yi sahte kod gibi çıkarır. Bu, C ++ 'yı yeniden derlemek için işe yaramaz hale getirmez, sadece derleyicilerin C ++ yapılarını nasıl dönüştürdüğünü bilmeniz gerekir.
Michael Anderson

Biraz daha açıklığa kavuşturmak için, Disassembly, Hex-Rays ile
derleyebileceğiniz

4
SNOWMAN iyi bir ücretsiz c ++ kod
Inga

2
Snowman için +1, ancak diğerlerinin de belirttiği gibi, basit bir Merhaba bile , Dünya , derlenmiş bir kez pratik olarak okunamaz hale gelir.
bdetweiler

25

bilgi derleme sürecinde atılır. Bir kod çözücü, sınıflar ve her şeyle mantıksal eşdeğer kodu üretebilse bile (muhtemelen yapamaz), kendi kendini belgeleyen kısım optimize edilmiş sürüm kodunda kaybolur. Değişken adı yok, rutin isim yok, sınıf ismi yok - sadece adresler.


25
programın "ruhu" gitti, sadece eski benliğinin boş bir kabuğu ... "
Darshan Chaudhary

21

Evet, ancak hiçbiri çabaya değecek kadar okunabilir kod üretmeyi başaramayacak. Eski uygulamanızı sıfırdan yeniden yazmak yerine, derlenmiş kaynağı içinde assembler blokları ile okumaya çalışmak için daha fazla zaman harcayacaksınız.


6

C ++ kodu oluşturan herhangi bir kod çözücü görmedim. C kodunu oluşturmak için makul bir girişimde bulunan birkaç deneysel olanı gördüm, ancak bunlar belirli bir derleyicinin kod oluşturma kalıplarının eşleştirilmesine bağlı olma eğilimindeydiler (bu değişmiş olabilir, buna son baktığımdan bu yana epey zaman geçti. ). Elbette herhangi bir sembolik bilgi gitmiş olacak. "Decompiler" için Google.


4

Orijinal kodun ne kadar büyük ve ne kadar iyi yazılmış olduğuna bağlı olarak, en sevdiğiniz dilde (yine de C ++ olabilir) yeniden başlamanız ve son sürümde yapılan hatalardan ders almanız faydalı olabilir. Biri atıp atmak için bir tane yazmaktan bahsetmemiş miydi?

nb Açıkçası, eğer bu çok büyük bir ürünse, o zaman ayırmaya değmeyebilir.



24
Joel harika bir köşe yazarı, ama bazen yanılıyor. Ve sonra yanlış alıntı yaptığı zamanlar vardır. Burada olduğu gibi, soru kaynak kodun kaybı etrafında odaklandığı için. Joels makalesi, kaynak kodun neden değerli olduğunu açıklıyor.
MSalters

5
Biri atıp atmak için bir tane yazmaktan bahsetmemiş miydi? Evet, ve fikrini değiştirdi davewsmith.com/blog/2010/brook-revisits-plan-to-throw-one-away [I] 1975'te, programcılara "ilk sürümü
ta.speot. İs
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.