OldSchoolHack

Register / Login English

code im einem prozess ausführen


icon code im einem prozess ausführen #1

Join Date: Apr 2013

Posts: 22

Hallo,
Also ich habe mit olly ein programm mir angeschaut und eine interessante Funktion gefunden.
So, nun möchte ich diese Funktion mit meinem Programm ausführen. Ich habe bei google zwei Möglichkeinten gefunden, wie das gehen soll. Eine Möglichkeit war in den Zielprozess eine Dll zu laden und die gewünschte Funktion mit inline asm ausführen. Das hat auch bei mir geklappt.
Die zweite Möglichkeit, die ich gefunden hab geht extern ohne dll, indem man eine Funktion erstellt, die dann diese "interessante" Funktion im Zielprozess ausführt, diese in den Zielprozesss schreibt und per CreateRemoteThread ausführt.
hier mein Ansatz der zweiten Möglichkeit, aber klappt irgendwie nicht..

Only registered and activated users can see links.

Last edited by capo1337 (Wed 1. May 2013, 17:53)

Reason: no reason given

icon #2

Join Date: Aug 2007

Posts: 8643

User-Rating:

199 positive
33 negative
TEXT Code:
  1. CreateRemoteThread(hProc, 0, 0, (LPTHREAD_START_ROUTINE)start,(LPVOID)cstr, 0, 0);
Du übergibst einen Zeiger auf cstr, der im Speicherbereich von deinem Programm liegt und nicht im Speicherbereich des Programms, in dem du die Funktion ausführen möchtest.
Damit bekommt die Funktion irgendeinen Müll übergeben und das Programm stürzt im besten Fall ab oder tötet kleine Kätzchen im schlechtestens Fall.


TEXT Code:
  1. DWORD funcsize = (DWORD)InteressanteFuncEx_end - (DWORD)InteressanteFuncEx;
Das kann funktionieren, muss aber nicht! Auf jeden Fall kann man sich nicht drauf verlassen.


Falls InteressanteFuncEx noch auf sonstigen Speicher in deinem normalen Speicherbereich zugreift, ist es sowieso vorbei mit der Methode.

greetz KN4CK3R

__________________

Hallo
icon #3

Join Date: Apr 2013

Posts: 22

ich hab versucht mein code soweit zu ändern, dass ich nicht auf nicht auf falschen Speicher zugreife, jedoch klappt das irgendwie nicht..
geht das auch anders?

Die InteressanteFuncEx besteht im wesentlichen aus:

TEXT Code:
  1. push 0
  2. push 0
  3. push 0
  4. push 0
  5. push 0
  6. push cstr
  7. call adresse
ich hatte lediglich noch die adresse berechnet, weil die Funktion in einer dll liegt.
geht auch vorher

Könnte ich nicht einfach die opcodes reinschreiben?
push 0 -> 6A 00
bei call blicke ich noch nicht durch was für die adresse rein soll
call adresse -> E8 ????????
icon #4

Join Date: Aug 2007

Posts: 8643

User-Rating:

199 positive
33 negative
das was du machst, ist die OPCodes reinschreiben.
Wenn da ein String gebraucht wird, musst du den auch erst in den anderen Prozess schreiben.

Jetzt siehst du auch, warum sich DLL Injektion durchgesetzt hat und nicht das von Hand rüberschreiben

greetz KN4CK3R

__________________

Hallo