sooo mein zweiter Thread ;D
Diesmal würd ich gern wissen ob es möglich ist direkt auf den speicher des Prozesses zuzugreifen in den eine dll injected wurde und möglicherweise sogar dessen Funktionen auszuführen?
ist doch so oder?
Für den Speicher zugriff brauchst du keine dll injection, dazu gibts die windows api, allerdings kannst du mit dll injection Prozessinterne Funktionen callen, wie des im detail geht weiss ich aber nicht, bei tsearch ist aber glaub ein tut dabei, wie man Funktionen in einem fremd programm über code injection nutzten kann, da war sowas mit nem beispiel prog, bei dem man dann ein zusätliches Fenster oder nen Button erstellt hat, also ist es möglich zb in WoW ein Menu deines Hacks einzubauen und auch WoWApi funktionen zu nutzen.
Für den Speicher zugriff brauchst du keine dll injection, dazu gibts die windows api
Mit der dll kannst du allerdings direkt auf den Speicher zugreifen wie das Programm selber, also ohne irgendwelche api aufrufe
ala "mov eax,[dword ptr blabla]" usw...
edit: Wenn das jetzt beispielsweise in integer-wert an der Stelle ist könnte man in C dann auch einfach das als Pointer dereferenzieren und hätte nen tollen Integer
@bot:
das ist mir schon klar ich will halt direkt auf den speicher der anwednung zugreifen - ist auf dem weg einfacher - find ich^^
muss ich sonst noch was beachten?
wenn ich jetzt tatsächlich ne dll injecte, und ich dann einfach schreibe:
CreateMonster(parameter) (angenommen das ist ne funktion ingame)
kann ich die dann einfach in meinem code schreiben, als sei sie da vorhanden oder muss ich da asm schreiben? oder in der selben sprache wie die anwendung.
//edit//
ich probiers einfach mal ;D
//edit2//
toll ich bekomme mit meinem PBcompiler nen error... versuch ichs mal mit C
linker error... verdammt.. der meckert immer, dass die funktion nicht vorhanden ist... dabei wird sie vorhanden sein... was muss ich da machen?
#include <stdio.h>
static int my_function(int a)
{
printf("my_function: %dn", a);
return (2*a + 3);
}
int main(void)
{
int (*new_function)(int) = my_function;
int x;
x = (*new_function)(10);
printf("main: %dn", x);
return 0;
}
du müsstest halt hier "int (*new_function)(int) = my_function;" anstelle von my_function die adresse schreiben
Gruß^^
ansonsten ließe sich das 1:1 übernehmen?! O.o
muss ich beim erstellen irgendwas beachten, wenn ich ne dll haben will? ich hatte nun versucht das mit asm hinzu bekommen....
aber es klappt nicht
Code:
/* Replace "dll.h" with the name of your header */
#include "dll_test.h"
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
DLLIMPORT void HelloWorld ()
{
char buchstabe = 'U';
__asm{
mov eax, buchstabe
push eax
call 01002A55
}
MessageBox (0, "Hello World from DLL!n", "Hi", MB_ICONINFORMATION);
}
BOOL APIENTRY DllMain (HINSTANCE hInst /* Library instance handle. */ ,
DWORD reason /* Reason this function is being called. */ ,
LPVOID reserved /* Not used. */ )
{
switch (reason)
{
case DLL_PROCESS_ATTACH:
break;
case DLL_PROCESS_DETACH:
break;
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
break;
}
/* Returns TRUE on success, FALSE on failure */
return TRUE;
}
nicht wundern - ist nen preset von DEV-Cpp zur erstellung von dlls.
ich hatte vorher die asm funtion in der Dllmain funktion...
aber leider meckert der compiler^^
vermutlich hab ich einfach noch nicht genug ahnung...
ich sollte vllt wieder in meinem Buch lesen...
ansonsten ließe sich das 1:1 übernehmen?! O.o
muss ich beim erstellen irgendwas beachten, wenn ich ne dll haben will? ich hatte nun versucht das mit asm hinzu bekommen....
aber es klappt nicht
Code:
/* Replace "dll.h" with the name of your header */
#include "dll_test.h"
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
DLLIMPORT void HelloWorld ()
{
char buchstabe = 'U';
__asm{
mov eax, buchstabe
push eax
call 01002A55
}
MessageBox (0, "Hello World from DLL!n", "Hi", MB_ICONINFORMATION);
}
BOOL APIENTRY DllMain (HINSTANCE hInst /* Library instance handle. */ ,
DWORD reason /* Reason this function is being called. */ ,
LPVOID reserved /* Not used. */ )
{
switch (reason)
{
case DLL_PROCESS_ATTACH:
break;
case DLL_PROCESS_DETACH:
break;
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
break;
}
/* Returns TRUE on success, FALSE on failure */
return TRUE;
}
nicht wundern - ist nen preset von DEV-Cpp zur erstellung von dlls.
ich hatte vorher die asm funtion in der Dllmain funktion...
aber leider meckert der compiler^^
vermutlich hab ich einfach noch nicht genug ahnung...
ich sollte vllt wieder in meinem Buch lesen...
Ich bin jetzt zwar kein Profi was Intel-ASM angeht (programmiere eigentlich mehr auf Microcontrollern) aber kann der Intel nen call auf einen imediate Wert? Ausserdem wuesste ich nun nicht wo du deine eigene Funktion aufrufst, die wird zwar in den Speicher geladen aber ausgefuert duerfte die nicht werden.
Wenn du mal bissel was testen willst mit den DLL's kannste dir ja auch mal einen Proxy fuer bereits existierende DLL's schreiben und damit bissel rumprobieren. (Dafuer musste dem Hautpprogramm "nur" eine andere DLL anstelle dem Original unterjubel und dann die calls in die originale DLL tunneln.)
Noch was bezueglich der Adresse der aufzurufenden Funktion: Die WinApi stellt dir eine Funktion bereit mit der du dir Adressen von Prozeduren holen kannst (GetProcAddress().
Ich bin jetzt zwar kein Profi was Intel-ASM angeht (programmiere eigentlich mehr auf Microcontrollern) aber kann der Intel nen call auf einen imediate Wert?
Aber sicher doch, die meisten calls sind sogar immediate. Meines Wissens gibts dazu noch indirekt über ein Register und indirekt über den Speicher. Mein schlaues Buch dazu ist leider in meiner Wohnung :<
Aber sicher doch, die meisten calls sind sogar immediate. Meines Wissens gibts dazu noch indirekt über ein Register und indirekt über den Speicher. Mein schlaues Buch dazu ist leider in meiner Wohnung :<
Über Speicher und Register kenn ich aber das mit dem imidiate haette ich nun nicht gedacht - naja wieder was gelernt
Frage zu c++ (dll injection) 09/20/2010 - C/C++ - 16 Replies Hallo,
ich habe es bereits geschafft eine selbstgeschriebene .dll zu injecten. Nun habe ich allerings das Problem, dass sich der erzeugt Thread nach dem automatischen Aufruf der Funktion"int __stdcall DllMain(_In_ void * _HDllHandle, _In_ unsigned _Reason, _In_opt_ void * _Reserved)"wieder schließt.
Ich möchte den Thread gerne so umprogrammieren, dass er jede Sekunde einmal ein paar Adressen aus dem injizierten Prozess ausliest (wie macht man das eigentlich? Mit Read & WriteProcessmemory?)...
Generelle Infos 03/20/2010 - CrossFire - 65 Replies Heyho! Ich sauge mir grade Crossfire.
Mein Vorhaben ist ein kleiner Hack.. dazu hätte ich aber gern ein paar Informationen von euch.
-Welches Anticheatsystem?
-Was wird gebannt?
-Unter welchen Umständen wird gebannt?
-Wird Injektion blockiert?
-Werden injezierte Module ejected?
-Muss gebypassed werden?
Generelle Fragen 07/17/2009 - Diablo 2 - 7 Replies Hi, da ich seit geraumer zeit nicht mehr gespielt habe und grade erst wieder reinkomme wollte ich nochmal um einige antworten bitte =)
also
welches programm benutzen für colored game names
welchen maphack benutzen
welchen Op channel bot benutzen?
welche op befehle gibt es noch ausser /kick und /ban/unban
wann endet diese ladder saison?
lg
Generelle Frage 01/29/2006 - General Gaming Discussion - 2 Replies wie findet man das Gültigkeitsdatum von kreditkartennummern raus, wenn man nur die kreditkarten nummer hat.
Ich weiß kein warez forum, aber weiß das einer wie man das raufinden kann oder geht das garnicht?