Zuerst einmal möchte ich sagen, dass ich zuvor noch nie was mit Dll-Injections zu tun hatte. ;)
Also ich habe ein kleines Programm geschrieben, das eine Dll in einen Prozess injected und anschließend eine Prozedur innerhalb der Dll aufruft. Klappt auch alles wunderbar. Wenn ich nun in der Dll mit WriteProcessMemory() einen Opcode "wegNOPen" will, klappt das auch. Nun will ich aber wenn ich ja schon im Prozess bin, das ganze mit Assembler lösen.
So sieht meine Prozedur aus:
Wenn ich das machen will bekomme ich aber "Access Violation". Mit Minesweeper habe ich das auch schon versucht, bekomme da aber auch "Access Violation".
Programmsprache ist Delphi und OS Vista.
Edit: Hab gerade rausgefunden, dass ich nur die Opcodes nicht umschreiben kann, alle anderen Bytes im Speicher kann ich ohne Error ändern.
Edit2: Ich habe es selbst hinbekommen. Musste nur die entsprechende Speicherregion mit VirtualProtect() writable machen. Der Thread kann nun geschlossen/gelöscht werden.
Also ich habe ein kleines Programm geschrieben, das eine Dll in einen Prozess injected und anschließend eine Prozedur innerhalb der Dll aufruft. Klappt auch alles wunderbar. Wenn ich nun in der Dll mit WriteProcessMemory() einen Opcode "wegNOPen" will, klappt das auch. Nun will ich aber wenn ich ja schon im Prozess bin, das ganze mit Assembler lösen.
So sieht meine Prozedur aus:
Code:
[B]asm[/B] mov dword ptr ds:[$0043A83B], $90909090 mov word ptr ds:[$0043A83F], $9090 [B]end;[/B]
Programmsprache ist Delphi und OS Vista.
Edit: Hab gerade rausgefunden, dass ich nur die Opcodes nicht umschreiben kann, alle anderen Bytes im Speicher kann ich ohne Error ändern.
Edit2: Ich habe es selbst hinbekommen. Musste nur die entsprechende Speicherregion mit VirtualProtect() writable machen. Der Thread kann nun geschlossen/gelöscht werden.