Ich progge mit Delphi/Pascal´, nun seit ca. 1-2 Jahren und ich habe mir schon oft genug die Frage gestellt: Wie kann ich ne exe hacken oder so und dann z.B. Varis auslesen oder sowas ..ein par können das ja und will das auch mal versuchen ..nur Wie ??? In keinem Buch das ich habe steht da was drüber ..TUTs hab ich auch keine gefzunden aber iregndwas mus es doch geben
--
Greetz to xD Helldog,bloody,Raiden,Chaik,Chuck und wer wars noch ...*überleg* dadie,Jesus,Crash und Manie
Mit Delphi eine EXE hacken wird... ehm... VERDAMMT schwer. Jedenfalls kenn ich dazu keine Möglichkeit, und glaub auch nicht, dass es eine gibt.
Wenn dir aber so viel dran liegt -> lern Assembler, dann kannste jedes Programm einfach mit dem WindowsDebugger aufmachen, und Tadaa, schon haste den Quellcode... viel Spaß bei 3DSpielen mit mehreren 100 MB.
Mit Delphi eine EXE hacken wird... ehm... VERDAMMT schwer. Jedenfalls kenn ich dazu keine Möglichkeit, und glaub auch nicht, dass es eine gibt.
Wenn dir aber so viel dran liegt -> lern Assembler, dann kannste jedes Programm einfach mit dem WindowsDebugger aufmachen, und Tadaa, schon haste den Quellcode... viel Spaß bei 3DSpielen mit mehreren 100 MB.
...
1. Ist Delphi sehr gut für "exe-hacken" und "vais-asulesen". Das Varis auselesen funktioniert gaanz einfach über den Arbeitsspeicher einfach mal nach "Trainer-programmieren delphi" googlen. Verdammt viele Trainer sind nämlich mit Delphi entstanden.
2. Liegen die 100 MB des Spiels nicht in der Exe sondern die Exe ist 8-16 MB groß und dazu gibts ne 300 MB Datei Texturen|Modelle und 100 MB Level. So in etwa. Die Exe läd dann halt was sie davon braucht.
Delphi, genau so wie jede andere Programmiersprache, ist nicht dazu konzipiert, vorhandene Programme in Quelltest zurueck zu uebersetzen, sondern das Gegenteil ist der Fall, naemlich Quelltext in Programme umzuwandeln. So wie sich das viele Leute denken, einfach mal ne DLL oder EXE in Delphi oeffnen und rumeditieren, ist einfach absoluter schwachsinn. Fuer sowas gibt es Hexeditoren. UNd da sieht man auch nur den Maschinencode. Die einzige Moegleichkeit waere eine Disassembler z.B. W32Dasm. Allerdings ist das Anwenden eines solchen Programmes auf Programme, die du nicht selbst erstellt hast, in der Regel illegal. Ausserdem spuckt so ein Programm auch nur Assemblertext aus, und der ist ohne Kommentare und sinnvolle Variablennamen ohne jahrelanges Training praktisch unlesbar. Sogenannte DeCompiler soll es zwar fuer verschiedene Programmiersprachen geben, aber ich habe noch keinen funktionsfaehigen gefunden und zudem fehlen auch hier kommentare und variablennamen. Stell dir mal einen komplizierten Quellcode vor, der keine Kommentare enthaellt, dessen Variablennamen alle aus V plus einer 10stelligen Ziffernfolge bestehen und der dazwischen Bloecke aus inlineassembler enthaellt (meist groesser als der Rest des Codes), die das beschreiben, mit was der decompiler nichts anfangen konnte (in meinen Erfahrungen >99%). Dazu sage ich NEIN DANKE. An sich ist es ja auch nur logisch, dass ein (ordentlicher) DeCompiler kaum existieren kann, da die Abbildung von Quellcode auf Maschinencode nicht bijektiv ist.
Das, was die oben angesprochenen Trainer machen, basiert nicht auf Delphi, sondern auf der WinAPI, der Funktionsbibliothek von Windows. Mit den Funktionen ReadProcessMemory und WriteProcessMemory hast du zwei maechtige Werkzeuge in der Hand, um jegliche Speicherinformationen zu lesen und zu schreiben, sofern du vorher die Rechte fuer den Speicherblock richtig setzen kannst. Allerdings wird dir das nichts nutzen, wenn du a) keine Ahnung hast, wo die Information steht, b) wie sie gespeichert/codiert ist und c) du keine Ahnung von der Arbeitsweise eines Computers auf Prozessor-/Ramebene hast, die ueber das Finden des Anschaltknopfes hinausgeht. In jedem Fall wirst du um das Lernen von Assembler (und das ist fuer jede Prozessorfamilie anders) und die Kenntnis der Struktur ausfuehrbarer Programme (und die ist bei jeder Betriebssystemfamilie anders) nicht herum kommen.
Als letztes noch die C-Funktionsbeschreibung von ReadProcessMemory. entnommen der WinAPI SDK Hilfe
hmm du hast mal gesagt das man die Variablen werte des Makers auslesen kann ! Wie , wie hast du z.B. herausbekommen wie die Harmony.dll aufgebaut ist ..auch mit nem Hexeditor...so ein hab ich aber byts interpretieren ist net so mein ding xDDD
--
Greetz to xD Helldog,bloody,Raiden,Chaik,Chuck und wer wars noch ...*überleg* dadie,Jesus,Crash und Manie
hmm du hast mal gesagt das man die Variablen werte des Makers auslesen kann ! Wie , wie hast du z.B. herausbekommen wie die Harmony.dll aufgebaut ist ..auch mit nem Hexeditor...so ein hab ich aber byts interpretieren ist net so mein ding xDDD
...
Ineluki weiß nicht, wie die Harmony-DLL genau programmiert ist. Er kennt nur das DLL-Interface. Das heißt die Funktionen die die DLL den Programmen, die sie benutzen, zur Verfügung stellt. Dann hat Luki einfach eine zweite DLL, mit exakt dem selben Interface (Den selben Funktionen) wie die Oldharmony sie hat, geschrieben und die Oldharmony durch diese ersetzt. Der Maker denkt jetzt es wäre "seine" DLL. Er sendet also exakt die selben Aufrufe an die DLL wie sie die Oldharmony empfangen würde. In Inelukis DLL wird dann überprüft, ob die Aufrufe, die der Maker sendet, ihn interessieren, oder nicht. Interessant ist dann z.b. die Funktion, die der DLL sagt, dass sie eine .wav Datei abspielen soll. Lukis DLL guckt da nämlich ob die Datei wirklich eine .wav oder vielleicht doch eine .script.wav ist. Sollte letzteres zutreffen verarbeitet Inelukis DLL das Script. Sollte ersteres zutreffen, wird der Aufruf einfach an die Oldharmony weiter geleitet.
Genauso funktioniert das mit allen anderen Funktionen in der DLL auch. Ist der Aufruf uninteressant geht er an die alte DLL.
Das Interface einer DLL kann man recht einfach rausbekommen, dafür gibt es Programme. In irgendeinem der GNU Pakete ist eins. In den Binutils wahrscheinlich.
Das ganze hat also recht wenig mit Disassemblieren oder Hexcode zu tun..
hmm du hast mal gesagt das man die Variablen werte des Makers auslesen kann ! Wie , wie hast du z.B. herausbekommen wie die Harmony.dll aufgebaut ist ..auch mit nem Hexeditor...so ein hab ich aber byts interpretieren ist net so mein ding xDDD
...
Was das Lesen der Werte aus dem Maker angeht, so mache ich das ebenfalls mit ReadProcessMemory. Allerdings ist das Problem herauszufinden, WO diese Daten stehen -__- Den Rest, der die DLLs betrifft, hat bereits Dingsi sehr schoen erklaehrt ...
@Dingsi ... das Tool, das du erwaehnst, kenn ich noch gar nicht O_o
Waere schoen, wenn du dich mal schlau machen koenntest. Vor allem interessiert mich, ob es auch rauskriegt, welche Parametertypen uebergeben werden, und in welcher reihenfolge ... Die Namen der Funktionen rauszubekommen, ist nicht das Problem. Das geht schon mit der Windows-Schnellansicht.
@Dingsi ... das Tool, das du erwaehnst, kenn ich noch gar nicht O_o
Waere schoen, wenn du dich mal schlau machen koenntest. Vor allem interessiert mich, ob es auch rauskriegt, welche Parametertypen uebergeben werden, und in welcher reihenfolge ... Die Namen der Funktionen rauszubekommen, ist nicht das Problem. Das geht schon mit der Windows-Schnellansicht.
...
Argh, du hast recht. Die Parameter hatte ganz vergessen. Das Programm was ich meine erstellt nur .def-Dateien mit der Liste der Funktionen
Das Programm was ich meinte nennt sich "pexports" und ist unter anderem hier unter "altbinutils-pe-bin" zu finden.
Aso.Ich habe im Delphi-forum nen schönes TUT zu nem Trainer gefunden ^^ das mach ich jetzt mal, werd aber am Maker ausprobieren da ich kein Starcraft habe xD mal gespannt was ich neues lerne xD
--
Greetz to xD Helldog,bloody,Raiden,Chaik,Chuck und wer wars noch ...*überleg* dadie,Jesus,Crash und Manie
Wenn du auch nur ansatzweise gelesen haettest, was wir in den letzten Posts geschrieben haben, wuesstest du, dass man wohl kaum ein StarCraft Trainer Tutorial auf den Maker uebertragen kann ...
Wie , wie hast du z.B. herausbekommen wie die Harmony.dll aufgebaut ist ..auch mit nem Hexeditor...so ein hab ich aber byts interpretieren ist net so mein ding xDDD
...
Also wenn du Win32 Executables 'hacken' willst, solltest du dich erstmal gründlich damit beschäftigen (das sollte man immer tun, wenn man etwas hacken will). Ein hilfreicher Link wäre beispielsweise dieser. Natürlich brauchst du etwas Zeit, bis du das Dateiformat verstehst, aber dann kannst du Executables öffnen und lesen, wie jede andere Datei.
Hmm wieso nicht! Wenn ich den Speicher Bereich im Maker für ne Vari finde die ich brauche kann ich das doch wunderbar im Maker lösen...Ich schau mir mal das TUT vom Rolus an ^^ thx @all
--
Greetz to xD Helldog,bloody,Raiden,Chaik,Chuck und wer wars noch ...*überleg* dadie,Jesus,Crash und Manie