ASM Befehl überschreiben

11/17/2012 00:24 Croco™#1
Abend,
ich habe folgenden ASM Code in einem Programm den ich gerne durch das darunter stehende ersetzen will:

Orginal:
Code:
JPO client.5957636D
Verändert:
Code:
JMP client.5957636D
Das ganze habe ich wie folgt versucht:

PHP Code:
#RequireAdmin
#include 'Detour.au3'
$Open OpenProcess($PROCESS_ALL_ACCESSFalseProcessExists("test.exe"))
    
$Write WriteProcessMemory($Open0x59575E5E"E9 0A050000")
CloseHandle($Open
Ich verstehe leider noch nicht ganz in welcher form man den ASM Befehl ersetzen muss !? Ich habe hier mal den Hex Code genommen der neben dem Befehl in OllyDBG stand (E9 0A050000) doch bin mir nicht sicher ob das so richtig ist ?
11/21/2012 20:10 K1ramoX#2
mach das ganze doch per nomadmemory

Code:
#include <NomadMemory.au3>

$ProcessID = ProcessWait("test.exe")
$Memoryhandle = _MemoryOpen($ProcessID)
_MemoryWrite(0x59575E5E, $Memoryhandle, "0xE90A050000", "byte[5]")
_MemoryClose($Memoryhandle)
besser wär es jedoch, die letzten 4 bytes der adresse wegzulassen. heißt ich würde es lieber so machen:

Code:
#include <NomadMemory.au3>

$ProcessID = ProcessWait("test.exe")
$Memoryhandle = _MemoryOpen($ProcessID)
_MemoryWrite(0x59575E5E, $Memoryhandle, "0xE9", "byte[1]")
_MemoryClose($Memoryhandle)
11/22/2012 15:05 Croco™#3
Wieso ist es besser die letzten 4 weg zu lassen ?
11/22/2012 15:29 Shadow992#4
Quote:
Originally Posted by ©ⓡⓞ©ⓞ View Post
Wieso ist es besser die letzten 4 weg zu lassen ?
Wenn du die 4 Bytes weglässt, funktioniert dein programm auch wenn sich die addresse ändert. Prinzipiell macht es aber keinen so großen Unterschied, weil wenn sich der Code ändert wird sich mit Sicherheit auch die Stelle ändern an der der Code steht.

Btw. du musst den Code wie du oben geschrieben hast einfügen lassen, ja. Prinzipiell is dein Code richtig aber wenn du auf Nummer sicher gehen willst benutze diese UDF: [Only registered and activated users can see links. Click Here To Register...]

Und schau dir _MemoryWriteBytes an. Das is genau das was du suchst.
11/22/2012 16:12 Croco™#5
Ich habe gerade nochmal in OllyDBG nach meiner Adresse gesucht und festgestellt das sie sich beim Neustarten des Programmes ändert. Brauche ich nun den Pointer oder wie kann ich mir das vorstellen ?
11/22/2012 17:25 K1ramoX#6
Quote:
Originally Posted by Shadow992 View Post
Wenn du die 4 Bytes weglässt, funktioniert dein programm auch wenn sich die addresse ändert. Prinzipiell macht es aber keinen so großen Unterschied, weil wenn sich der Code ändert wird sich mit Sicherheit auch die Stelle ändern an der der Code steht.
er kann ja nen pattern scan einbauen o:
11/22/2012 19:31 Shadow992#7
Quote:
Originally Posted by K1ramoX View Post
er kann ja nen pattern scan einbauen o:
Was meinste warum ich auf meine UDF verlinkt habe, die ganz zufällig nen Pattern-Scan implementiert hat? ;D

Quote:
Originally Posted by ©ⓡⓞ©ⓞ View Post
Ich habe gerade nochmal in OllyDBG nach meiner Adresse gesucht und festgestellt das sie sich beim Neustarten des Programmes ändert. Brauche ich nun den Pointer oder wie kann ich mir das vorstellen ?
Dafür brauchst du einen Pattern-Scan.
Am besten du googlest mal nach Pattern-Scan tutorials.
11/22/2012 20:06 K1ramoX#8
Quote:
Originally Posted by Shadow992 View Post
Dafür brauchst du einen Pattern-Scan.
Am besten du googlest mal nach Pattern-Scan tutorials.
pattern scan bei ner dynamischen adresse? dafuq
11/22/2012 20:22 Shadow992#9
Quote:
Originally Posted by K1ramoX View Post
pattern scan bei ner dynamischen adresse? dafuq
Er hat sich undeutlich ausgedrückt.
Entweder er meint die Addresse an der der Code steht, dann ist Pattern-Scan die einzige sinnvolle Möglichkeit.

Oder er meint die Addresse hinter dem JMP-Befehl aber auch dann ist ein Pattern-Scan möglich.

Man scannt einfach bis zum Jump und liest dann per ReadProcessMemory die darauf folgenden Bytes aus und wandelt sie entsprechend in eine Zahl um und schon hat man seine Addresse.

Egal was von beidem es ist, da er bereits die Stelle im Code hat und nicht die Addresse in CE, ist ein Pattern-Scan bei beiden Varianten keineswegs overpowered.
11/22/2012 21:03 K1ramoX#10
Quote:
Originally Posted by Shadow992 View Post
Er hat sich undeutlich ausgedrückt.
Entweder er meint die Addresse an der der Code steht, dann ist Pattern-Scan die einzige sinnvolle Möglichkeit.

Oder er meint die Addresse hinter dem JMP-Befehl aber auch dann ist ein Pattern-Scan möglich.

Man scannt einfach bis zum Jump und liest dann per ReadProcessMemory die darauf folgenden Bytes aus und wandelt sie entsprechend in eine Zahl um und schon hat man seine Addresse.

Egal was von beidem es ist, da er bereits die Stelle im Code hat und nicht die Addresse in CE, ist ein Pattern-Scan bei beiden Varianten keineswegs overpowered.
er schrieb dass sich die adresse nach jedem game neustart verschiebt. heißt also, dass er nen pointer scan machen muss, was bringt denn ein pattern scan bei einer dynamischen adresse? schon alleine wegen der maske kann das garnit luppen ;o

nochmal zu dem patterscan, er brauch einfach nur ne pattern loggen bis zu dem jmp, will er die addy nach dem jmp rechnet er einfach die addy +4 oder wie viel bytes die addy halt hat
11/22/2012 22:39 Shadow992#11
Quote:
Originally Posted by K1ramoX View Post
er schrieb dass sich die adresse nach jedem game neustart verschiebt. heißt also, dass er nen pointer scan machen muss, was bringt denn ein pattern scan bei einer dynamischen adresse? schon alleine wegen der maske kann das garnit luppen ;o

nochmal zu dem patterscan, er brauch einfach nur ne pattern loggen bis zu dem jmp, will er die addy nach dem jmp rechnet er einfach die addy +4 oder wie viel bytes die addy halt hat
Das ist totaler Quatsch er hat selbst gesagt, dass sich die Addresse in OLLY andauernd verschiebt, das heißt er hat jetzt erst einmal nichts mit Pointern am Hut und wenn es nicht mehr möglich ist einen Befehl über Patter-Scan zu finden, dann ist es erst recht nicht möglich den Pointer dazu zu finden, das kannst du vergessen.

Abgesehen davon scheinst du nicht zu wissen was ein Pattern-Scan bzw. ein Pointer wirklich ist, sonst würdest du merken, dass es möglich ist (und auch mit viel höherer Sicherheit) Pointer ebenso über Pattern-Scan rauszufinden.
11/23/2012 13:53 Croco™#12
Man lernt ja viel wenn Zwei sich streiten ähh diskutieren natürlich.
Ich wollte nochmal kurz eine Frage in den Raum werfen.
Wenn ich jetzt z.B mit CE nach einem Wert suche, und dann die Adresse von diesem in Olly suchen lassen, habe ich dann meine Basis für meinen Pattern Scan ?
(Ich hab mir mal folgendes Tutorial angesehen: [Only registered and activated users can see links. Click Here To Register...])