Decompiler-VB.Net
PL
Zaloguj się
VBReFormer Gen2 Silnik napisany od nowa, pełna obsługa P-code i studio online w publicznej wersji beta. Przeczytaj zapowiedź
Dokumentacja
VBReFormer Online

Podręcznik VBReFormer Online

Podręcznik użytkownika VBReFormer Online: upuść plik wykonywalny VB6 w przeglądarce, zbadaj jego odtworzony kod, pobierz projekt do ponownego wczytania w IDE.

Zaktualizowano 20.09.202611 rozdziałów

Studio w Twojej przeglądarce. Upuszczasz plik wykonywalny Visual Basic 5 lub 6, badasz jego odtworzony kod i wychodzisz z archiwum, które IDE VB6 ponownie otwiera. Nic do instalowania, na dowolnym systemie — także macOS, Linux i wersjach Windows zbyt starych dla aplikacji desktopowej.

Uwaga o tłumaczeniu. Studio jest dostępne w jedenastu językach, ale nie po polsku. Ten podręcznik podaje nazwy kart, widoków i przycisków po angielsku, tak jak zobaczy je polski użytkownik.

1. Otwarcie studia

Na start nie trzeba niczego instalować, konfigurować ani zakładać konta: otwórz adres studia w aktualnej przeglądarce, i jesteś na miejscu.

  • Każdy system — studio zależy tylko od przeglądarki. To jedyny sposób używania VBReFormer z Maca, komputera z Linuksem albo Windows starszego niż 10.
  • Jedenaście języków — studio internetowe jest udostępniane w jedenastu językach, niemal cztery razy więcej niż aplikacja desktopowa. Wybór jest w nagłówku.
  • Motyw jasny lub ciemny — studio podąża za ustawieniem systemu, a można je wymusić (Light / Dark).

Français · English · Español · Deutsch · Italiano · Português · 日本語 · 简体中文 · Українська · हिन्दी · العربية

2. Upuszczenie binarium

  1. Zaznacz oświadczenie. Studio prosi o oświadczenie, że jesteś właścicielem programu albo masz prawo analizować jego kod. To warunek użytkowania, nie formalność.
  2. Upuść plik. Przeciągnij go do wyznaczonego obszaru albo wybierz z dysku. Akceptowane formaty: .exe, .dll, .ocx. Maksymalny rozmiar: 64 MB — limit jest widoczny na ekranie, zamiast wychodzić na jaw po nieudanym przesłaniu.
  3. Pozwól analizie się wykonać. Studio ogłasza każdy etap po nazwie, z licznikiem: Receiving the file → Analysing the binary → Decompiling → Inventorying symbols → Call graph → Control flow.

Czas zależy od rozmiaru i natury binarium. Dla orientacji: plik wykonywalny o rozmiarze 9,35 MB przechodzi od otwarcia do zapisanego projektu w kilkanaście sekund.

Po zakończeniu analizy studio mówi też, jakiej natury jest to, co znalazło: kod natywny, P-code albo natura nieokreślona.

3. Co dzieje się z Twoim plikiem

Plik jest analizowany, a następnie usuwany wraz z Twoją sesją. Nic nie jest przechowywane.

Tak jest napisane na stronie przesyłania i tak to naprawdę działa: Twoje binarium jest przetwarzane przez czas sesji roboczej i znika wraz z nią. Nie jest archiwizowane, indeksowane ani ponownie wykorzystywane.

Co to również oznacza. Twoja praca nie przetrwa sesji. Jeśli zamkniesz kartę albo sesja wygaśnie, trzeba ponownie upuścić binarium. Pobierz archiwum przed wyjściem. Restart usługi również rozłącza trwające sesje — bez ryzyka dla oryginalnego pliku, który jest na Twoim komputerze, ale stracisz trwającą eksplorację.

Jeśli poufność Twojego binarium jest kwestią umowną, wiedz, że edycja Desktop przetwarza lokalnie wszystko, co dotyczy odczytu pliku — format, bajty, deasemblację, zasoby — a do usługi wysyła tylko to, co dotyczy odtwarzania.

4. Cztery wejścia do binarium

Lewy panel oferuje cztery wejścia i odpowiadają one na cztery różne pytania.

karta pytanie, na które odpowiada
Project „Jak ten program jest zorganizowany?” — drzewo formularzy, klas, modułów i ich procedur, tak jak widział je VB6.
Symbols „Gdzie to jest zdefiniowane?” — pełny spis, z rodzajem i kontenerem każdego symbolu. Odróżnia nazwy odczytane od zsyntetyzowanych, co od razu mówi, na czym możesz polegać.
Search „Gdzie pojawia się ten tekst?” — w odtworzonym kodzie i w sekcjach projektanta.
Resources „Co jest poza kodem?” — ikony, kursory, bitmapy, tablice łańcuchów, informacje o wersji, z typem, rozmiarem i zawartością. Udostępniane bez licencji: zasób się odczytuje, nie odtwarza.

