AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Speicher überschreiben mit Inline ASM

Ein Thema von JnZn558 · begonnen am 8. Feb 2009 · letzter Beitrag vom 2. Mai 2009
Antwort Antwort
Seite 1 von 2  1 2      
JnZn558

Registriert seit: 22. Aug 2004
98 Beiträge
 
#1

Speicher überschreiben mit Inline ASM

  Alt 8. Feb 2009, 01:53
Ich weiss nicht, ob das richtig hierrein gehört!
Ich möchte gern eine Speicherstelle von einem laufenden Spiel mit Inline ASM überschreiben, bzw ASM durch eigene code ersetzen, so wie Memory hacking tools das möglich macht wie z.B. Game Engine oder Tsearch. Inline ASM kennt ich schon, nur ich weiss nicht so genau wie es gehen soll.
Peace on the world
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#2

Re: Speicher überschreiben mit Inline ASM

  Alt 8. Feb 2009, 03:10
Mit Inline-Assembler hat das nicht direkt was zu tun, denn die Befehle sollen ja nicht in deinem Programm, sonderm im Zielprogramm ausgeführt werden. Daher musst du sie irgendwie als Datenstrom speichern, z.B. in einem Byte-Array, als Ressource, oder als Datei, die du zur Laufzeit lädst. Was das Überschreiben des Speichers anbelangt, kann ich dir nicht helfen. Eigentlich sollte das nach meinem Verständnis heutzutage auch gar nicht mehr möglich sein, da unter NT jeder Prozess seinen eigenen virtuellen Adressraum hat. Was wohl geht, ist Speicher in einem anderen Prozess zu alloziieren - aber überschreiben? Nicht, dass ich wüsste. Ich bin aber auch kein Experte - Was mir noch einfallen würde, wäre, sich irgendwie als Debugger einzuklinken, denn beim Debugger von Delphi ist es ja auch möglich, Werte im laufenden Programm abzuändern.
Es gibt sicher andere im Forum, die sich da besser auskennen. Allerdings ist die Frage, ob sie dich bei deinen eher zweifelhaften Absichten unterstützen wollen.
  Mit Zitat antworten Zitat
mr_emre_d
(Gast)

n/a Beiträge
 
#3

Re: Speicher überschreiben mit Inline ASM

  Alt 8. Feb 2009, 03:23
Falls du einer Anwendung eine Extra Funktion hinzufügen willst, probiers mit DLL-Injection;
Falls du aber aufs ändern vom COde bist müsstest du
1. Speicher im Ziel-Prozess allozieren
2. Deinen Code ins Speicher schreibem
3. Orginale Code umbiegen (jmp zu deinen Code)
4. Richtig handhaben (mit rückwärtsjumps usw ..)

MfG
  Mit Zitat antworten Zitat
JnZn558

Registriert seit: 22. Aug 2004
98 Beiträge
 
#4

Re: Speicher überschreiben mit Inline ASM

  Alt 8. Feb 2009, 15:42
Zitat von mr_emre_d:
Falls du einer Anwendung eine Extra Funktion hinzufügen willst, probiers mit DLL-Injection;
Falls du aber aufs ändern vom COde bist müsstest du
1. Speicher im Ziel-Prozess allozieren
2. Deinen Code ins Speicher schreibem
3. Orginale Code umbiegen (jmp zu deinen Code)
4. Richtig handhaben (mit rückwärtsjumps usw ..)

MfG
das ist mir bewusst, nur wie stelle ich das mit inline asmbler an, denn ich hab den codeausschnitt von game engine und das ist genau in asm.

wie man den game prozess ausfindig macht, weiss ich schon, mit API "findwindows", nun kenne ich das bis jetzt, dass ich immer bytesweise in hex mit writememory mache, aber ich kenne nicht alle asm befehl in hexzahlen, ausserdem ist es schwerer. deshalb möchte ich das gern in asm machen.
Peace on the world
  Mit Zitat antworten Zitat
Cyf

Registriert seit: 30. Mai 2008
407 Beiträge
 
Lazarus
 
#5

Re: Speicher überschreiben mit Inline ASM

  Alt 8. Feb 2009, 16:34
Wenn du den Prozess-Speicher direkt überschreibst, wird die alte Funktionalität nicht mehr gewährleistet sein. Wenn du so vorgehst, kannst du deine neue Funktion doch einfach in deine Exe einkompilieren und dann kopieren (dazu müsstest du aber auch die virtuelle Adresse im Prozess kennen). Die gängige Methode wäre aber eine DLL-Injection und das starten eines Threads im anderen Prozess, um den Speicher zu manipulieren.
Man kann einen Barbier definieren als einen, der alle diejenigen rasiert, und nur diejenigen, die sich nicht selbst rasieren.
Rasiert sich der Barbier?
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#6

Re: Speicher überschreiben mit Inline ASM

  Alt 8. Feb 2009, 20:34
Was machst du eigentlich, wenn der Code, den du patchen willst, gerade ausgeführt wird?
  Mit Zitat antworten Zitat
Cyf

Registriert seit: 30. Mai 2008
407 Beiträge
 
Lazarus
 
#7

Re: Speicher überschreiben mit Inline ASM

  Alt 8. Feb 2009, 21:31
Er könnte eine Endlosschleife davorpatchen, dann eine Weile warten und alles andere dahinter patchen und zuletzt die Schleife beheben, dass ist allerdings sehr unsauber (zumal wohl nicht bekannt ist, wann der Codeblock sicher verlassen wurde) und die Variante mit der DLL ist eindeutig die bessere Lösung. Bei Veränderung des Codes ist auch zu beachten, dass der Code durchaus auch nochmal durchlaufen werden kann, falls sich der Beginn noch in der Prefetch befindet.
Man kann einen Barbier definieren als einen, der alle diejenigen rasiert, und nur diejenigen, die sich nicht selbst rasieren.
Rasiert sich der Barbier?
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#8

Re: Speicher überschreiben mit Inline ASM

  Alt 8. Feb 2009, 21:51
DLL-Injection löst aber das grundlegende Problem nicht, nicht zu wissen, ob der Opfercode gerade ausgeführt wird. Das kann man eigentlich nur tun, wenn man den anderen Prozess stoppt (sollte man können, wenn man schon Threads starten/Speicher verändern kann) und alle Threads inspiziert. Solange einer einen R/EIP in den Zielcode hat.. Das Prinzip dürfte bekannt sein.
  Mit Zitat antworten Zitat
mr_emre_d
(Gast)

n/a Beiträge
 
#9

Re: Speicher überschreiben mit Inline ASM

  Alt 2. Mai 2009, 05:08
Ich hab mal das Thema wieder neu aufgegriffen (aus Langeweile )

Im Anhang befindet sich ein Codesnippet - das leider als Trojaner erkannt wird / aber keins ist (Source mit dabei) - welches einfach eine Funktion in Notepad einintegriert.

MfG
Angehängte Dateien
Dateityp: rar codeinjection_967.rar (13,0 KB, 25x aufgerufen)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: Speicher überschreiben mit Inline ASM

  Alt 2. Mai 2009, 07:18
da wird die Heuristik zuschlagen. Ich nehme an, dass gerade der Vorgang der Codeinjection den Scanner zum Anschlagen bewegt.
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 05:18 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