VirtualAllocEx & CreateRemoteThread --> MessageBox
-
nur noch so als hinweis: deine sizeoffunc muss nicht klappen. es ist nicht garantiert, dass die eine funktion wirklich hinter der anderen im speicher liegt
greetz KN4CK3R
-
Dann mal danke an alle, es läuft nun alles Rund, habe es schon mit verschiedenen anderen Methoden aus User32 und Kernel32 getestet
KN4CK3R schrieb:
[...]deine sizeoffunc muss nicht klappen. es ist nicht garantiert, dass die eine funktion wirklich hinter der anderen im speicher liegt
Ist das so? Gibt's denn nen sichereren Weg?
PS.: Bin nich sooo oft hier, muss ich den Thread irgendwo als gelöst oder so markieren?
-
der "sicherste" Weg ist deine Funktion selbst zu disassemblen, um genau an die Adressen zu kommen (was hier aber sicher zu weit führt, gibts aber eine lib für). Ich komme aus der Cheaterszene und wir benutzen dafür sowas wie Labels um Funktionen vor einen Aufruf zu entschlüsseln bzw danach zu verschlüsseln. Problem an der Methode ist aber dass das Label erst nach dem Prolog einer Funktion auftaucht, es fehlt also ein Teil.
Für dich bietet es sich sicher an, deine Wrapperfunktion nicht in C zu schreiben sondern in Assembler. In dem Fall kannst du anschließend die Funktion in ein byte Array stecken und das per WPM im anderen Prozess anlegen.greetz KN4CK3R
-
Ok danke
Werde das so machen / versuchen!
-
KN4CK3R schrieb:
nur noch so als hinweis: deine sizeoffunc muss nicht klappen. es ist nicht garantiert, dass die eine funktion wirklich hinter der anderen im speicher liegtKN4CK3R
mag sein das es nicht standardisiert ist, aber kennst du eine Compiler, der die Funktionen umsortiere?
-
nein, aber möglich ist es aus PageFault Sicht schon, deswegen ja auch mein "muss nicht klappen"
greetz KN4CK3R
-
KN4CK3R schrieb:
aber möglich ist es aus PageFault Sicht schon
du meinst, dass eine page fault auftreten kann, wenn er die Funktion kopiert (lese zugriff)?
-
nein, dass immer ein PageFault auftreten würde, wenn die Funktion "weiter weg" liegt. Aber das wäre nur der Fall, wenn immer nur eine Page geladen werden könnte, ist also eher ein theoretisches Problem.
Aber auch ohne DAS Problem baut der VS Compiler nach Funktionen auch im Releasemodus oft unnötige INT3's ein, die er mit seiner Method mitkopiert dann.greetz KN4CK3R
-
KN4CK3R schrieb:
nein, dass immer ein PageFault auftreten würde, wenn die Funktion "weiter weg" liegt. Aber das wäre nur der Fall, wenn immer nur eine Page geladen werden könnte, ist also eher ein theoretisches Problem.
Wenn man davon ausgeht, dass die Funktion in der gleichen Ordnung vorlegen wie im Quellcode, dann kann ich überhaupt kein Problem erkennen. Die Funktionen müssen doch in pages liegen, die zu minnest lesbar sind - andernfalls wäre es ja nicht möglich, sie aufzurufen/auszuführen.
KN4CK3R schrieb:
Aber auch ohne DAS Problem baut der VS Compiler nach Funktionen auch im Releasemodus oft unnötige INT3's ein, die er mit seiner Method mitkopiert dann.
Diese INTs gehören nicht zur Funktion, sondern werden für das Algiment nachfolgender Funktion benutzt. Zusätzlich verhindern sie auch, dass es zur Ausführung kommt, wenn dort "versehentlich" hin gesprungen wird.
Ist aber auch völlig Egal ober er sie mit kopiert, da sie nie ausgeführt werden.
-
PageFault != nicht lesbar
wegen den INTs: ist mir schon klar, ich wollte nur darauf hinaus, dass er zuviel kopiertgreetz KN4CK3R