W drzewie każda składowa nosi swoją widoczność tak, jak deklaruje ją binarium — (Public), (Private), (Friend). Składowa, której widoczności nie udało się odczytać, nie ma żadnego oznaczenia: nie piszemy tego, czego nie wiemy.

Zmiana nazwy

Studio internetowe pozwala zmieniać nazwy symboli, a zmiana jest globalna: miejsca wywołania w innych modułach podążają za nią. To centralny gest pracy nad binarium — dekompilator oddaje Ci logikę, Ty oddajesz mu nazwy.

5. Widoki

Siedem widoków, a studio samo mówi pod każdym z nich, co pokazuje i czy wymaga licencji.

widok co pokazuje licencja
Source odtworzony kod VB6 podgląd bez licencji
IR to, co dekompilator widzi, zanim odbuduje przepływ podgląd bez licencji
Assembly kod maszynowy x86, rozwiązane symbole udostępniany w całości
P-code opkody maszyny wirtualnej VB6 udostępniany w całości
Designer sekcja projektanta formularza udostępniany w całości
Project odtworzony .vbp udostępniany w całości
Structure struktury formatu takie, jak zostały odczytane udostępniany w całości

Linia podziału. To, co da się odczytać z Twojego pliku, jest bezpłatne; to, co jest odtwarzane, jest sprzedawane. Deasemblacja, struktura, projektant i .vbp pochodzą z tabel obecnych w Twoim pliku wykonywalnym. Źródło VB6 natomiast nie istnieje nigdzie — trzeba je odtworzyć, i ta praca jest produktem.

Pod kodem studio wyświetla też to, co dekompilator sygnalizuje dla bieżącej procedury: diagnostykę, czyli to, czego nie udało się zrobić i dlaczego. To odruch, jaki warto mieć, gdy tylko wynik zaskakuje.

6. Co kompilacja zachowuje, a co wyrzuca

Ten rozdział wyjaśnia, dlaczego Twoje formularze wracają bardzo czytelne, a moduły .bas z nazwami technicznymi. Reguła jest prosta:

To, czego Visual Basic potrzebuje w czasie wykonania, zapisał w pliku: VBReFormer to odnajduje. To, czego nie potrzebował już po kompilacji, wyrzucił — i nikt nie może tego odzyskać.

Co przetrwa: nazwy formularzy, klas i modułów · nazwy kontrolek · procedury obsługi zdarzeń · publiczne składowe klas · właściwości interfejsu · wywołania runtime VB (635 funkcji) · API Win32 (15 680 sygnatur) · struktura kodu · łańcuchy znaków.

Czego nie ma w pliku: komentarze · nazwy zmiennych lokalnych · nazwy parametrów · stałe nazwane, zastąpione swoją wartością · nazwy procedur w modułach .bas · pierwotne wcięcia.

Sprawdzalny przykład

Poniższy fragment pochodzi z SETUP1.EXE, kreatora instalacji dostarczanego z Visual Basic 6 — którego kod źródłowy rozpowszechnia Microsoft. Porównanie może więc powtórzyć każdy, kto ma VB6.

Oryginalne źródło, 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

Wynik VBReFormer:

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

Identyczna logika, linia po linii. Right, Trim, Len, RTrim$ mają nazwy; przekazanie ByRef jest wywnioskowane. Natomiast nazwa procedury i nazwa parametru są utracone, a stałe pojawiają się jako swoja wartość — zastąpił je kompilator, nie VBReFormer.

Znaczniki

VBReFormer nigdy nie zgaduje: wartość, której nie da się ustalić, jest oznaczana zamiast wymyślana.

znacznik znaczenie co zrobić
proc_42C506 procedura oznaczona swoim adresem zmienić jej nazwę — nazwa się propaguje
var_18, arg_8 zmienna lokalna lub parametr odczytać jej użycie, potem zmienić nazwę
? wartość nieustalona zajrzeć do widoku Assembly w tym samym miejscu

Plik zawierający ? zostanie odrzucony przez IDE VB6. Znacznik jest po to, abyś zdecydował, a nie po to, by kompilować go ponownie bez zmian. Wartość prawdopodobna i fałszywa to najgorszy wynik, jaki dekompilator może wyprodukować.

7. Grafy

Dwa grafy, a nie opowiadają tej samej historii.

  • Calls — kto wywołuje co: architektura programu. Filtry Callers, Callees albo Both, oraz opcja ukrycia węzłów izolowanych.
  • Flow — którędy biegnie wykonanie: bloki, wejście, nagłówki pętli, powroty pętli i bloki oznaczone UNREACHABLE.

Pięć sposobów czytania bloku

Wybierz blok grafu i zdecyduj, co chcesz w nim zobaczyć: Shape, IR, VB6, Assembly albo P-code. To ten sam fragment programu na pięciu poziomach czytania.

Uczciwość renderowania. Studio podaje, ile bloków jest zakotwiczonych na liniach listingu, a ile jest bez udowodnionego adresu — ich instrukcje trafiają wtedy do poprzedniego przedziału. Wiesz więc, która część podziału jest pewna.

