Decompiler-VB.Net
TR
Oturum aç
VBReFormer Gen2 Sıfırdan yeniden yazılmış motor, tam P-Code desteği ve genel betada çevrimiçi stüdyo. Duyuruyu okuyun →
Belgeler
VBReFormer Desktop

VBReFormer Desktop Kılavuzu

VBReFormer Desktop kullanıcı kılavuzu: kurulum, lisans etkinleştirme, yedi görünüm, ikili dosya analizi, IDE’de açılabilen VB6 projesi dışa aktarma.

20.09.2026 tarihinde güncellendi14 bölüm

Windows makinenize kurulan uygulama. Visual Basic 5 ve 6 çalıştırılabilir dosyalarınızı açar, kaynak kodlarını yeniden oluşturur ve size VB6 IDE’nin yeniden açabileceği bir proje verir – üstelik eksiksiz bir çalışma tezgâhıyla: baytlar, kaynaklar, tasarımcı, grafikler, çapraz başvurular ve ikili yamalar.

Çeviriye ilişkin not. Masaüstü uygulamasının arayüzü İngilizce, Fransızca ve İspanyolca olarak sunulur; Türkçe sürümü yoktur. Bu kılavuzda menü ve görünüm adları, uygulamada göründükleri biçimiyle İngilizce olarak alıntılanır ve ilk geçtikleri yerde parantez içinde Türkçe karşılıkları verilir.

1. Kurulum

VBReFormer Desktop, her arayüz dili için bir tane olmak üzere MSI yükleyici olarak dağıtılır. Paket kendi içinde bütündür: ihtiyaç duyduğu her şeyi barındırır; önceden kurulması gereken bir framework yoktur.

gereksinim
Sistem Windows 10 sürüm 1607 veya üstü ya da Windows 11
Mimari x64
Framework yok – paket kendi içinde bütündür
Bağlantı tersine derleme ve lisans doğrulaması için gereklidir
Arayüz dilleri İngilizce, Fransızca, İspanyolca

Windows XP, Vista, 7 ve 8 desteklenmez. Uygulama, en az Windows 10 gerektiren bir platforma dayanır. Makineniz daha eskiyse VBReFormer Online her tarayıcıda, her sistemde çalışır – bu durumda önerilen yol budur.

Motorun çalıştığı yer

Uygulama yereldir; ancak kodun yeniden oluşturulması sunucularımızda gerçekleşir. Sürümün adının anlamı budur – Desktop + Cloud. Dosyadan okunan her şey – biçim, baytlar, tersine çevirme (disassembly), kaynaklar – makinenizde hesaplanır; yeniden oluşturulan her şey hizmetten geçer.

Help ▸ About (Yardım ▸ Hakkında) kutusu size her an bağlı motorun sürümünü, sözleşmenin sürümünü ve capabilities served (sunulan yetenekler) listesini bildirir – bir özellik görünmediğinde yararlıdır: o listede yoksa, onu reddeden arayüz değildir.

2. Lisansınızı etkinleştirin

Lisans olmadan da uygulama açılır ve çalışır: bir ikili dosyayı keşfedebilir; tersine çevrilmiş kodun tamamını, baytları, kaynakları ve tasarımcıyı okuyabilirsiniz. Lisans ise şunların kilidini açar: VB6 kodunun yeniden oluşturulması ve projenin dışa aktarılması.

Aynı anda tek koltuk

Bir VBReFormer lisansı aynı anda tek bir iş istasyonu açar. Lisansı zaten başka bir yerde kullanıyorsanız uygulama bunu açıkça söyler ve iki çıkış yolu sunar: lisansı hesabınızdan bu makineye aktarmak ya da bir koltuk eklemek.

Bu yumuşak bir rettir: ödemenizi yaptınız, eksik bir şey yok. Mesaj, teknik bir hata döndürmek yerine bunu bu şekilde söyler.

VBReFormer Online’da açık bir tarayıcı da bir koltuk sayılır: web stüdyosu ile masaüstü uygulaması aynı lisansı tüketir.

