Forum: PC Hard- und Software Visual Basic Programm reverse engineering


von Robby (Gast)


Lesenswert?

Hi

Ich hab 2003 ein kleines überschauberes Programm auf VisualBasic 
erstellt. Es ist leider nur noch die .exe vorhanden.

Gibt es eine Möglichkeit, auch wenn nur ansatzweise den SourceCode 
wiederherzustellen, damit ich nicht von 0 anfangen muss?

von Dirk K. (merciless)


Lesenswert?

Welches VisualBasic hast du verwendet?

merciless

von physicist (Gast)


Lesenswert?

Kein Ahnung ob das funktioniert aber vielleicht mal mit der kostenlosen 
Version ausprobieren?
https://www.vb-decompiler.org/

von Robby (Gast)


Lesenswert?

Dirk K. schrieb:
> Welches VisualBasic hast du verwendet?

soweit ich mich erinnern kann war es MS VB

von Dirk K. (merciless)


Lesenswert?

Ich meinte: VB6 oder VB.NET?

merciless

von Nano (Gast)


Lesenswert?

Robby schrieb:
> Gibt es eine Möglichkeit, auch wenn nur ansatzweise den SourceCode
> wiederherzustellen, damit ich nicht von 0 anfangen muss?

Probier's mal damit:
https://github.com/NationalSecurityAgency/ghidra

Assemblercode dürfte drin sein, bezüglich dem ursprünglichen VB 
Sourcecode würde ich mir keine großen Hoffnungen machen.
Wenn du also VB Code brauchst, dann schreib neu.

Solltest du VB.Net verwendet haben, könnten deine Chancen, das zu 
rekonstruieren, größer sein. Der Frage von Dirk K. schließe ich mich an.

von S. R. (svenska)


Lesenswert?

Robby schrieb:
>> Welches VisualBasic hast du verwendet?
> soweit ich mich erinnern kann war es MS VB

VisualBasic ist immer von MS.
Relevant ist: VB3, VB6 oder VB.net?

von Tim T. (tim_taylor) Benutzerseite


Lesenswert?

Oder einfach das Programm hier einstellen, dann kann man es dir direkt 
zerlegen.

von oszi40 (Gast)


Lesenswert?

Erst mal gründlich auf Deiner Festplatte/Backup gesucht?
dir /s deineQuelle

von Robby (Gast)


Lesenswert?

oszi40 schrieb:
> Erst mal gründlich auf Deiner Festplatte/Backup gesucht?

der war gut :)
hab seitdem mindestens 7 Laptops verschlissen. Der Laptop von damals 
liegt vermutlich nun auf einem Schrottplatz in Nigeria..


zur Programmierumgebung: es war VB6


DB Decompiler ist schon mal nicht schlecht. Der konnte die exe zerlegen, 
allerdings sehe ich in der Demo nur den Assemblercode. Bin grad am 
Überlegen ob mir die Pro Version die 99€ wert ist, bzw. ob ich sie in 
Zukunft nochmal einsetzen würde/könnte. Wie ich in einigen Videos sehen 
konnte, liefert diese einen ganz vernünftigen VB Code.
Wundert mich eigentlich... wird dieser aufgrund des Assemblercodes 
zusammengebastelt oder ist der VB Code in der exe hinterlegt?

von Nano (Gast)


Lesenswert?

Robby schrieb:
> oszi40 schrieb:
>> Erst mal gründlich auf Deiner Festplatte/Backup gesucht?
>
> der war gut :)
> hab seitdem mindestens 7 Laptops verschlissen. Der Laptop von damals
> liegt vermutlich nun auf einem Schrottplatz in Nigeria..

Hast du keine Backups?


> Wundert mich eigentlich... wird dieser aufgrund des Assemblercodes
> zusammengebastelt oder ist der VB Code in der exe hinterlegt?

Da ich nie in VB programmiert habe, weiß ich nicht wie das bei VB genau 
gelöst ist, aber vielleicht sind noch Debug Symbole in der exe?


