Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

exe in bas zurückwandeln
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Leader4



Anmeldungsdatum: 20.01.2005
Beiträge: 99
Wohnort: Leipzig

BeitragVerfasst am: 24.08.2005, 15:56    Titel: exe in bas zurückwandeln Antworten mit Zitat

Hi, ich glaub ich hab ein großes Problem. mit dem Kopf durch die Mauer wollen

Ich hab eine bas-Datei in FreeBasic aus Versehen überschrieben die somit jetzt weg ist (0 byte). Das kam, weil ich statt auf Open auf Save As gegangen bin, die Datei wurde demnach nicht geladen, sondern eine leere Datei wurde unter dem alten Namen gespeichert. Ich habe aber zum Glück noch die kompilierte Exe-Datei zu der bas-Datei, so dass ich die bas-Datei widerherstellen kann, wenn es mir möglich ist, die exe-Datei "zurückzukompilieren". Weiß jemand, ob so was überhaupt geht und wenn ja, wie es geht bzw. wo man eventuell ein Programm für so was bekommt? Das ist nämlich wirklich die einzige Möglichkeit die Datei widerherzustellen, denn sie ist ja nicht mal nur gelöscht, sie wurde ja dummerweise überschrieben.

Thx im Voraus.


weinen
_________________
Ein richtiger Programmierer muss so richtig faul sein und sich den ganzen Tag mit der Frage beschäftigen, wie man mal wieder etwas einfacher machen kann.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Mecki
Igel


Anmeldungsdatum: 10.09.2004
Beiträge: 985
Wohnort: Niederbayern

BeitragVerfasst am: 24.08.2005, 16:25    Titel: Antworten mit Zitat

Hallo Nachnamensvetter lächeln
Nein, also Disassembling etc ist nicht wirklich sinnvoll.
Ich würde an deiner Stelle ein Dateiwiederherstellungsprogramm verwenden und schaun, ob man noch was von der Datei noch da ist... verwundert
_________________
» Yodl.de: So sucht man gestern. verwundert
» Geld verdienen im Netz + ICQ.
» Firefox!
» 100€ zu gewinnen
» FreeBASIC.de


Zuletzt bearbeitet von Mecki am 24.08.2005, 16:26, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name Yahoo Messenger MSN Messenger
Michael712
aka anfänger, programmierer


Anmeldungsdatum: 26.03.2005
Beiträge: 1593

BeitragVerfasst am: 24.08.2005, 16:26    Titel: Antworten mit Zitat

Hallo.

Leider ist es (fast) unmöglich, aus einer .exe datei eine .bas datei zu machen. Für QBasic gab es da mal ein Programm, aber man hat nie den originalen code. Der "wiederhergestellte" code ist ganz ANDERS. Fang am besten damit an, dass Programm neu zu scheiben. Vielleicht gibt es aber andere methoden.

Mfg
Michael

EDIT: schimpfen Die igel werden auch immer schneller. durchgeknallt


Zuletzt bearbeitet von Michael712 am 24.08.2005, 16:28, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Mecki
Igel


Anmeldungsdatum: 10.09.2004
Beiträge: 985
Wohnort: Niederbayern

BeitragVerfasst am: 24.08.2005, 16:28    Titel: Antworten mit Zitat

Dieses Tool bringt hier aber wenig, oder hat es wirklich aus dem ASM-Code eine BAS erstellt?
Ich vermute nämlich, dass es eher den Pseudo-Code, den QB in seine EXEn schreibt, benutzt..

/EDIT: Tjaa.... Du kennst ja sicher das Märchen über mich.. zwinkern
_________________
» Yodl.de: So sucht man gestern. verwundert
» Geld verdienen im Netz + ICQ.
» Firefox!
» 100€ zu gewinnen
» FreeBASIC.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name Yahoo Messenger MSN Messenger
d.j.peters
Gast





BeitragVerfasst am: 25.08.2005, 01:41    Titel: Antworten mit Zitat

Hallo Leader4,
wie gross war der Quellcode (ca. Anzahl der Zeilen) und ist es wirklich etwas wichtiges?

Was war das Thema viele stringsachen grafik datei ... ?

Grüsse Joshy
Nach oben
Leader4



Anmeldungsdatum: 20.01.2005
Beiträge: 99
Wohnort: Leipzig

BeitragVerfasst am: 25.08.2005, 08:29    Titel: Antworten mit Zitat

Es waren etwa 1200, 1300 Zeilen bei einer Größe von vielleicht etwa 35, 40 KByte.

Das Thema: Es war eine Art Lexikon. Das Programm hatte lediglich einfache grafische Elemente enthalten, für die Benutzeroberfläche (also Line-, Paint- und Coloranweisungen, mehr eigentlich nicht).
Etwa 50 % des Programms waren Bedingungszeilen, das ist eigentlich das wichtigste, was mir nun fehlt. Die Form war:

If W$ = "xxx" Then D$ = "9999"

xxx = ein bestimmtes wort; 9999 = eine bestimmte zahl
Von diesen Zeilen gab es etwa 600, 700 Stück.


Ob es wichtig ist? Also ohne den widerhergestellten Quellcode müsste ich enorm viel Arbeit und Aufwand betreiben, damit das Programm irgendwann mal wieder läuft. Ich glaube nicht, dass ich mir so viel Arbeit noch einmal antue, weil ich das Programm über einen langen Zeitlauf hin und wieder erweitert habe und weiß, wie viel Arbeit das insgesamt ist. Daher weiß ich zur Zeit noch nicht recht, was ich machen soll... eins ist mir aber klar: eine ersetzte Datei kann definitiv nicht mehr hergestellt werden, auch nicht mit Systemwiederherstellung.
_________________
Ein richtiger Programmierer muss so richtig faul sein und sich den ganzen Tag mit der Frage beschäftigen, wie man mal wieder etwas einfacher machen kann.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Mecki
Igel


Anmeldungsdatum: 10.09.2004
Beiträge: 985
Wohnort: Niederbayern

BeitragVerfasst am: 25.08.2005, 14:01    Titel: Antworten mit Zitat

Also diese Strings müsste man schon aus der EXE rausfiltern können.
Ich denke, dass es den Aufwand wohl wert ist - und in Zukunft solltest du sowas vielleicht - auch wenn FB fast unbegrenzten RAM zur Verfügung hat - sowas in eine externe Datei auslagern...
_________________
» Yodl.de: So sucht man gestern. verwundert
» Geld verdienen im Netz + ICQ.
» Firefox!
» 100€ zu gewinnen
» FreeBASIC.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name Yahoo Messenger MSN Messenger
Leader4



Anmeldungsdatum: 20.01.2005
Beiträge: 99
Wohnort: Leipzig

BeitragVerfasst am: 25.08.2005, 16:08    Titel: Antworten mit Zitat

Weißt du auch wo man so ein Programm herbekommen kann, wo man diese Bedingungen "rausfiltern" könnte? Das würde mir echt helfen, wenn ich wenigstens diese Programmteile widerhergestellt bekommen könnte.

Danke im Voraus. lächeln


PS: Ja, wäre besser die Daten auszulagern. Das dumme ist nur, dass FB bei Save As... noch nicht mal ne Rückfrage startet, ob ich die vorhandene Datei ersetzen will oder nicht... naja, hinterher ist man halt immer klüger.
_________________
Ein richtiger Programmierer muss so richtig faul sein und sich den ganzen Tag mit der Frage beschäftigen, wie man mal wieder etwas einfacher machen kann.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
d.j.peters
Gast





BeitragVerfasst am: 26.08.2005, 01:43    Titel: Antworten mit Zitat

Hallo Leader4,
poste mal einen Link auf deine exe Datei wenn ich Zeit habe dann schaue ich mal am Sonntag was zu retten ist.

Grüsse Joshy
Nach oben
Leader4



Anmeldungsdatum: 20.01.2005
Beiträge: 99
Wohnort: Leipzig

BeitragVerfasst am: 26.08.2005, 07:14    Titel: Antworten mit Zitat

Danke, das ist sehr nett. lächeln

Ich weiß jetzt nicht genau, wie du das mit dem Link meinst, aber wenn du mir deine E-Mail-Adresse gibst oder bei MSN oder ICQ angemeldet bist, schick ich dir das Programm zu und da kannst du in aller Ruhe schaun, was noch zu machen ist.


Grüße von Patrick lächeln

Patrick.Arnold@hotmail.de
_________________
Ein richtiger Programmierer muss so richtig faul sein und sich den ganzen Tag mit der Frage beschäftigen, wie man mal wieder etwas einfacher machen kann.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
d.j.peters
Gast





BeitragVerfasst am: 26.08.2005, 13:30    Titel: Antworten mit Zitat

Leader4 hat Folgendes geschrieben:
...Ich weiß jetzt nicht genau, wie du das mit dem Link meinst ...


Du kanst auf z.B. http://fileanchor.com/ Deine Dateien hochladen und bekommst einen Link auf die Datein wenn ich den dann anklicke wird die Datei auf meinen Rechner herunter geladen.

Grüsse Joshy

PS. Meine eMail Addi müste hier im Profile stehen.
Nach oben
Paul
aka ICC, HV-Freak


Anmeldungsdatum: 11.09.2004
Beiträge: 588
Wohnort: Uelzen

BeitragVerfasst am: 26.08.2005, 23:20    Titel: Antworten mit Zitat

Ich hab neulich mal so nen Quick'N'Dirty Code gemacht, der alle möglichen Strings aus ner EXE oder sonstwo rausfiltert. Funktioniert natürlich nicht einwandfrei, aber kann einem die Sache erleichtern. durchgeknallt

Code:
FileName$ = ""
COLOR 7, 0
CLS
PRINT "ICC FindText v1.00 - (C)2005, Paul Wilhelm (ICC Software) - www.icc-software.de"
PRINT
PRINT "Input file:",
IF FileName$ = "" THEN
    INPUT "", FileName$
    OutFileName$ = FileName$+ ".txt"
    inputted = 1
ELSE
    inputted = 0
END IF
IF inputted = 0 THEN PRINT FileName$
PRINT "Output file:", OutFileName$
input "Minimal string length [8]: ", strl$
minlen = val(strl$)
if minlen = 0 then minlen = 8
PRINT
OPEN FileName$ FOR BINARY AS #1: l = LOF(1): CLOSE #1
IF l = 0 THEN
    COLOR 4
    PRINT "File is empty or doesn't exist."
    PRINT "Press any key to exit."
    SLEEP
    COLOR 7
    CLS
    END
END IF
PRINT "Proceeding...";
OPEN FileName$ FOR BINARY AS #1
OPEN OutFileName$ FOR OUTPUT AS #2
PRINT #2, FileName$
PRINT #2, date$; " / "; time$
PRINT #2, ""
PRINT #2, "Offset(hex)", " Length(dec)", "Text"
PRINT #2, ""
DIM anz&(0 TO 255)
percentage = 10
start& = 0
filepos& = 0
Text$ = ""
bn& = LOF(1)
maxbuf& = 1024
DO WHILE bn&
    IF bn& > maxbuf& THEN buf& = maxbuf& ELSE buf& = bn&
    buf$ = SPACE$(buf&)
    bn& = bn& - buf&
    GET #1, , buf$
    FOR a& = 1 TO buf&
        c$ = MID$(buf$, a&, 1)
        c = ASC(c$)
        IF (c >= 32 AND c <= 126) or c$ = "Ä" or c$ = "ä" or c$ = "Ö" or c$ = "ö" or c$ = "Ü" or c$ = "ü" THEN
            IF start = 0 THEN start& = filepos&
            Text$ = Text$ + c$
        END IF
        tlen = LEN(Text$)
        IF c = 0 AND NOT Text$ = "" THEN
            IF tlen >= minlen THEN
                FOR b = 0 TO 255
                    anz&(b) = 0
                NEXT b
                FOR b = 1 TO tlen
                    c = ASC(Mid$(text$, b, 1))
                    anz&(c) = anz&(c) + 1
                NEXT b
                maxchar = 0
                maxanz = 0
                FOR b = 0 TO 255
                    IF anz&(b) > maxanz THEN maxanz = anz&(b): maxchar = b
                NEXT b
                FOR b = 1 TO tlen
                    c = ASC(Mid$(text$, b, 1))
                    IF c = maxchar THEN anzchar = anzchar + 1
                NEXT b
               
                IF INT(anzchar / tlen * 100) > percentage THEN
                    h$ = hex$(start&)
                    PRINT #2, STRING$(11 - LEN(h$), " "); h$, LEN(Text$), Text$
                    'sleep
                END IF
            END IF
            Text$ = ""
            start& = 0
        END IF
    NEXT a&
    filepos& = filepos& + buf&
LOOP
CLOSE #2
CLOSE #1

PRINT "done."
PRINT
PRINT "Press any key to exit."
SLEEP
COLOR 7, 0
CLS
END

_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Leader4



Anmeldungsdatum: 20.01.2005
Beiträge: 99
Wohnort: Leipzig

BeitragVerfasst am: 27.08.2005, 07:47    Titel: Antworten mit Zitat

Klasse, danke. happy

Ich probier es gleich mal aus. Wenn etwas rauskommt, das einen Algorithmus hat, dann kann ich mir vielleicht mit einem kleinen Programm diese bruchstückhaften Strings konventieren oder mir wenigstens beim Neu-Programmieren einige Arbeit ersparen. Ich probiere es gleich mal aus.


Thank You! zwinkern
_________________
Ein richtiger Programmierer muss so richtig faul sein und sich den ganzen Tag mit der Frage beschäftigen, wie man mal wieder etwas einfacher machen kann.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Dusky_Joe