3. Pencere

  1. Bir ikili dosya açın. File ▸ Open a VB6 binary (Dosya ▸ Bir VB6 ikili dosyası aç, Ctrl+O). Kabul edilen biçimler .exe, .dll, .ocx ve .scr’dir. Durum çubuğu süren analizi, ardından dosya adını ve derleme biçimini – yerel kod ya da P-code – gösterir.
  2. PROJECT (Proje) panelinde gezinin. Solda ikili dosya, VB6’nın gördüğü biçimde sunulur: formlar, sınıflar, modüller ve bunların yordamları. Ağaç talep üzerine dolar – bir düğümü genişletmek onun alt öğelerini ister; önceden hiçbir şey hesaplanmaz, bu da büyük bir çalıştırılabilir dosyada bile açılışı hızlı tutar.
  3. Bir yordam seçin. O düğümün görünümleri sağda belirir. Bir düğüm için sunulan görünüm yoksa, boş bir panel yerine nedeni ekrana yazılır.

Alt paneller

sekme ne işe yarar
Output (Çıktı) işlemlerin günlüğü. Arayüz dilini değiştirseniz bile her satırın yazıldığı dili korur – günlük bir kayıttır, bir gösterim değil.
Diagnostics (Tanılama) motorun yapmayı reddettiği şey ve nedeni. Bir sonuç sizi şaşırttığı anda edinmeniz gereken refleks.
Analyser (Çözümleyici) çapraz başvurular: bir yordamı çağıranlar, bir sembolün geçtiği yerler. Sonuç tıklanabilir.

Üye görünürlüğü

Ağaçtaki her üye, görünürlüğünü ikili dosyanın bildirdiği biçimde taşır – (Public), (Private), (Friend). Bunlar VB6 anahtar sözcükleridir: çevrilmezler. Görünürlüğü okunamayan bir üye hiçbir işaret taşımaz: bilmediğimizi yazmayız.

4. Yedi görünüm

Görünümler üç aileye ayrılır ve bu ayrım size okuduğunuzun nereden geldiğini söyler. Anlaşılması gereken en yararlı şey budur.

“Code” ailesi – analizle yeniden oluşturulur

görünüm ne gösterir ne zaman bakmalı
Visual Basic 6 yeniden oluşturulmuş, yapılandırılmış kaynak varsayılan olarak – aradığınız şey budur
IR ara gösterim motorun ne anladığını görmek için
Disassembly (Tersine çevirme) x86 makine komutları işlemcinin ne yürüttüğünü görmek için
P-code VB6 sanal makinesinin opcode’ları yalnızca P-code ikili dosyaları

Bu listede aşağı inmek makineye doğru gitmektir. Bir satırdan kuşku duyduğunuzda: Visual Basic 6 niyeti söyler, Disassembly olguyu söyler.

“Project files” ailesi – çıkarım değil, okuma

Designer (.frm) (Tasarımcı), Project (.vbp) (Proje) ve Structure (Yapı). Buradaki hiçbir şey kod yeniden oluşturmadan geçmez: her şey ikili dosyadaki tablolardan okunmuştur ve okunamayan şey doldurulmak yerine açıkça yazılır. Ürünün en güvenilir ailesidir ve hiçbir çıkarıma bağlı olmayan tek ailedir.

“Resources” ailesi

Bkz. bölüm 9.

5. Derlemenin sakladıkları ve attıkları

Bu bölüm, kodunuzun bazı bölümlerinin neredeyse olduğu gibi, bazılarınınsa teknik adlarla geri gelmesinin nedenini açıklar. Kural basittir:

Visual Basic’in çalışma zamanında ihtiyaç duyduğu şeyi dosyaya yazmıştır: VBReFormer onu yeniden bulur. Derlemeden sonra artık ihtiyaç duymadığı şeyi atmıştır – ve onu hiç kimse geri getiremez.

Geriye kalanlar: form, sınıf ve modül adları · denetim adları · olay işleyicileri · sınıfların public üyeleri · her arayüz özelliği · VB çalışma zamanına yapılan çağrılar (635 işlev) · Win32 API (15.680 imza) · kodun yapısı · dizeler.

