Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
Code Kitchen Allgemeines Coder-Forum rund um das Programmieren eigenständiger, ausführbarer Programme.

Funktion aus injecteter .dll über eine .exe aufrufen

Diskussion: Funktion aus injecteter .dll über eine .exe aufrufen im Forum Code Kitchen, in der Kategorie Software Home; Anzeige Hi, ich habe eine .dll, in der sich eine Funktion befindet, in der inline asm enthalten ist. Diese .dll ...

Antwort
Alt 27.03.11, 03:29   #1 (permalink)
 
Registriert seit: 12.03.11
friendlyhacker Leistung: Facit NTK
Likes: 1
Standard Funktion aus injecteter .dll über eine .exe aufrufen

Anzeige

Hi,

ich habe eine .dll, in der sich eine Funktion befindet, in der inline asm enthalten ist. Diese .dll injecte ich mit einem in c++ geschriebenen Injector. Die Funktion wird auch korrekt ausgeführt, aber nur einmal beim injecten eben. Jetzt möchte ich die Funktion aus der .dll über eine .exe oder z.B. über den Injector ausführen, und das nicht nur wenn die .dll injected wird.

Wie stelle ich so etwas an? Ich dachte da ein eine Art dllimport in meine .exe, um von dort aus die Funktion einfach aufrufen zu können, doch so einfach ist das ja leider nicht. Ist so etwas überhaupt so einfach möglich? Google spuckt mir leider nichts hilfreiches aus.

MfG


Geändert von friendlyhacker (27.03.11 um 17:38 Uhr)
friendlyhacker ist offline   Mit Zitat antworten
Alt 27.03.11, 10:41   #2 (permalink)
 
Registriert seit: 28.07.08
ArnoNühm Leistung: Z3
Likes: 1
Standard

ich versteh nicht zu 100%, was du vor hast. nen programmgrundgerüst wär sicher hilfreich, um das besser nachvollziehen zu können.

ich vermute mal, dein injector lädt die dll mit CreateRemotethread(bla,bla,bla,LoadLibrary,ptrToNa me,bla,bla) in irgendeinen prozess. dabei wird erstmal die dllMain ausgeführt.
ich versteh noch nicht ganz, wo dann ne exportierte funktion aus der dll ausgeführt wird.
gibt da mehrere möglichkeiten:
  • aufruf aus dllMain (einmalig)
  • dllMain erzeugt nen Thread, der die funktion gelegentlich ausführt
  • aufrufe werden in den prozesscode gepatcht
  • die funktion wird über den injector mit CreateRemoteThread im prozess ausgeführt
ArnoNühm ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 27.03.11, 12:35   #3 (permalink)
Themenstarter
 
Registriert seit: 12.03.11
friendlyhacker Leistung: Facit NTK
Likes: 1
Standard

ich habe 3 Datein:

- Injector.exe
- hook.dll
- Spiel.exe

Die in der hook.dll vorhandenen Funktion welche aus inline-asm code besteht, lade ich mithilfe meiner Injector.exe in ein Spiel (Spiel.exe), dort wird meine Funktion aus der hook.dll einmalig beim injecten aufgerufen/ausgeführt.

Nun möchte ich diese Funktion aus der hook.dll aber beliebig oft aufrufen, und das, indem ich sie von meiner Injector.exe aus aufrufe.

Ist das einfach via dllimport oder ähnlichem möglich oder welche Möglichkeiten gibt es da?


hier noch zum leichteren verständnis meine .dll

Code:
#include <windows.h>
#include "blub.h"

int __stdcall DllMain(_In_ void * _HDllHandle, _In_ unsigned _Reason, _In_opt_ void * _Reserved)
{
	if(DLL_PROCESS_ATTACH == _Reason)
	{
		Funktion (blub, bla)
	}
	return 1;
}
meine injector.exe, sieht aus wie jeder andere normale injector auch... und dann ist da eben noch das Spiel, indem ich die .dll mit der injector.exe injecte.

Geändert von friendlyhacker (27.03.11 um 14:36 Uhr)
friendlyhacker ist offline   Mit Zitat antworten
Alt 28.03.11, 00:38   #4 (permalink)
 
Registriert seit: 28.07.08
ArnoNühm Leistung: Z3
Likes: 1
Standard

das entspricht also dem 4. punkt in meiner liste.

am einfachsten geht das so:

für die funktion nen wrapper bauen, der die signatur DWORD func(DWORD) hat. dann kannst du sie ganz easy mit CreateRemoteThread aufrufen, ohne dass du vorher noch die paramter allocen musst.
nachster schritt ist dann in injector.exe die funktion mit CreateRemoteThread aufrufen. dazu musst du dir erstmal die adresse besorgen. die moduladresse der dll solltest du dir beim injecten schon gespeichert haben. da addierst du dann noch das funktionsoffset drauf und dann solltest du sie aufrufen können.
ArnoNühm ist offline   Mit Zitat antworten
Alt 28.03.11, 00:47   #5 (permalink)
Themenstarter
 
Registriert seit: 12.03.11
friendlyhacker Leistung: Facit NTK
Likes: 1
Standard

hmm so in etwa dachte ich mir das auch schon, dachte nur es gibt einen leichteren weg, meine funktion mit den parametern vom Injector aus direkt aufzurufen, so wie es bei einem dllimport möglich ist, also einfach direkt von meiner Injector.exe aus

Code:
 Funktion (5, 3);
aufzurufen.

trotzdem vielen dank für deine hilfe
friendlyhacker ist offline   Mit Zitat antworten
Alt 05.04.11, 08:30   #6 (permalink)
Themenstarter
 
Registriert seit: 12.03.11
friendlyhacker Leistung: Facit NTK
Likes: 1
Standard

eine frage habe ich noch dazu,
ich rufe meine injectete .dll funktion nun mit CreateRemoteThread auf. Die Funktion enthält ein Parameter also z.B. void Test (int Zahl).
Wie gesagt rufe ich mit CreateRemoteThread auf, und übergebe noch dazu den Parameter int Zahl, in hex also z.B. (LPVOID)0x4, für die dezimal zahl 4.

Die Funktion wurde durch die Injection mit der Zahl 8 vorher aufgerufen. Wenn ich jetzt die Funktion mit CreateRemoteThread mit 4 aufrufe, wird die Funktion trotzdem mit 8 aufgerufen, anstatt mit 4. Was ist ist jetzt das Problem?
friendlyhacker ist offline   Mit Zitat antworten
Alt 05.04.11, 19:03   #7 (permalink)
 
Registriert seit: 28.07.08
ArnoNühm Leistung: Z3
Likes: 1
Standard

ohne den aufrufcode und die funktion hab ich dazu leider keine idee.

btw. ist es dem compiler egal, ob du konstanten in hexadezimal, dezimal oder oktal eingibst. der code der rauskommt ist immer der gleiche.
ArnoNühm ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Software Home » Code Kitchen » Funktion aus injecteter .dll über eine .exe aufrufen
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

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



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61