OldSchoolHack

Registrieren / Anmelden Deutsch

code im einem prozess ausführen


icon code im einem prozess ausführen #1

Anmeldungsdatum: Apr 2013

Beiträge: 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..

Um Links zu sehen, musst du dich registrieren

Zuletzt geändert von capo1337 (Mi 1. Mai 2013, 17:53)

Grund: kein Grund angegeben

icon #2

Anmeldungsdatum: Aug 2007

Beiträge: 8643

Benutzer-Bewertung:

199 positiv
33 negativ
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

Anmeldungsdatum: Apr 2013

Beiträge: 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

Anmeldungsdatum: Aug 2007

Beiträge: 8643

Benutzer-Bewertung:

199 positiv
33 negativ
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