Dosyada olmayanlar: yorumlar · yerel değişken adları · parametre adları · değeriyle değiştirilen adlandırılmış sabitler · .bas modüllerindeki yordam adları · özgün girinti · Option Explicit ve Enum’lar.

Pratik sonuç. Formlarınız çok okunaklı biçimde geri gelir. .bas modülleriniz doğru, ama teknik adlarla (proc_42C506) geri gelir. Rename (Yeniden adlandır) işlevi (F2) bunun için vardır ve yeni adı projedeki her çağrı noktasına yayar – bkz. bölüm 7.

Doğrulanabilir iki örnek

Aşağıdaki alıntılar, Visual Basic 6 ile birlikte gelen kurulum sihirbazı SETUP1.EXE’den alınmıştır. Microsoft kaynak kodunu aynı klasörde dağıtır – dolayısıyla karşılaştırmayı kendiniz yineleyebilirsiniz.

Bir .bas modülü yordamı

Özgün kaynak, COMMON.BAS:

Sub AddDirSep(strPathName As String)
    If Right(Trim(strPathName), Len(gstrSEP_URLDIR)) <> gstrSEP_URLDIR And _
       Right(Trim(strPathName), Len(gstrSEP_DIR)) <> gstrSEP_DIR Then
        strPathName = RTrim$(strPathName) & gstrSEP_DIR
    End If
End Sub

VBReFormer’ın çıktısı:

