![]() |
Re: ASM in Delphi "nop" umsetzen
Am einfachsten ist denke ich WriteProcessMemory und CreateRemoteThread. Hatte aber auch mal eine Methode entwickelt, die einen laufenden Thread einer Zielanwendung mittels SetThreadContext auf meinen Code umgebogen hat (und dann wieder zurückspringt zur Ausgangsposition). Gibt da recht viele Möglichkeiten. Ein injiziertes LoadLibrary wäre auch möglich .. Dann könntet du deinen Code sogar komplett in eine DLL packen.
|
Re: ASM in Delphi "nop" umsetzen
Wobei ein einfaches Überschreiben der Bytes mit 0x90 (-> der Opcode für NOP) reichen sollte. Code Injection an sich ist da gar nicht notwendig.
|
Re: ASM in Delphi "nop" umsetzen
aha, das heißt also man kann mit delphi bytes in einen prozess schreiben oder auch via ASM? Wenn ja wie geht das?
|
Re: ASM in Delphi "nop" umsetzen
Die Stichworte hat Zacherl doch schon genannt...
![]() |
Re: ASM in Delphi "nop" umsetzen
ok done :)
Danke für die Hilfe :) Lösung für den, dens interessiert:
Delphi-Quellcode:
grácias
WriteProcessMemory(HandledesProzesses,ptr($000000),buf,1,write);
// das dann noch weitere 5mal für die nächstgelegenen adressen, da bei 0x90 5 Bytes zuschreiben wären aber die Adresse nur 1 Byte // fasst. WriteProcessMemory(HandledesProzesses,ptr($000001),buf,1,write); WriteProcessMemory(HandledesProzesses,ptr($000002),buf,1,write); ... buster |
Re: ASM in Delphi "nop" umsetzen
Und um den Spaß noch zu erhöhen ... du weißt auch, daß Adressen im Virtuellen Adressraum nicht immer gleich bleiben müssen und sich auch mal ändern können?
bzw. viele machen das sogar ständig :stupid: |
Re: ASM in Delphi "nop" umsetzen
japs :-P
Pointer suchen, selbstverständlich nen statischen, der auf die sich ändernde Adresse verweist :stupid: :stupid: |
Re: ASM in Delphi "nop" umsetzen
Dein Code ist auf mehreren Ebenen schlecht:
1. Wieso schreibst Du 5x 1 Byte, statt 1x 5 Bytes? 2. ptr($000000) -> Null Page des Prozesses (ist die bei Windows per Default überhaupt gemapped?). Du schreibst also an Adresse 0 Deines Zielprozesses. Das kann irgendwie nicht so ganz stimmen. 3. Write ist ein reserviertes Wort. Merke: Wenn der Syntaxhighlighter ein Wort dick schreibt, sollte man es tunlichst nicht als Variablen Namen benutzen. Ich wunder mich das es überhaupt compiliert ;). Besser gelöst wäre die Sache in dieser kleinen Funktion:
Delphi-Quellcode:
Man übergebe ein Process Handle mit Write Access, die gewünschte Adresse wo die NOPs hin sollen und die Anzahl der NOPs die gewünscht sind und erhält die Anzahl der geschriebenen Bytes zurück (oder halt 0 bei Fehler).
function WriteNOPsToProcess(ProcessHandle : THandle; StartAddress : Pointer; NumberOfNOPsToWrite : Integer) : Integer;
var BufferToWrite : Pointer; begin Result := 0; GetMem(BufferToWrite, NumberOfNOPsToWrite); FillChar(BufferToWrite^, NumberOfNOPsToWrite, $90); WriteProcessMemory(ProcessHandle, StartAddress, BufferToWrite, NumberOfNOPsToWrite, Result); FreeMem(BufferToWrite); end; |
Re: ASM in Delphi "nop" umsetzen
auch wahr ;)
Dank dir für die Ratschläge und die Funktion :thumb: |
Re: ASM in Delphi "nop" umsetzen
Erfahre ich auch noch was so ein Hack bewirkt?
Wenn ich ne "CD im laufwerk" Abfrage Mit NOPS überschreibe oder eine sonstige Sicherheitsprüfung, das könnte was bringen aber sonnst ist der Code wohl für nichts gut ja? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:50 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz