AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi ASM in Delphi "nop" umsetzen
Thema durchsuchen
Ansicht
Themen-Optionen

ASM in Delphi "nop" umsetzen

Ein Thema von buster55 · begonnen am 12. Jun 2009 · letzter Beitrag vom 15. Jun 2009
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#11

Re: ASM in Delphi "nop" umsetzen

  Alt 13. Jun 2009, 10:31
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.
  Mit Zitat antworten Zitat
Fridolin Walther

Registriert seit: 11. Mai 2008
Ort: Kühlungsborn
446 Beiträge
 
Delphi 2009 Professional
 
#12

Re: ASM in Delphi "nop" umsetzen

  Alt 13. Jun 2009, 19:45
Wobei ein einfaches Überschreiben der Bytes mit 0x90 (-> der Opcode für NOP) reichen sollte. Code Injection an sich ist da gar nicht notwendig.
Fridolin Walther
  Mit Zitat antworten Zitat
buster55

Registriert seit: 25. Nov 2007
88 Beiträge
 
#13

Re: ASM in Delphi "nop" umsetzen

  Alt 14. Jun 2009, 14:01
aha, das heißt also man kann mit delphi bytes in einen prozess schreiben oder auch via ASM? Wenn ja wie geht das?
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.359 Beiträge
 
Delphi 11 Alexandria
 
#14

Re: ASM in Delphi "nop" umsetzen

  Alt 14. Jun 2009, 14:33
Die Stichworte hat Zacherl doch schon genannt...
http://www.delphipraxis.net/internal...048261#1048261
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
buster55

Registriert seit: 25. Nov 2007
88 Beiträge
 
#15

Re: ASM in Delphi "nop" umsetzen

  Alt 14. Jun 2009, 15:44
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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.172 Beiträge
 
Delphi 12 Athens
 
#16

Re: ASM in Delphi "nop" umsetzen

  Alt 14. Jun 2009, 15:47
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
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
buster55

Registriert seit: 25. Nov 2007
88 Beiträge
 
#17

Re: ASM in Delphi "nop" umsetzen

  Alt 14. Jun 2009, 16:41
japs
Pointer suchen, selbstverständlich nen statischen, der auf die sich ändernde Adresse verweist
  Mit Zitat antworten Zitat
Fridolin Walther

Registriert seit: 11. Mai 2008
Ort: Kühlungsborn
446 Beiträge
 
Delphi 2009 Professional
 
#18

Re: ASM in Delphi "nop" umsetzen

  Alt 14. Jun 2009, 23:53
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).
Fridolin Walther
  Mit Zitat antworten Zitat
buster55

Registriert seit: 25. Nov 2007
88 Beiträge
 
#19

Re: ASM in Delphi "nop" umsetzen

  Alt 15. Jun 2009, 16:00
auch wahr
Dank dir für die Ratschläge und die Funktion
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.888 Beiträge
 
Delphi 12 Athens
 
#20

Re: ASM in Delphi "nop" umsetzen

  Alt 15. Jun 2009, 16:49
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?
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:09 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz