Builder für Anfänger

Slayer615
Verfügbare Informationen zu "Builder für Anfänger"

  • Qualität des Beitrags: 0 Sterne
  • Beteiligte Poster: warwalker69
  • Forum: Slayer615
  • Forenbeschreibung: CODERS willkommen
  • aus dem Unterforum: TUTORIALS
  • Antworten: 1
  • Forum gestartet am: Samstag 16.12.2006
  • Sprache: deutsch
  • Link zum Originaltopic: Builder für Anfänger
  • Letzte Antwort: vor 15 Jahren, 6 Monaten, 3 Tagen, 4 Stunden, 50 Minuten
  • Alle Beiträge und Antworten zu "Builder für Anfänger"

    Re: Builder für Anfänger

    warwalker69 - 26.09.2007, 18:39

    Builder für Anfänger
    Thema: Wie programmiert man sich einen Builder.
    KOMPLETTES TUTORIAL VON vb-x.org kopiert


    Hallo an alle.

    Heute erkläre ich euch was ein Builder ist und wie man sich seinen eigenen codet.


    1. Was ist ein Builder und wozu braucht man den???

    Ein Builder bietet einem die Möglichkeit Einstellungen an einer schon kompilierten Datei vorzunehmen.
    Versteht das jetzt bitte nicht falsch. Man greift nicht wirklich in die exe Datei ein, sondern man hängt an die Datei die Informationen dran.
    Die Exe muss natürlich dann so programmiert sein, dass sie sich diese Infos die sie benötigt auch holen kann.
    Ihr könnt das also nicht mit jeder Exe machen, sondern es muss diese auch eine von euch programmierte sein.

    2. Grundfunktion

    Ich hab ja schon ein wenig angeschnitten wie ein Builder funktioniert, aber jetzt versuch ich es mal genauer zu erklären.

    Als erstes besteht so ein Projekt aus zwei Programmen. Den Builder und das eigentliche Programm, das der Benutzer auf seine Bedürfnisse einstellen kann.
    Das Programm nennen wir jetzt einfach mal „server“, auch wenn ich hoffe dass es auch Leute gibt, die keinen Trojaner machen wollen.

    Also wie funktioniert das jetzt?

    Im Builder werden normal Angaben gemacht, die euer server braucht, wie zum Beispiel die IP Adresse zu der er verbinden soll, oder Port, Installationspfad, Autostarteintrag und diverse andere.
    Beim erstellen öffnet der Builder den server und fügt am Ende der Datei all diese Informationen dran. Am besten natürlich irgendwie verschlüsselt, da man sonst einfach per Hexeditor die IP Adresse usw. auslesen kann.

    Nun gibt es zwei Möglichkeiten wie der Builder auf den server zugreift.
    Beide werde ich hier erörtern.

    3. Server direkt im Builder als Ressource einbinden.

    Vorteil dieser Art ist, dass man am Ende nur eine Datei hat, da der server in den Builder eingebunden wird.

    Als erstes braucht ihr dazu den Ressourcen Editor.
    Den bekommt ihr, wenn ihr oben auf Add-Ins => Add-In-Manager drückt und dann den Eintrag VB 6 Ressourcen-Editor sucht und markiert.
    Unten hakt ihr dann diese zwei Optionen an: Beim Start laden und Laden/Entladen.
    Nachdem ihr OK gedrückt habt, müsstet ihr jetzt oben ein neues Zeichen dazubekommen haben.

    Falls ihr es nicht findet, dann drückt einfach auf Extras => Ressourcen-Editor.

    Jetzt habt ihr also ein neues Fenster, den Ressourcen-Editor offen.
    Nun sucht ihr das Icon für Benutzerdefinierte Ressourcen, das ganz rechts vor dem Fragezeichen ist und drückt drauf.
    Fügt nun eure Exe Datei ein.

    Diese Datei sollte jetzt mit der Nummer 101 eingefügt sein, da es die erste ist, die ihr eingefügt habt.

    Jetzt ist es wichtig, das ihr im Ressourcen-Editor auf speichern drückt.
    Dann könnt ihr ihn schließen.

    So. Und hier nun ein Beispiel zum entpacken der Ressource.

    4. Ressource entpacken

    Visual Basic Code:
    Dim buffer() As Byte
    buffer = LoadResData(101, "CUSTOM")
    Open fout For Binary As #1
    Put #1, , buffer
    Close #1



    Ich erklär euch den code Zeile für Zeile.

    Visual Basic Code:
    Dim buffer() As Byte


    Wir deklarieren also erstmal die Variable buffer as Byte, in der wir dann die Ressource speichern um sie dann auf der Festplatte erstellen zu können.


    Visual Basic Code:
    buffer = LoadResData(101, "CUSTOM")


    In der zweiten Zeile laden wir die Ressource Nummer 101 in buffer.
    „CUSTOM“ gibt an welche Art von Ressource das ist, und es ist ja eine Benutzerdefinierte.


    Visual Basic Code:
    Open (App.Path & "\server.exe") For Binary As #1


    Hier öffnen wir nun die Datei, außer sie existiert noch nicht, dann wird sie erstellt.
    Das ganze passiert im Binär Modus und ich habe hier die Nummer #1 gewählt für diese Datei.
    Wenn ihr euch damit nicht auskennt, dann solltet ihr euch zuerst über dieses Thema informieren, bevor ihr weiterlest.
    Was bedeutet (App.Path & "\server.exe") ???
    Ganz einfach. App.Path übergibt den Pfad wo der Builder gespeichert ist und wir fügen dann einfach noch \server.exe dran und haben so schon den kompletten Pfad zu der Datei.


    Visual Basic Code:
    Put #1, , buffer()


    Mit dieser Zeile fügen wir in die Datei mit der Nummer #1, die Ressource Datei ein, die wir in buffer gespeichert haben ein.

    Visual Basic Code:
    Close #1


    Hiermit wird der Zugriff auf die Datei wieder beendet/geschlossen.
    Das ist sehr wichtig, dass man Dateien die man nicht mehr benutzt auch wieder freigibt.
    Hier wird jetzt nur die Datei #1 geschlossen, aber wenn ihr mehrere auf einmal schließen wollt, braucht ihr nur close schreiben.

    5. Eingegebene Informationen/Optionen an den server hängen

    Als Beispiel benutze ich jetzt einfach mal Text1.Text und Text2.Text, in denen Infos wie IP und Port angegeben werden können.

    Visual Basic Code:
    Dim options As String * 100
    Options = Text1.Text & "#" & Text2.Text & "#"



    In der ersten Zeile deklarieren wir uns erstmal eine Variable in der wir dann alle Angaben die der Benutzer gemacht hat speichern können.
    Aber was ist das * 100???
    Hier bestimmen wir, dass die Variable options genau 100Bytes lang ist.

    Versucht euch das so vorzustellen, das options ein Koffer ist, indem ihr 100 Sachen reinpacken könnt.
    Wenn ihr sehr viele Informationen reinpacken wollt, kann es sein, das euer Koffer zu klein ist.
    Das ist aber kein Problem. Ihr müßt dann halt nur eine größere Zahl hinschreiben.

    In 100Bytes passt aber schon sehr viel hinein.


    2. Zeile

    Visual Basic Code:
    Options = Text1.Text & "#" & Text2.Text & "#"



    In dieser Zeile speichern wir alle Informationen die der Benutzer angegeben hat in der Variable options.
    Aber wie ihr vielleicht schon gesehen habt, sind da noch andere Zeichen zwischen Text1.Text und Text2.Text.
    Diese dienen uns als Trennungszeichen, damit wir später diese Infos wieder voneinander trennen können. Ihr könnt auch andere Zeichen wählen, aber nehmt welche, wo ihr euch sicher seit, dass sie nicht in den vom Benutzer angegebenen Informationen vorkommen werden.

    Nun brauchen wir noch den code zum anhängen dieser Informationen an den server.

    6. Informationen an den server anhängen

    Visual Basic Code:
    Open (App.Path & "\server.exe") For Binary As #1
    Put #1, LOF(1) + 1, options
    Close #1



    In der ersten Zeile öffnen wir nochmal die Datei die wir vorher schon erstellt haben.
    In der zweiten Zeile fügen wir die Infos, die in options gespeichert sind, ans Ende der Datei.
    Jetzt fragt ihr euch vielleicht woher unser code weiß wo das Ende der Datei ist.
    Das sagen wir ihm über den Befehl LOF(1)+1).
    LOF bedeutet Len Of File.
    In der Klammer steht die Zahl 1. Das ist die Nummer der Datei.

    Wir sagen also (Länge der Datei 1)+1).
    Plus 1 schreiben wir deshalb, weil er sonst das letzte Zeichen der Datei überschreiben würde mit unseren Infos. Also sagen wir plus eins.
    Mit Close #1 wird die Datei dann wieder geschlossen.

    Das wäre auch schon der ganze Basiscode für einen Builder.


    Aber ich zeige euch noch die Möglichkeit eine externe Datei, die man normal als stub bezeichnet, zu öffnen und eure infos dranzuhängen.

    7. Externe Stub öffnen und String anhängen

    Eigentlich ist nur wichtig, wie ihr die stub öffnet und kopiert. Wie man was anhängt seht ihr ja schon oben.
    Kopieren muß man die stub deswegen, da die originale so bleiben sollte wie sie ist, damit sie immer wieder benutzt werden kann.
    Deshalb kopieren wir die stub, fügen den string an und fertig.

    Hier ein code zum öffnen und kopieren einer externen Stub.

    Visual Basic Code:
    Dim buffer As String
    Open (App.Path & "\stub.dll") For Binary As #1
    Open (App.Path & "\server.exe") For Binary As #2
    Buffer = Space(LOF(1))
    Get #1, , Buffer
    Put #2, , Buffer
    Close


    In den ersten zwei Zeilen wird ganz einfach die stub.dll geöffnet und dann die server.exe.

    In der dritten Zeile passiert etwas Wichtiges. Wir fragen die Größe der Datei mit der Nummer 1 ab und füllen buffer mit so vielen Leerzeichen wie diese Datei groß ist.
    Das machen wir, damit wir die ganze Datei auf einmal einlesen können.

    In den nächsten Zeilen wird ganze einfach zuerst die stub.dll in buffer eingelesen und dann in server.exe geschrieben. Danach werden beide Dateien auf einmal geschlossen.
    Nun haben wir eine exakte Kopie der stub.dll, aber mit den anderen Namen server.exe.

    Man könnte das auch einfach per FileCopy von Windows erledigen lassen, aber ich denke so ist es eine bessere Lösung, und man weiß genau wann die Datei fertig erstellt worden ist.


    Als letztes fehlt uns jetzt noch ein code, den wir in den server einfügen müssen.
    Der muss ja am Ende irgendwie die infos an seinem Ende auslesen können.

    8. Wie holt sich der Server die Informationen

    Eigentlich ist das sehr leicht und sollte mit den obigen Informationen leicht zu schaffen sein.
    Aber das hier soll ja ein vollständiger Artikel sein. wink


    Also hier ein code wie sich der server selbst öffnet und die Informationen am Ende ausliest.

    Visual Basic Code:
    Dim file As string, options As String * 100, cmd() As String
    file = (App.Path & "\" & App.EXEName & “.exe”)
    Open file For Binary As #1
    Get #1, (LOF(1) - 99), options
    cmd() = Split(options, "#")



    1. Zeile: Hier deklarieren wir die Variablen die wir brauchen. In file schreiben wir den Pfad zur eigenen Datei hinein. In options speichern wir den ausgelesenen string vom Ende der Datei. Das * 100 ist sehr wichtig und sollte der gleiche Wert sein, wie ihr beim Builder angegeben habt. In cmd() werden wir den string aus options teilen, um die einzelnen Informationen wieder zu erhalten.

    2. Zeile: Hier übergeben wir den Pfad der eigenen Datei an die Variable file


    3. Zeile: Hier öffnen wir die Datei als Nummer 1

    4. Zeile: Hier lesen wir die angehängten Infos aus. Wenn ihr im Builder 100Bytes angegeben habt, dann müßt ihr hier unbedingt 99 angeben, da sonst ein Zeichen zuviel eingelesen wird.


    5. Zeile: Das hier ist eine sehr wichtige Funktion, die ihr sicher auch noch in Zukunft sehr oft benutzen werdet. Mit Split wird der lange string, gespalten bzw. getrennt. Und nämlich überall dort, wo wir unser Trennungzeichen geschrieben haben. Nun trennt er uns diesen string also, und wir erhalten unsere zwei Infos Text1.Text und Text2.text. Aber wo sind diese jetzt? Ganz einfach.
    cmd() ist ein Array. Stellt euch das wie eine Liste vor. Ihr könnt in jede Zeile dieser Liste etwas eintragen. Und wir haben zwei Infos eingefügt. Diese Liste fängt aber bei 0 an. Das heißt es sieht jetzt so aus:

    cmd(0) = Text1.Text
    cmd(1) = Text2.Text

    Diese Variablen könnt ihr nun in eurem Programm benutzen und habt dadurch z.B. IP und Port bekommen, wo der server hin verbinden soll.


    Ich hoffe ich konnte es euch verständlich erklären, damit ihr euren eigenen Builder programmieren könnt.



    Mit folgendem Code, können Sie den Beitrag ganz bequem auf ihrer Homepage verlinken



    Weitere Beiträge aus dem Forum Slayer615



    Ähnliche Beiträge wie "Builder für Anfänger"

    Anfänger Quadranten - Johns (Montag 02.07.2007)
    An alle Anfänger! Ich stehe zum abschuss Frei! - Dungeon44 (Dienstag 26.12.2006)
    Anfänger braucht Hilfe - Ploggi074 (Sonntag 13.05.2007)
    welcher Anfänger Heli bis 600 € - heli_neuling (Samstag 23.06.2007)
    GUILD WARS TEAM BUILDER - Riku (Montag 03.07.2006)
    Anfänger Dargonfly22E oder Dragonfly 4 - tom_1975AQ (Mittwoch 26.07.2006)
    Hilfe für Anfänger: Antispyware - lucifer (Sonntag 08.05.2005)
    Anfänger aufgepasst! - nofear2004 (Sonntag 02.09.2007)
    TagTeamTurnierBattle/blutige Anfänger vs. Armee der Realität - Kral Tshudo (Samstag 22.07.2006)
    Bin noch Anfänger - STRAKA Klaus (Donnerstag 05.07.2007)