Public Sub proc_42C506(ByRef arg_8 As String)
    If ((Right(Trim(arg_8), Len("/")) <> "/") And (Right(Trim(arg_8), Len("\")) <> "\")) <> 0 Then
        arg_8 = (RTrim$(arg_8) & "\")
    End If
End Sub

Satır satır aynı mantık. Right, Trim, Len, RTrim$ adlandırılmıştır; ByRef geçişi doğru çıkarılmıştır. Buna karşılık yordamın adı ile parametrenin adı kaybolmuştur ve sabitler değerleri olarak görünür – onları değiştiren VBReFormer değil, derleyicidir.

Bir olay işleyicisi

Özgün kaynak, BEGIN.FRM:

Private Sub cmdExit_Click()
    ExitSetup Me, gintRET_EXIT
End Sub

VBReFormer’ın çıktısı:

Private Sub cmdExit_Click()
    Set var_18 = Me
    basSetup1.proc_41CE2D var_18, var_1C
End Sub

Formun adı, düğmenin adı ve işleyicinin adı olduğu gibidir; Me tanınmıştır; çağrılan modül adlandırılmıştır, bu da size nereye gideceğinizi söyler. Yalnızca bir .bas içinde yaşayan çağrılan yordam adres adını korur.

İşaretler

VBReFormer asla tahmin etmez. Belirlenemeyen bir değer uydurulmak yerine işaretlenir – makul görünen ama yanlış bir değer, bir decompiler’ın üretebileceği en kötü sonuçtur.

işaret anlamı ne yapmalı
proc_42C506 adresiyle belirtilen yordam yeniden adlandırın (F2)
var_18, arg_8 yerel değişken ya da parametre kullanımını okuyun, sonra yeniden adlandırın
vtbl_3C çözümlenmemiş sanal tablo çağrısı Object Browser çoğu zaman hangi kitaplık olduğunu söyler
? belirlenemeyen değer aynı yerde Disassembly görünümüne bakın

? içeren bir dosya VB6 IDE tarafından reddedilir. İşaret, olduğu gibi yeniden derlenmek için değil, sizin karar vermeniz için oradadır.

6. Analiz araçları

Masaüstü sürümünün en çok farklılaştığı yer burasıdır: web stüdyosu okuma, tersine derleme ve dışa aktarmaya odaklanırken masaüstü sürümü eksiksiz bir çalışma tezgâhı sunar.

araç kısayol size ne verir
Analyse references (Başvuruları çözümle) Shift+F12 bir yordamı çağıranlar, bir sembolün geçtiği yerler – tıklanabilir sonuç ve kapsama oranı sayıya dökülür: analizin görmediği şey susturulmaz, sayılır
Symbol list (Sembol listesi) Ctrl+Shift+S türe ve kapsama göre filtrelenebilen eksiksiz envanter – okunan adları sentezlenen adlardan ayırır
Call graph (Çağrı grafiği) Ctrl+Shift+A kim neyi çağırıyor, üç ölçekte, çağıran / çağrılan filtreleriyle
Control-flow graph (Denetim akışı grafiği) Ctrl+Shift+G bir yordamın biçimi: bloklar, döngüler, geri kenarlar, erişilemeyen bloklar
Object Browser (Nesne tarayıcısı) Ctrl+Shift+B yanıt ikili dosyanın dışında olduğunda “bu nerede tanımlı?”
API Browser (API tarayıcısı) Ctrl+Shift+P Win32 bildirimlerinin prototipleri, takma adları ve notları
Cited libraries (Başvurulan kitaplıklar) Ctrl+K ikili dosyanın bağımlı olduğu şeyler
Find VB programs (VB programlarını bul) Ctrl+L bir klasördeki VB çalıştırılabilir dosyalarını bulur
Find (Bul) Ctrl+Shift+F sunulan görünümler genelinde metin araması
Bookmarks (Yer işaretleri) Ctrl+F2 yerleri işaretleyin, onlara geri dönün (F8 / Shift+F8)
Back / forward navigation (Geri / ileri gezinme) Alt+← Alt+→ bir tarayıcıdaki gibi

Kapsama oranı neden sayıya dökülür. Yerel çağrı grafiği doğrudan çağrıları görür; sanal tablolar üzerinden yapılan çağrıları ve işlev işaretçilerini görmez. Kısmi bir listeyi eksiksizmiş gibi sunmak yerine VBReFormer atladığı şeyi sayarak gösterir. Böylece sonuca ne ölçüde güvenebileceğinizi bilirsiniz.

7. Yeniden adlandırma

Bir ikili dosya üzerinde çalışmanın temel hareketidir: decompiler size mantığı geri verir, siz ona adları geri verirsiniz. Bir sembol üzerinde F2 ya da sembol listesinden.

Kutu, decompiler’ların genellikle gizlediği üç şeyi gösterir:

  • geçerli adın kökeni – sizin verdiğiniz, decompiler tarafından çıkarılan ya da yeniden oluşturulan;
  • decompiler’ın önerileri, her biri önceliği ve geldiği kaynakla birlikte;
  • özgün ad, ona her zaman geri dönebilirsiniz.

Yeniden adlandırma geneldir. Bir yordamı bir kez yeniden adlandırın; diğer modüllerdeki çağrı noktaları da onu izler – henüz açmadıklarınız dahil.

Reddedilen bir yeniden adlandırma her zaman nedeniyle birlikte reddedilir. Sık görülen iki durum: motor bu belge için yeniden adlandırma yeteneğini bildirmiyordur ya da geçerli görünüm yalnızca sözcüksel parçalar taşıyordur – metni renklendirmeye yeter, bir varlığı belirtmeye yetmez. Her iki durumda da mesaj, hiçbir şey yapmamak yerine bunu söyler.

8. Baytlar ve ikili yamalar

Navigate ▸ Show bytes (Gezin ▸ Baytları göster, Ctrl+Shift+H) açıklamalı onaltılık görünümü açar: yalnızca baytları göstermez, her alanın neyi temsil ettiğini söyler. Go to address (Adrese git, Ctrl+G) sizi doğrudan oraya götürür.

Çalıştırılabilir dosyayı değiştirme

“Raw” (ham) kipi bayt yazmanıza ve değiştirilmiş bir çalıştırılabilir dosya üretmenize olanak tanır. Dört retle çerçevelenmiştir ve her biri bir şeyi korur:

ret neden
Analiz edilen dosya asla hedef değildir motor onu asla yazmak için açmaz; arayüz bu güvenceyi bozmaz
Var olan bir dosyanın üzerine yazmak onaya bağlıdır “bu geri alınamaz”
Authenticode imzası kaldırılır onayınız önceden istenir; kendi sertifikanızla yeniden imzalayabilirsiniz
Reddedilen bir yama hiçbir şey yazmaz yarım yazılmış dosya yoktur

Web stüdyosu ikili yamaları ve onaltılık görünümü sunmaz: bunlar masaüstü sürümüne özgü iki işlevdir.

9. Kaynaklar ve tasarımcı

İkili dosyanın kaynakları

Simgeler, imleçler, bit eşlemler, dize tabloları, sürüm bilgileri: bir .res dosyasının taşıyacağı her şey. Her giriş türünü, boyutunu ve onunla ne yapılabileceğini gösterir; çıkarma giriş giriş ya da toplu olarak yapılabilir.

Ürünün nasıl çizeceğini bilmediği bir kaynak listede kalır ve bayt olarak gösterilir: asla gizlenmez. Dizinin girişleri izlenemediyse bir uyarı bunu söyler – böylece listenin, ikili dosyanın taşıdığından daha kısa olduğunu bilirsiniz.

Form tasarımcısı

Formun yüzeyi, ikili dosyadan okunan özelliklerden, doğru çizim sırasıyla, VB6’nın göstereceği biçimde çizilir. Formun görüntüsü dışa aktarılabilir (Ctrl+I).

Özellikler salt okunurdur: VBReFormer bir formun yüzeyini okumayı bilir, onu derlenmiş çalıştırılabilir dosyaya yeniden yazmayı henüz bilmez. Bkz. bölüm 13.

10. Projeyi dışa aktarın

  1. Önce Diagnostics panelini denetleyin. Yapılamayan şeyleri söyler. Dışa aktarmadan önce okumak, sonradan bir öğenin neden eksik olduğunu aramaktan sizi kurtarır.
  2. File ▸ Export the VB6 project (Dosya ▸ VB6 projesini dışa aktar). Boş bir hedef klasör seçin.
  3. Dışa aktarma notlarını okuyun. VBReFormer kurtaramadığı şeyi ve nedenini yazar. Bazı bilgiler – dış başvurular, derleme seçenekleri, başlangıç kipi – ikili dosyanın hiçbir yapısında yoktur: silinmemiştir, hiç orada olmamıştır. Uydurulmak yerine işaretlenir.
  4. .vbp dosyasını Visual Basic 6’da açın. IDE’nin gerektirdiği başlıklar (VERSION, Attribute VB_Name) yazılır. Bir başvuru eksikse Project ▸ References (Proje ▸ Başvurular) üzerinden ekleyin.

Sizi koruyan iki yazma reddi. VB6 dosyaları ANSI 1252 ile yazılır. VBReFormer, bu karakter kümesi makinede yoksa – başka bir kümeyle yazmak sessizce yanlış bir dosya üretirdi – ya da kodunuzdaki bir karakter bu kümede yoksa yazmayı reddeder; ikinci durumda hangi karakter olduğunu ve kod noktasını söyler.

11. Seçenekler

ayar ne yapar
Indentation width (Girinti genişliği) yalnızca yeniden oluşturulan koda uygulanır: tersine çevrilmiş kod, IR, P-code, tasarımcı bloğu ve .vbp bu düzenleyici tarafından biçimlendirilmez.
Code page (designer) (Kod sayfası, tasarımcı) tasarımcının başlıklarının ve metinlerinin okunduğu sayfa. Bir VB6 ikili dosyası kendi kod sayfasını hiçbir yerde bildirmez – 236 ikili dosya üzerinde ölçülmüştür. Bir formun etiketleri tutarsız karakterler olarak görünüyorsa değiştirilecek ayar budur.
Group under With…End With (With…End With altında grupla) varsayılan olarak kapalı. Çıktı tam nitelenmiştir (Frame1.Caption), çünkü derleyici With bloklarını çözer ve onları yeniden kurmak bir tahmin olurdu. Harfiyen aktarım yerine okunabilirliği tercih ediyorsanız açın.
Syntax colouring (Sözdizimi renklendirme) bir rol, bir renk – roller motordan gelir; motor her parçanın ne olduğunu söyler. #RRGGBB gösterimi; geçersiz bir palet yarım uygulanmaz.
Interface language (Arayüz dili) İngilizce, Fransızca, İspanyolca – değişiklik anında etkilidir.

Görüntüleme ayarları her görüntüleme isteğiyle birlikte gönderilir; asla oturum durumu olarak ayarlanmaz. Dolayısıyla girintiyi değiştirmek hiçbir şeyi yeniden analiz etmez.

12. Kısayollar

kısayol eylem
Ctrl+O Bir VB6 ikili dosyası aç
F2 İmlecin altındaki sembolü yeniden adlandır
Shift+F12 Başvuruları çözümle
Ctrl+Shift+F Projede bul
Ctrl+G Adrese git
Ctrl+Shift+H Baytları göster
Ctrl+Shift+S Sembol listesi
Ctrl+Shift+B Object Browser
Ctrl+Shift+P API Browser
Ctrl+Shift+G Denetim akışı grafiği
Ctrl+Shift+A Çağrı grafiği
Ctrl+K Başvurulan kitaplıklar
Ctrl+L Bir klasördeki VB programları
Ctrl+F2 Yer işaretini aç/kapat
F8 / Shift+F8 Sonraki / önceki yer işareti
Ctrl+Shift+F2 Yer işareti listesi
Alt+← / Alt+→ Geri / ileri gezinme
Ctrl+I Form görüntüsünü kaydet

13. Bilinen sınırlar

Derlenmiş bir çalıştırılabilir dosyanın arayüzünü değiştirme

VBReFormer bir formun yüzeyini ve tüm özelliklerini okur – onları çalıştırılabilir dosyaya yeniden yazmayı henüz bilmez. Gömülü bir kaynağı değiştirmek ve yeniden derlemeden gizli bir özellik eklemek kullanılamaz. İkili yamalar – bir adrese bayt yazmak – kullanılabilir (bölüm 8).

UserControl .ctx kaynakları

Dışa aktarmada hiçbir .ctx dosyası yazılmaz. Projeniz kalıcı kaynaklara sahip UserControl’ler içeriyorsa, o bölümün yeniden kurulması gerekir.

10’dan önceki Windows

VBReFormer Online kullanın: sistem ne olursa olsun bir tarayıcı yeterlidir.

Hiçbir decompiler’ın aşamadığı şey

Yorumlar, yerel değişken adları, adlandırılmış sabitler: bunlar dosyada değildir. Bkz. bölüm 5.

14. Sık sorulan sorular

Bir menü işlevi yanıt vermiyor. Neden? Help ▸ About’u açın ve capabilities served listesine bakın. İşlev orada yoksa, reddeden arayüz değildir: motor bu belge için onu sunmuyordur. Uygulamanın mesajları da bunu açıkça söyler.

Dışa aktarılan kod olduğu gibi yeniden derlenir mi? Çoğu zaman: 149 projelik bir test kümesinde 121’i dokunulmadan yeniden derlenir. Diğerleri bir başvurunun eklenmesini ya da birkaç işaretin ele alınmasını gerektirir.

Formumun etiketleri okunmuyor. Bu kod sayfasıdır. Bir VB6 ikili dosyası tasarımcı metinlerinin sayfasını hiçbir yerde bildirmez – Seçenekler’de ayarlayın (bölüm 11).

Formlarım neden modüllerimden daha okunaklı? Çünkü VB6 çalışmak için denetimlerin ve olayların adlarını saklar, oysa modül yordamlarını düz adreslere çözer. Bkz. bölüm 5.

Çalıştırılabilir dosyam paketlenmiş. Bu bir sorun mu? Evet: önce paketinin açılması gerekir, aksi halde VB6 yapıları dosyada görünmez.

Bir .ocx ya da ActiveX .dll tersine derlenebilir mi? Evet; COM bunların adlandırılmasını gerektirdiğinden public üyelerin envanteri orada genellikle daha zengindir.

İkili dosyam bir yere gönderiliyor mu? Biçimin, baytların, tersine çevrilmiş kodun ve kaynakların okunması makinenizde işlenir. Kodun yeniden oluşturulması sunucularımızda gerçekleşir – Desktop + Cloud sürümünün anlamı budur.

Yasal mı? Bu, bulunduğunuz yargı alanına ve ikili dosya üzerindeki haklarınıza bağlıdır. Amaçlanan kullanım kendi kodunuzu ya da haklarını veya iznini elinizde bulundurduğunuz kodu kurtarmaktır.