Wie umfangreich ist das Programm überhaupt und was macht das Programm?

von S. R. (svenska)


Lesenswert?

Robby schrieb:
> Wundert mich eigentlich... wird dieser aufgrund des Assemblercodes
> zusammengebastelt oder ist der VB Code in der exe hinterlegt?

Bei VB3 wurde der Quelltext tatsächlich in der EXE hinterlegt (darum 
fragte ich nach!) und mit einer Runtime zusammengelinkt.

Bei VB6 ist das allerdings nicht mehr der Fall. Da es allerdings nur 
einen einzigen Compiler für VB6 gibt, kann man einen Decompiler speziell 
für dessen Codegenerator entwickeln. Insbesondere, wenn der Compiler 
nicht zu krassen Optimierungen neigt.

von c-hater (Gast)


Lesenswert?

S. R. schrieb:

> Bei VB6 ist das allerdings nicht mehr der Fall. Da es allerdings nur
> einen einzigen Compiler für VB6 gibt, kann man einen Decompiler speziell
> für dessen Codegenerator entwickeln. Insbesondere, wenn der Compiler
> nicht zu krassen Optimierungen neigt.

Tut er nicht, die typischen Pattern schreien einen förmlich an...

Aber: Es gab speziell für VB6 so'ne Art Code-Obfuscatoren, meist 
kombiniert mit einem Packer und diversen Anti-Debugger-Tricks (also bis 
auf den speziellen Obfuscator die üblichen Sachen, die ganz allgemein 
für Executables eingesetzt wurden und werden, um das RE zu erschweren). 
Wurde sowas angewandt, wird's natürlich komplizierter.

Aber da das Programm ja vom TO selber stammt, sollte er wissen, ob er 
sowas angewandt hat...

von Dirk K. (merciless)


Lesenswert?

Hier gibts noch Infos zu den Binaries,
die mit VB6 erstellt werden können:
https://qiil.io/Documentation/Native%20Code%20VS%20PCode.pdf

merciless

von S. R. (svenska)


Lesenswert?

c-hater schrieb:
> Tut er nicht, die typischen Pattern schreien einen förmlich an...

Eben. :-)

von Hans W. (Firma: Wilhelm.Consulting) (hans-)


Lesenswert?

S. R. schrieb:
> ei VB6 ist das allerdings nicht mehr der Fall. Da es allerdings nur
> einen einzigen Compiler für VB6 gibt, kann man einen Decompiler speziell
> für dessen Codegenerator entwickeln. Insbesondere, wenn der Compiler
> nicht zu krassen Optimierungen neigt.

Es hängt davon wie du das compiliert hast (native/p-code).

Wenn ich nicht ganz falsch liege, dann war der default p-code. Sprich du 
solltest das durch einen decompiler schicken können...

eine suche nach "vb6 p-code decompiler" bringt z.B. das hier zu 
vorschein:
http://progress-tools.x10.mx/p32dasm.html

73

von Alexander K. (Gast)


Lesenswert?

Glaub mir es ist 1000 x schwerer durch das Ergebnis was ein DE-Compiler 
abliefert durch zublicken als es mal eben neu zu schreiben.

Einfachstes Beispiel. Die Variablen-Namen stimmen nicht. Der De-Compiler 
setzt nämlich einfach neue, weil ein Compiler die auch nicht wirklich 
braucht in "Reintext".

Da steht dann nicht "dim Ergebnis_von_Berechnung as integer" sondern 
"dim erx3 as integer" . Und das geht nicht nur mit Namen von Variablen 
sondern auch mit Subs / Namen von Objekten etc weiter.

Und das alles auseinander zu pflügen, ist eine Aufgabe für :"jemand der 
Vater + Mutter gekillt hat"

Ich schreibe es schneller neu, als mir das auch  nur ansatzweise an zu 
tuen.
Selbst wenn es mein eigene Code wäre, würde ich kaum durchblicken. Und 
DAS soll was heißen.

Gruß

   Pucki

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.