Anmeldungsdatum: 07.01.2005
Beiträge: 1007
Wohnort: Regensburg/Oberpfalz

BeitragVerfasst am: 29.08.2005, 11:47    Titel: Antworten mit Zitat

Quick'n'dirty, ja zwinkern

Code:
OPEN FileName$ FOR BINARY AS #1: l = LOF(1): CLOSE #1
IF l = 0 THEN
    COLOR 4
    PRINT "File is empty or doesn't exist."
    PRINT "Press any key to exit."
    SLEEP
    COLOR 7
    CLS
    END
END IF


Hier wird ne Datei erstellt. Besser ist das hier:

Code:
IF OPEN (FileName$ FOR INPUT AS #1) THEN...

Wenn du OPEN als Funktion einsetzt, wird die Fehlernummer zurückgegeben. Das ist 0, wenn kein Fehler auftritt, ansonsten irgendein wert ungleich null.

Siehe http://www.freebasic.de/r.php?s=OPEN
(recht weit unten im Ref-Eintrag)


Ach ja, und noch was:
Code:
filepos& = filepos& + buf&

Seit FB v0.13b oder so existieren die sogenannten Shorthands. Du kannst die Zeile abkürzen:
Code:
filepos& += buf&

Hat aufs Endprodukt kaum auswirkungen (manchmal ist die Variante trotzdem schneller), aber hauptsächlich sparst du dir Tipparbeit.

Siehe dazu:
http://fb.exp-soft.de/FBtuts.php?zeig=tuts&view=Referenz_Grundlagen-2.~Ausdruecke~und~Operatoren.txt#7

Die beiden Techniken (Shorthands und Variablen-Initiatoren) sind ziemlich praktisch, und sollten deswegen endlich mal bekannt werden zwinkern Für OPEN-Funktion-Variante gilt wohl das selbe Zunge rausstrecken

However, der Post hat wohl sonst nicht viel mit dem Thread zu tun...


Have a nice day
Ciao
_________________
fully biological degradable

Once, the big wave arrives, you've got two ways, you can go:
Either, you ride it, or you don't do.
But, if you don't ride, you'll never know wether you'd have gone wet.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 29.08.2005, 11:55    Titel: Antworten mit Zitat

Code:
variable++;

Das da oben ist auch sowas für C++ oder vertue ich mich da?
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Dusky_Joe



Anmeldungsdatum: 07.01.2005
Beiträge: 1007
Wohnort: Regensburg/Oberpfalz

BeitragVerfasst am: 29.08.2005, 12:04    Titel: Antworten mit Zitat

Äh... dein Code-Auszug ist mir unbekannt... soll das ne Kurzform für
Code:
variable = variable + variable
bzw für
Code:
variable += variable
sein?

However, es kann gut sein, dass es unter C/C++ Shorthands gegeben hat.
_________________
fully biological degradable

Once, the big wave arrives, you've got two ways, you can go:
Either, you ride it, or you don't do.
But, if you don't ride, you'll never know wether you'd have gone wet.


Zuletzt bearbeitet von Dusky_Joe am 29.08.2005, 12:08, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 29.08.2005, 12:06    Titel: Antworten mit Zitat

Ich glaub das ist eine Kurzform für
Code:
Variable=Variable+1;

_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Dusky_Joe



Anmeldungsdatum: 07.01.2005
Beiträge: 1007
Wohnort: Regensburg/Oberpfalz

BeitragVerfasst am: 29.08.2005, 12:10    Titel: Antworten mit Zitat

Grade getestet:

Code:
var ++;

Print var
Sleep


Ausgabe:
Zeile 1:
Expected: '=', found: '+'

(oder braucht man dazu v0.15b? ich hab noch v0.14b)
_________________
fully biological degradable

Once, the big wave arrives, you've got two ways, you can go:
Either, you ride it, or you don't do.
But, if you don't ride, you'll never know wether you'd have gone wet.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 29.08.2005, 12:14    Titel: Antworten mit Zitat

Ne, das ist C++ Code. :) Der funktioniert natürlich nicht in FB. Ich wollt bloß wissen, ob mein Code (variable++;) das C++ Gegenstück zu deinen FB Shorthands ist. :) Das Semikolon braucht man in FB doch gar nicht. :)
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Paul
aka ICC, HV-Freak


Anmeldungsdatum: 11.09.2004
Beiträge: 588
Wohnort: Uelzen

BeitragVerfasst am: 29.08.2005, 13:16    Titel: Antworten mit Zitat

Dusky du Klugscheißer durchgeknallt happy
Der Code war für QB ausgelegt, da gabs solche Funktionen noch net grinsen
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz