|
You last visited: Today at 09:36
Advertisement
Funktionen ohne DLL aufrufen.
Discussion on Funktionen ohne DLL aufrufen. within the General Coding forum part of the Coders Den category.
06/05/2011, 23:12
|
#1
|
elite*gold: 0
Join Date: Aug 2009
Posts: 127
Received Thanks: 27
|
Funktionen ohne DLL aufrufen.
Moin.
Ich hatte letztens ein Tutorial im Internet gefunden, in dem beschrieben war, wie man Funktionen in einem Spiel oder Programm aufruft ohne eine DLL injection. Hat da vielleicht jemand eine ahnung von, ein tutorial oa.
Ist das überhaupt möglich oder war das Fake?..
Schönen abend noch.
TheRedVex
|
|
|
06/05/2011, 23:15
|
#2
|
elite*gold: 0
Join Date: May 2009
Posts: 827
Received Thanks: 471
|
Kommt drauf an. Wenn die Funktionen durch ein Event ausgelöst werden, kann man sie dadurch aufrufen, dass man das Event simuliert. Wird sicherlich passende Funktionen aus der WinAPI geben.
Anders kann ich mir das schlecht vorstellen.
|
|
|
06/06/2011, 02:15
|
#3
|
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,913
Received Thanks: 25,413
|
CreateRemoteThread + inline asm:
call zur funktion in asm schreiben
call in den prozess schreiben
CreateRemoteThread
ist aber deutlich mehr arbeit o.ô
|
|
|
06/06/2011, 12:51
|
#4
|
elite*gold: 0
Join Date: Mar 2008
Posts: 747
Received Thanks: 245
|
Quote:
Originally Posted by MrSm!th
CreateRemoteThread + inline asm:
call zur funktion in asm schreiben
call in den prozess schreiben
CreateRemoteThread
ist aber deutlich mehr arbeit o.ô
|
Die Funktion des Spiels direkt mit CreateRemoteThread aufrufen!
|
|
|
06/06/2011, 13:11
|
#5
|
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,913
Received Thanks: 25,413
|
geht nur, wenn sie höchstens einen parameter hat, ansonsten musst du den call und die pushes selbst schreiben und den remote thread erstellen
|
|
|
06/06/2011, 21:29
|
#6
|
elite*gold: 0
Join Date: Mar 2008
Posts: 747
Received Thanks: 245
|
Quote:
Originally Posted by MrSm!th
geht nur, wenn sie höchstens einen parameter hat, ansonsten musst du den call und die pushes selbst schreiben und den remote thread erstellen
|
Um mehrere Parameter zu übergeben kann man einfach die Parameter in ein Array schreiben und beim CreateRemoteThread aufruf die Adresse des Arrays übergeben.
|
|
|
06/06/2011, 21:48
|
#7
|
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,913
Received Thanks: 25,413
|
Ähm nö, dann wird ja nur die Adresse des Arrays übergeben.
Sehen wir uns mal folgendes Beispiel an:
Code:
int somefunc(int x, int y, int z)
{
return x+y*z;
}
Würde man nun CreateRemote mit einem Array aufrufen, würde es intern ungefähr so ablaufen:
Code:
int ArrayXYZ[3] = { 1, 2, 3 }; //das sei jetzt mal nicht statisch sondern dynamisch alloziiert
DWORD CallThreadEntryPoint( LPTHREADSTART_ROUTINE ThreadAddress, LPVOID param)
{
return ThreadAddress(param);
}
CallThreadEntryPoint(somefunc, ArrayXYZ); // ThreadAddress(ArrayXYZ) != ThreadAddress(ArrayXYZ[0], ArrayXYZ[1], ArrayXYZ[2]) da ja nur die Adresse, nicht aber der Inhalt des Arrays übergeben wird.
somefunc würde hier also falsche stackwerte nutzen ;O
|
|
|
06/06/2011, 21:53
|
#8
|
elite*gold: 0
Join Date: May 2009
Posts: 827
Received Thanks: 471
|
Quote:
|
Um mehrere Parameter zu übergeben kann man einfach die Parameter in ein Array schreiben und beim CreateRemoteThread aufruf die Adresse des Arrays übergeben.
|
My-Prototyp(Example):
Code:
bool __cdecl Bla(int* pI, int i, char* test, int len)
Ja, erstell mal dein Array :-/
EDIT: Definitiv zu lahm und nicht multitasking-fähig
|
|
|
06/06/2011, 22:40
|
#9
|
elite*gold: 0
Join Date: Mar 2008
Posts: 747
Received Thanks: 245
|
Quote:
Originally Posted by MrSm!th
Ähm nö, dann wird ja nur die Adresse des Arrays übergeben.
Sehen wir uns mal folgendes Beispiel an:
Code:
int somefunc(int x, int y, int z)
{
return x+y*z;
}
Würde man nun CreateRemote mit einem Array aufrufen, würde es intern ungefähr so ablaufen:
Code:
int ArrayXYZ[3] = { 1, 2, 3 }; //das sei jetzt mal nicht statisch sondern dynamisch alloziiert
DWORD CallThreadEntryPoint( LPTHREADSTART_ROUTINE ThreadAddress, LPVOID param)
{
return ThreadAddress(param);
}
CallThreadEntryPoint(somefunc, ArrayXYZ); // ThreadAddress(ArrayXYZ) != ThreadAddress(ArrayXYZ[0], ArrayXYZ[1], ArrayXYZ[2]) da ja nur die Adresse, nicht aber der Inhalt des Arrays übergeben wird.
somefunc würde hier also falsche stackwerte nutzen ;O
|
Ich hab im I-net aber schon öfters gelesen das man sie in einem Array ode struktur übergeben kann. Ich selbst injektiere für sowas einfach eine Dll von daher hab ich das selbst noch nie ausprobiert.
Hab auch gerade nochmal nen bisschen im web nachgeschaut, ansich geht es wohl schon aber nur mit erheblich mehraufwand.
|
|
|
06/06/2011, 22:45
|
#10
|
elite*gold: 0
Join Date: May 2009
Posts: 827
Received Thanks: 471
|
Natürlich kann man einen Pointer auf eine Strukur oder ein Array an einen Thread übergeben. Siehe den Thread-Prototyp:
Code:
DWORD WINAPI Thread(LPVOID)
Eine beliebige Funktion hat aber leider nur sehr selten den gleichen Protoyp, weswegen das so nicht funktionieren wird.
|
|
|
06/11/2011, 21:24
|
#11
|
elite*gold: 20
Join Date: Sep 2006
Posts: 1,100
Received Thanks: 184
|
Ein weiteres Problem bestehst darin das Öfters ein bestimmter Threadcontext für eine Funktion von Nöten ist, oder die Funktionen schlicht nicht Threadsicher sind, also kommt man um einen Detour an irgendeiner stelle nicht herum und das geht nunmal am einfachsten mit Dllinjection.
Es ist natürlich möglich mit Codeinjektion und Interprocesscomunication zu arbeiten, allerdings ist das absolut blödsinniger Mehraufwand, der im übrigen nicht mehr Sicherheit bietet als das sogenannte Manualmapping, bei dem die Dll nicht über die LoadLibrary API in den Prozess geladen wird, so dass bestimmte Strukturen die der WindowsAPI Auskunft über die DLL geben nicht erstellt werden.
|
|
|
06/13/2011, 18:13
|
#12
|
elite*gold: 0
Join Date: Apr 2006
Posts: 6,597
Received Thanks: 1,830
|
Machs mit dll injection. Macht die dinge um einiges leichter.
Dll injection heißt ja nicht gleich ,dass du gebannt wirst.
|
|
|
 |
Similar Threads
|
[Release]duffbier`s D3D NoMenu Base [D3D Funktionen/Normale Funktionen]
06/01/2011 - WarRock Hacks, Bots, Cheats & Exploits - 15 Replies
Hey Com.
Ich hab mich entschieden meine D3D NoMenu Base zu Releasen
In dieser kannst du normale Funktionen sowie D3D Funktionen adden
Screens:
http://img64.imageshack.us/img64/4444/screeenl.jp g
|
URL auslesen und aufrufen
03/13/2011 - AutoIt - 2 Replies
Hallo,
In ein Inputfeld kann man eine URL eingeben und wenn man auf den Button LOS! drückt soll er sie aufrufen, aber es passiert nichts.
Das Inputfeld:
$URL1 = GUICtrlCreateInput("", 32, 50, 200, 21)
Der Button:
$Button10 = GUICtrlCreateButton("LOS!", 250, 50)
In der While Schleife:
|
°*NEW Funktionen*° th3man0f22 NO MENÜ Public Hack°*NEW Funktionen*° 06.09.2010
09/06/2010 - WarRock Hacks, Bots, Cheats & Exploits - 2 Replies
Funktionen:
PLAYERPOINTER
¤SERVERPOINTER (Immer an)¤
¤NOSPREAD (Numm-Pad 7)¤
¤FULLBRIGHT (Numm-Pad 5)¤
¤EXTRAAMMO1 (Immer an)¤
¤EXTRAAMMO2 (Immer an)¤
¤SCOPE (Rechte Maustaste)¤
¤FASTAMMO (Immer an)¤
|
[VC++] Formular in Dll aufrufen
06/14/2009 - C/C++ - 9 Replies
Hi,
ich habe vor kurzem ein wenig mit C++ angefangen. Nun bin ich auf ein Problem gestoßen, bei dem mir auch Google nicht weiterhilft (wahrscheinlich benutze ich einfach nur die falschen Suchbegriffe).
Ich will eine Dll in einen anderen Prozess injecten und diese dann ein Formular öffnen lassen. In Delphi habe ich das mit folgendem Code hinbekommen:
begin
if appHandle = 0 then apphandle := GetActiveWindow;
Application.Handle := appHandle;
try
Form1 :=...
|
[Help] Items aufrufen ?
09/09/2008 - Flyff Private Server - 2 Replies
Hay,
habe mir nun paar items und mobs in die datenbank eingefügt.
aber wie rufe ich sie ingame ab ?
also das ich die suits und so bekommen ??
help pls !
|
All times are GMT +2. The time now is 09:36.
|
|