Grafy wymagają licencji: kto wywołuje co i którędy biegnie wykonanie, to architektura programu. Deasemblacja i struktura pozostają otwarte bez niej.

8. Podgląd a licencja

Bez licencji widok Source nie jest Ci odmawiany: wyświetla się częściowo zamaskowany. Widzisz strukturę, odnalezione nazwy i rzeczywistą jakość odtworzenia — na własnym binarium — zanim cokolwiek zapłacisz.

To celowy wybór: odwiedzający, który nic nie widzi, nie może ocenić. A jeśli subskrypcja wygaśnie, widzisz, co byś odzyskał, zamiast zamkniętych drzwi.

Jedno stanowisko naraz

Licencja VBReFormer otwiera jedno stanowisko naraz — a przeglądarka liczy się jako stanowisko. Jeśli Twoja pracuje gdzie indziej, studio proponuje przeniesienie jej tutaj z Twojego konta albo dodanie stanowiska. To łagodna odmowa: zapłaciłeś, niczego Ci nie brakuje.

9. Pobranie źródeł

Panel dostawy tworzy archiwum .zip zawierające .vbp i jego pliki — .bas, .cls, .frm — zapisane w ANSI, tak jak oczekuje IDE. Panel podaje liczbę plików i rozmiar przed pobraniem.

Przeczytaj notatki przed otwarciem projektu

Studio wyświetla „What could not be reconstructed” (czego nie udało się odtworzyć), z powodem dla każdej pozycji. Niektóre informacje — odwołania zewnętrzne, opcje kompilacji, tryb uruchomienia — nie znajdują się w żadnej strukturze binarium: nie zostały usunięte, nigdy ich tam nie było. Są więc sygnalizowane zamiast wymyślane.

W IDE, jeśli brakuje odwołania, dodaj je przez Projekt ▸ Odwołania. Ewentualne znaczniki ? trzeba obsłużyć ręcznie.

Panel proponuje następnie analizę innego binarium (Analyse another binary): sesja zaczyna się od zera, a poprzedni plik jest usuwany.

10. Online czy Desktop?

Obie edycje dzielą ten sam silnik i zwracają ten sam kod. Nie służą jednak temu samemu zastosowaniu.

Online Desktop
Instalacja brak MSI, Windows 10+
Systemy wszystkie Windows 10 i 11
Języki interfejsu 11 3
Drzewo, symbole, wyszukiwanie, zmiana nazw
Siedem widoków
Grafy wywołań i przepływu
Eksport projektu ✔ (zip) ✔ (folder)
Adnotowany widok szesnastkowy
Zasoby: spis i zawartość
Zasoby: wyodrębnianie do pliku
Narysowany projektant, eksport obrazu (sekcja tylko jako tekst)
Łatki binarne
Odwołania krzyżowe
Object Browser, API Browser
Zakładki, opcje renderowania
Praca przetrwa sesję
Rozliczanie kredyty subskrypcja

W skrócie — Online, by otworzyć binarium, zrozumieć, co robi, i wyjść ze źródłami. Desktop, by pracować nad binarium długo: bajty, zasoby, odwołania krzyżowe, łatki, i praca, która nie znika po zamknięciu karty.

11. Najczęstsze pytania

Czy moje binarium jest przechowywane? Nie. Jest analizowane, a potem usuwane wraz z Twoją sesją. Zob. rozdział 3.

Mój plik ma ponad 64 MB. To limit studia, ogłaszany przed przesłaniem. Dla większego binarium edycja Desktop nie ma tego ograniczenia przesyłania.

Gdzie są zasoby binarium? Na karcie Resources, po lewej — bez licencji. Widzisz tam każdy wpis z typem i rozmiarem oraz jego zawartość po otwarciu: obraz jest rysowany, tekst wyświetlany, a reszta pokazywana jako bajty zamiast ukrywana. Wyodrębnianie do pliku natomiast jest właściwe edycji Desktop, podobnie jak widok szesnastkowy.

Dlaczego kod urywa się w środku procedury? To podgląd: bez licencji bezpłatna edycja pokazuje strukturę, nazwy i pełną deasemblację, ale odtworzone ciało wymaga licencji.

Zamknąłem kartę i wszystko straciłem. Praca nie przetrwa sesji. Pobierz archiwum przed wyjściem; binarium nadal jest na Twoim komputerze.

Czy wyeksportowany kod kompiluje się ponownie bez zmian? Często: na stanowisku testowym ze 149 projektami 121 kompiluje się ponownie bez poprawek. Pozostałe wymagają dodania odwołania albo obsłużenia kilku znaczników.

Mój plik wykonywalny jest spakowany (packer). Trzeba go najpierw rozpakować, inaczej struktury VB6 nie są widoczne w pliku.

Czy to legalne? Zależy od Twojej jurysdykcji i Twoich praw do binarium — to sens oświadczenia zaznaczanego przy przesyłaniu. Przewidziane zastosowanie to odzyskanie własnego kodu albo kodu, do którego masz prawa lub upoważnienie.