Python bayt kodu (.pyc) dosyalarını okunabilir Python kaynak koduna geri decompile edin. Python 2.7-3.8 desteği, tamamen tarayıcıda çalışır, sunucuya veri göndermez.
Features
- Bytecode çözümleme: PYC dosyalarındaki bytecode'u ayrıştırır ve Python kaynak koduna geri dönüştürür.
- Kontrol akışı rekonstrüksiyonu: Döngüler, koşullar ve fonksiyon tanımlarını yeniden inşa ederek okunabilir kod üretir.
- Yorumlu çıktı: Çözümlenen kodu açıklayıcı yorumlarla birlikte sunarak tersine mühendisliği kolaylaştırır.
- Çoklu sürüm uyumluluğu: Python 3.x sürümlerindeki bytecode formatlarını otomatik algılayıp uygun decompiler stratejisi uygular.
Usage Guide
- PYC dosyasını içe aktarın: Analiz etmek istediğiniz derlenmiş `.pyc` dosyasını seçin.
- Decompile işlemini başlatın: Araç bytecode'u Python kaynak kodu formatına dönüştürür ve süreç ilerlemesini gösterir.
- Çıktıyı gözden geçirin: Oluşturulan kodu inceleyin; fonksiyonlar, sınıflar ve global değişkenler yeniden inşa edilir.
- Kaydedin veya dışa aktarın: Kaynak kodu `.py` dosyası olarak indirin veya editöre kopyalayın.
Technical Details
Python Decompile Süreci ve Bayt Kodu Yeniden Oluşturma
PYC dosyalarını Python kaynak koduna decompile etmek, bayt kodunu yüksek seviyeli Python sözdizimine geri mühendislik etmeyi içerir. Süreç: PYC dosyasını ayrıştırma (magic number, zaman damgası, kod nesnelerini çıkarma), bayt kodu yönergelerini çözümleme (dis modülü ile işlem dizisini anlama), kontrol akışı grafiği oluşturma (dallanma, döngü, istisna yönetimini belirleme) ve Soyut Sözdizim Ağacı (AST) üretimi (sözdizimsel yapıyı yeniden inşa etme) aşamalarından oluşur.
Decompile Algoritmaları ve AST Rekonstrüksiyonu
Modern decompiler'lar gelişmiş algoritmalar kullanır: kontrol akışı analizi (bayt kodu atlamalarından Kontrol Akışı Grafiği oluşturma, goto benzeri atlamalardan yapılandırılmış kontrol bloklarını çıkarma), veri akışı analizi (değişken tanım-kullanımını izleme, işlemlerden tür çıkarımı) ve desen tabanlı yeniden yapılandırma (bayt kodu yönerge dizilerini Python sözdizimi kalıplarıyla eşleştirme). AST üretimi, Module → FunctionDef gibi düğüm hiyerarşisi oluşturarak kaynak kodu yeniden kurar.
Yasal Hususlar ve Pratik Uygulamalar
PYC decompile işlemi meşru amaçlara hizmet eder ancak yasal ve etik hususlar içerir. Geçerli kullanım senaryoları: eski kod kurtarma (kaynak dosyaları kaybolduğunda geri kazanma), güvenlik analizi (kapalı kaynak Python uygulamalarında zafiyet denetimi, kötü amaçlı yazılım analizi), eğitim amaçlı (Python iç yapısını öğrenme, derleyici/decompiler teknikleri), ve uyum gereksinimleri. Kullanım alanınızı değerlendirirken lisans anlaşmalarına ve telif haklarına uymak önemlidir.
Frequently Asked Questions
- .pyc dosyası nedir ve nasıl oluşturulur?
- .pyc dosyaları, Python bir modülü içeri aktardığında oluşturulan Python bayt kodu dosyalarıdır. Python, .py kaynak dosyalarını daha hızlı yürütme için bayt koduna (.pyc) derler. .pyc dosyası magic number (Python sürümünü belirler), zaman damgası veya karma (önbellek doğrulaması için) ve serileştirilmiş kod nesnelerini (bayt kodu yönergeleri) içerir. Bu dosyalar __pycache__ dizinlerinde saklanır ve yeniden içe aktarmada derleme adımını atlayarak başlangıç süresini hızlandırır.
- Decompile edilen kod orijinal kaynakla birebir aynı olur mu?
- Hayır, decompile edilmiş kod orijinal kaynakla %100 aynı olamaz. Derleme sırasında Python; yorum satırlarını ve bazı docstring'leri, belirli bağlamlarda orijinal değişken adlarını, biçimlendirme ve boşlukları ve benzer bayt koda derlenen bazı üst seviye yapıları kaybeder. Ancak decompiler'lar aynı işlemleri gerçekleştiren işlevsel eşdeğer kodu yeniden oluşturabilir. Doğruluk; Python sürümüne, optimizasyon seviyesine ve kod karmaşıklığına bağlıdır.
- Hangi Python sürümleri decompile edilebilir?
- Modern decompiler'ların çoğu Python 2.7'den 3.11+ sürümlerine kadar destek sunar. Her Python sürümü farklı magic number ve opcode setleri kullanır. Araç, .pyc başlığından Python sürümünü algılayıp uygun decompile algoritmalarını kullanmaya çalışır. Çok yeni (3.12+) ya da çok eski (2.6'dan önce) sürümler sınırlı destek görebilir. En iyi sonuç için decompiler sürümünün hedef Python sürümüyle uyumlu olmasına dikkat edin.
- .pyc dosyalarını decompile etmek yasal mı?
- Yasal durum bağlama ve yargı yetkisine bağlıdır. Geçerli kullanım örnekleri: kendi kaybettiğiniz kaynak kodu geri kazanmak, sahip olduğunuz veya denetleme izni verilen yazılımlarda güvenlik analizi yapmak, Python iç mekanizmasını inceleyen eğitim çalışmaları ve hata ayıklama. Ancak ticari yazılımları, sahipli uygulamaları veya telif hakkı korumalı kodu izinsiz decompile etmek lisans sözleşmelerini, fikri mülkiyet yasalarını veya kullanım şartlarını ihlal edebilir. Her zaman yazılım lisanslarına uyun ve decompile işlemini yalnızca meşru, yetkili amaçlarla kullanın.
Related Documentation
- Python.org - Bayt Kodu İç Yapıları - Resmi Python bayt kodu ve derleyici iç yapıları dokümantasyonu
- PEP 552 - Deterministic pyc - PYC dosya formatı için Python Geliştirme Önerisi
- uncompyle6 - Python Decompiler - Popüler Python bayt kodu decompiler aracı ve kütüphanesi
- Python AST Modülü - Python'da Soyut Sözdizim Ağaçları dokümantasyonu
- Python Kod Nesneleri - Python kod nesnesi iç yapısını anlayın