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


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Robby (Gast)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht lesenswert
Welches VisualBasic hast du verwendet?

merciless

von physicist (Gast)


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

von Robby (Gast)


Bewertung
-2 lesenswert
nicht lesenswert
Dirk K. schrieb:
> Welches VisualBasic hast du verwendet?

soweit ich mich erinnern kann war es MS VB

von Dirk K. (merciless)


Bewertung
0 lesenswert
nicht lesenswert
Ich meinte: VB6 oder VB.NET?

merciless

von Nano (Gast)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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


Bewertung
0 lesenswert
nicht lesenswert
Oder einfach das Programm hier einstellen, dann kann man es dir direkt 
zerlegen.

von oszi40 (Gast)


Bewertung
-2 lesenswert
nicht lesenswert
Erst mal gründlich auf Deiner Festplatte/Backup gesucht?
dir /s deineQuelle

von Robby (Gast)


Bewertung
1 lesenswert
nicht 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)


Bewertung
-2 lesenswert
nicht 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)


Bewertung
1 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


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

Eben. :-)

von Hans W. (Firma: Dipl.-Ing. Johann Maximilian W) (hans-)


Bewertung
0 lesenswert
nicht 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. (pucki)


Bewertung
-3 lesenswert
nicht 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

: Bearbeitet durch User

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.