Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi ASM in Delphi "nop" umsetzen (https://www.delphipraxis.net/135542-asm-delphi-nop-umsetzen.html)

Zacherl 13. Jun 2009 10:31

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.

Fridolin Walther 13. Jun 2009 19:45

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.

buster55 14. Jun 2009 14:01

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?

jaenicke 14. Jun 2009 14:33

Re: ASM in Delphi "nop" umsetzen
 
Die Stichworte hat Zacherl doch schon genannt...
http://www.delphipraxis.net/internal...048261#1048261

buster55 14. Jun 2009 15:44

Re: ASM in Delphi "nop" umsetzen
 
ok done :)
Danke für die Hilfe :)
Lösung für den, dens interessiert:

Delphi-Quellcode:
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);
...
grácias

buster

himitsu 14. Jun 2009 15:47

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:

buster55 14. Jun 2009 16:41

Re: ASM in Delphi "nop" umsetzen
 
japs :-P
Pointer suchen, selbstverständlich nen statischen, der auf die sich ändernde Adresse verweist :stupid: :stupid:

Fridolin Walther 14. Jun 2009 23:53

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:
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;
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).

buster55 15. Jun 2009 16:00

Re: ASM in Delphi "nop" umsetzen
 
auch wahr ;)
Dank dir für die Ratschläge und die Funktion :thumb:

QuickAndDirty 15. Jun 2009 16:49

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.
Seite 2 von 3     12 3      

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