Nuitka ile compile edilmiş bir EXE source koduna ulaşmak

Nuitka Onefile (Python 3.12, Zstd) + PySide6 olan bir EXE’yi (imkansız gibi de) decompile edeceğimiz bir yöntem var mıdır? :smiley:
Python kodunu nuitka ile compile edilen bir exenin kodlarına ulaşmam gerekiyor ama çok mümkün değil .pyc dosyalarını elde edemiyorum haliyle C ile derlendiği için pyd ve dll dosyaları var.
Yok mudur hiçbir yolu?

:face_with_raised_eyebrow: ayıp sana ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ

Bir kaynak kodu ikili haline çevirmek isterseniz, bu kolaydır; derleyici ve yorumlayıcılar bunun için var. Mesela python programı, Python ile yazılmış kodu satır satır makine koduna çevirir (Tam olarak doğru değil ama şu an için önemi yok.). Bunun bu kadar kolay olmasının nedeni, bunu yapacak bir programın olmasından ziyade, kaynak kodun doğrudan makine koduna dönüştürülmesi ile ilgili kuralların var olmasıdır. Bu nedenle her sistemde neredeyse aynı makine kodu üretebilirsiniz.

Ancak bu işlemin tersi, yani makine kodundan kaynak koduna dönüştürme işlemi hiç de kolay değildir. İşin etik ve hukuki tarafını görmezden gelirsek; bunu yapan programlar elbette var. Ancak bu, o kadar kolay değil. En başta makine kodunu kaynak koda çevirmek için herhangi bir standart yok. Zaten olamaz da. Çünkü kaynak koddan makine koduna çevirme yaparken, kodlar birebir makine koduna çevrilemez. Bu sebeple, makine kodu assemly koduna çevrilebilir ancak bundan daha yüksek seviye bir dilin koduna çevrilemez.

Bunun neden çok zor hatta imkansız olduğunu biraz daha açıklamaya çalışayım. Mesela bir kaynak kodu makine koduna çevirdiniz diyelim. Bu durumda üretilen makine kodunda, orijinal koddaki hiçbir bilgi bulunmaz. Mesela kod hangi programlama dilinde yazıldı, fonksiyonlar nasıl gerçeklendi, değişken isimleri neler, yorum satırlarında neler yazıyor, vb. bilgilerin hepsi kaybolur. Bu sebeple, makine kodundan kaynak koda çevirme işlemi yapmaya çalışan programlar bunların bir kısmını tahmin edebilseler bile, elinizde anlaşılmaz bir kod yığınından başka bir şey olmayacaktır. Mesela değişkenler ve fonksiyonlar a, b, c gibi isimlere sahip olacak ve bunların ne anlama geldiğini bilemeyeceksiniz.

1 Beğeni