Suche c++ dll Hacker

11/06/2011 10:03 supercracker13#1
Ich habe alle tuts mir durchgelesen wie man einen dll Hack erstellt
Aber bisher hat es noch nie gefunzt

Ich hoffe einer von euch kennt sich aus und kann mir helfen

Ich habe schon ein dll script
Also bin nicht bei ganz null aber das geht irgendwie nit

Wenns möglich wäre könnte sog jemand gerne bei mir melden
Und mir ein wenig unter die arme greifen

Einen injector habe ich schon mit c++ gemacht
Es fehlt nur noch die dll


Also bitte helft mir
11/06/2011 10:18 Dr. Coxxy#2
was willst du denn genau machen?
wenn du nen d3d hook machen willst, also eigene sachen auf das spiel draufzeichnen willst:
[Only registered and activated users can see links. Click Here To Register...]

ansonsten wird das meiste sehr game konkret.
kannst halt funktionen per detours:
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]
auf deine eigenen funktionen umlenken.
hast außerdem vollzugriff auf den speicher, kannst also mit memcpy direkt in den speicher schreiben etc...

weiß ja nicht, wie gut du schon c/c++/asm/reversing kannst...
wird dich eventuell überfordern...
11/06/2011 11:44 supercracker13#3
Nein ich will keinen d3d hook
Man kann ruhig mit Tasten arbeiten

Aber ich brauche jemanden der mir bei nem script hilft
Dll Hack Script

Am besten jemand der mir bei teamviewer helfen kann
11/06/2011 12:29 Medix#4
Wie wärs mit m code beispiel ? Poste einfach code von dir und wir sagen dir wo s hängt.
11/06/2011 12:36 supercracker13#5
Also ich hab schon einige tuts gewälzt
und auch schon versucht einen Injector zu machen
hier ist der code vom injector

Quote:
#include "windows.h"
#include <iostream>

using namespace std;

char const Path[]="C:\Users\Georg\Desktop\Hack.dll";

int main(int argc, char* argv)
{
HANDLE hWnd, hProcess, AllocAdresse, hRemoteThread;
DWORD PID;

hWnd = FindWindow(0,"4story");
GetWindowThreadProcessId((HWND)hWnd, &PID);

hProcess = OpenProcess(PROCESS_ALL_ACCESS, false, PID);

AllocAdresse = VirtualAllocEx(hProcess, 0, sizeof(Path), MEM_COMMIT, PAGE_EXECUTE_READWRITE);
WriteProcessMemory(hProcess, (void*)AllocAdresse, (void*)Path, sizeof(Path), 0);
hRemoteThread=CreateRemoteThread(hProcess, 0, 0, (LPTHREAD_START_ROUTINE) GetProcAddress(GetModuleHandle("kernel32.dll"),"Lo adLibraryA"), AllocAdresse, 0, 0);

WaitForSingleObject(hRemoteThread, INFINITE);

VirtualFreeEx(hProcess, AllocAdresse, sizeof(Path), MEM_DECOMMIT);
CloseHandle(hProcess);
}
11/06/2011 12:49 .Infinite#6
< 20 sek. Suche:

[Only registered and activated users can see links. Click Here To Register...]
11/06/2011 12:52 Dr. Coxxy#7
irgendwie scheint mir, du hast überhaupt keine ahnung was eine dll injection ist.
"dll-hack script"
was hat eine dll mit nem script zu tuen?
c++ ist keine scriptsprache.

ein d3d hook ist (in der regel) eine dll die im zielprozess läuft, also praktisch das, was du willst.

weiß jetzt nicht, was du überhaupt genau willst, wenn du wissen willst, wie eine dll aussieht:

Code:
// removed cause of noob @ te
mfg silver

edit:
@ infinite
lol, da hat er sogar schon vorher gepostet.

@supercracker13
(der name hätte mir eigtl schon zu denken geben müssen).
von mir gibts jetzt keine hilfe mehr, da du offensichtlich keine ahnung hast, worum es geht und wie eine dll injection funktioniert.
lügst uns hier auch noch an, dass du einen injector geschrieben hättest, dafür fehlt dir offensichtlich das nötige wissen.

komm wieder wenn du gelernt hast zu programmieren.
von mir gibts keine hilfe mehr für sowas.

source code auch removed.

gl & hf kthxbye
11/06/2011 12:56 .Infinite#8
Quote:
irgendwie scheint mir, du hast überhaupt keine ahnung was eine dll injection ist.
"dll-hack script"
Und genau da hilft ihm wahrscheinlich ein fertiger (und vor allem unkommentierter) code überhaupt nicht. Btw. ist das mit dem Log eigentlich unnötig. Zum debuggen lassen sich auch MessageBoxen verwenden. Für den allgemeinen Aufbau ist das nicht wichtig.

Quote:
ein d3d hook ist (in der regel) eine dll die im zielprozess läuft
Man kann Funktionen auch ohne dll hooken?
11/06/2011 13:10 Dr. Coxxy#9
Quote:
Originally Posted by .Infinite View Post
Und genau da hilft ihm wahrscheinlich ein fertiger (und vor allem unkommentierter) code überhaupt nicht. Btw. ist das mit dem Log eigentlich unnötig. Zum debuggen lassen sich auch MessageBoxen verwenden. Für den allgemeinen Aufbau ist das nicht wichtig.


Man kann Funktionen auch ohne dll hooken?
@ first:
fertiger unkommentierter code deswegen weil ich dachte, dass er eventuell probleme hätte überhaupt eine dllmain + den thread zu erstellen und sich nicht sicher ist, wie das aussehen muss.
ob msgboxen oder ein log besser ist, kann man sich lange drüber streiten...
dann kommt einer auch noch mit outputdebugstring etc. an und dann gehts hier richtig los...
ich bevorzuge eine logfile, und dann wenn ein fehler auftritt (sieht man ja dann im log) nen breakpoint an der stelle und mitm debugger durchschauen...
außerdem kann man diese outputs dann auch in dem fertigen release drinlassen, die dann über ne ini eingeschaltet werden können, und kann dann direkt aus den userlogs entnehmen was das problem ist.
logs sind eigtl auch nur drin, weil ichs von einem projekt von mir c+p habe...

@ ohne dll:
jop, proof of concept gibts in gamedecption forum.
kannst direkt per wpm deine detours reinschreiben^^
etwas komplizierter, aber geht :D
11/06/2011 13:16 yihaaa#10
Sicherlich kann man auch Funktionen ohne *.dll hooken. Du kopierst deine Funktion aus deinem Programm und schreibst diese dann mit das andere. Dann detourst du. Man muss jedoch mit Variablen Calls etc aufpassen. Variablem musst du natürlich extra in der .data Section anlegen und mit den Calls kommts immer ein bissel auf Programm an.

MfG
11/06/2011 13:28 XxharCs#11
Quote:
Originally Posted by supercracker13 View Post
Also ich hab schon einige tuts gewälzt
und auch schon versucht einen Injector zu machen
hier ist der code vom injector
Code:
#include "windows.h"
#include <iostream>

using namespace std;

char const Path[]="C:\Users\Georg\Desktop\Hack.dll";

int main(int argc, char* argv)
{
HANDLE hWnd, hProcess, AllocAdresse, hRemoteThread;
DWORD PID;

hWnd = FindWindow(0,"4story");
GetWindowThreadProcessId((HWND)hWnd, &PID);

hProcess = OpenProcess(PROCESS_ALL_ACCESS, false, PID);

AllocAdresse = VirtualAllocEx(hProcess, 0, sizeof(Path), MEM_COMMIT, PAGE_EXECUTE_READWRITE);
WriteProcessMemory(hProcess, (void*)AllocAdresse, (void*)Path, sizeof(Path), 0);
hRemoteThread=CreateRemoteThread(hProcess, 0, 0, (LPTHREAD_START_ROUTINE) GetProcAddress(GetModuleHandle("kernel32.dll"),"Lo adLibraryA"), AllocAdresse, 0, 0);

WaitForSingleObject(hRemoteThread, INFINITE);

VirtualFreeEx(hProcess, AllocAdresse, sizeof(Path), MEM_DECOMMIT);
CloseHandle(hProcess);
}
Debug Rechte machen :>
Code:
void SetDebugPrivilege() 
{
	HANDLE hProcess=GetCurrentProcess(), hToken;
	TOKEN_PRIVILEGES priv;
	LUID luid;

	OpenProcessToken(hProcess, TOKEN_ADJUST_PRIVILEGES, &hToken);


    priv.PrivilegeCount = 1;
	priv.Privileges[0].Luid = luid;
	priv.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
    AdjustTokenPrivileges(hToken, false, &priv, 0, 0, 0);

	CloseHandle(hToken); 
}

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

using namespace std;

char const Path[]="C:\Users\Georg\Desktop\Hack.dll";

int main(int argc, char* argv)
{
HANDLE hWnd, hProcess, AllocAdresse, hRemoteThread;
DWORD PID;

hWnd = FindWindow(0,"4story");
GetWindowThreadProcessId((HWND)hWnd, &PID);

SetDebugPrivilege();

hProcess = OpenProcess(PROCESS_ALL_ACCESS, false, PID);

AllocAdresse = VirtualAllocEx(hProcess, 0, sizeof(Path), MEM_COMMIT, PAGE_EXECUTE_READWRITE);
WriteProcessMemory(hProcess, (void*)AllocAdresse, (void*)Path, sizeof(Path), 0);
hRemoteThread=CreateRemoteThread(hProcess, 0, 0, (LPTHREAD_START_ROUTINE) GetProcAddress(GetModuleHandle("kernel32.dll"),"Lo adLibraryA"), AllocAdresse, 0, 0);

WaitForSingleObject(hRemoteThread, INFINITE);

VirtualFreeEx(hProcess, AllocAdresse, sizeof(Path), MEM_DECOMMIT);
CloseHandle(hProcess);
}
11/06/2011 13:34 supercracker13#12
Danke XxharCs aber viel wichtiger als der Injector wäre mir die dll

Ich hab mir dein tut schon sehr oft durchgelesen
aber das problem war das ich immer einen error rausbekam

darum wollte ich dich mal fragen ob du mir das per teamviewer oder so zeigen kannst
wäre echt nett von dir
11/06/2011 13:42 XxharCs#13
was fürn error ? :o
11/06/2011 14:03 supercracker13#14
Das ist noch das ungeänderte dll script aus deinem tut

Quote:
/*
*Wir inkludieren die "stdafx.h und iostream(=input output)
*ist aber nicht nötig^^
*/
#include "stdafx.h"
#include <iostream>

using namespace std;

DWORD BasePointer = 0; // Wir deklarieren den BasePointer und setzten ihm den Wert 0
#define Points 0x00000424 // Hier definieren wir unseren Offset des Pointers

bool State = false; // Brauchen wir später für das einschalten und auschalten des Hacks

void punkte() // unsere main funktion
{
if(State)
{
DWORD dwBasePointer = *(DWORD*)BasePointer; // Unser Pointer den wir als hilfe verwenden werden um einen Wert der Adresse hinzu zufügen
if(dwBasePointer != 0) // Wenn der Pointer nicht 0 ist wird der Wert zugewiesen
{
DWORD &dwPoints = *(DWORD*)(dwBasePointer + Points); // Hier machen wir eine neue Variable durch den Base Pointer und denn Offset und haben somit die Pointer Adresse

dwPoints = 4; // Hier bekommt der Pointer bzw. Adresse den Wert 4, 4 macht dann für dich einen ganzen set.
//Also ball durchlassen und du bekommst den Set (1:0)

}

}
else // Vom State, also deaktivieren wir hier den Hack
{
DWORD dwBasePointer = *(DWORD*)BasePointer; // machen wieder eine neue Variable wie oben
if(dwBasePointer != 0) // wenn der Pointer nicht 0 ist wird der Wert zugewiesen
{
DWORD &dwPoints = *(DWORD*)(dwBasePointer + Points); // wie oben definieren wir mithilfe des Pointers und Offsets die Adresse

dwPoints = 0; //setzt den wert 0, also ist der Hack deaktiviert

}
}
}

DWORD WINAPI HackThread(LPVOID unused)
{
//---Hier wird unser BasePointer ausgerechnet !
DWORD ImageBase = (DWORD)GetModuleHandle(0); //Die Image Adresse ist in diesem fall FT_Client, holen uns also den Module Handle
BasePointer = ImageBase + 0x003C5448; // Um den BasePointer zu bekommen nehmen wir die Image Adresse und unsere Modul Adresse
//---------------------------------------------

for(; ;) //Eine unendliche schleife weil wir die Adresse gefreezt haben wollen ;)
{
punkte(); //unsere main funktion wird ausgeführt
if(GetAsyncKeyState(VK_F1)&1)State =! State; // Mit F1 aktivieren und deaktivieren wir den Hack
Sleep(10);
}
}

BOOL WINAPI DllMain(HINSTANCE mod, DWORD DWORD_GRUND, LPVOID res)
{
switch(DWORD_GRUND)
{
case DLL_PROCESS_ATTACH: //Falls die dll erfolgreich injeziert wird
CreateThread(0, 0, &HackThread , 0, 0, 0); // Wir erstellen den Thread in dem dann später injezierten Process
break;
case DLL_PROCESS_DETACH: //Falls die dll den Process nicht mehr findet
MessageBoxA(0, "Not Loaded", "Info",0); //Eine Messagebox die sagt das dll nicht mehr geladen ist
break;
}
return TRUE;
}

wenn ich das compiliere (F7 drücke )

kommt follgendes raus

Fehler 2 error LNK1169: Mindestens ein mehrfach definiertes Symbol gefunden. C:\Users\Name\Documents\Visual Studio 2010\Projects\test\Debug\test.dll 1 test


Fehler 1 error LNK2005: _DllMain@12 ist bereits in dllmain.obj definiert. C:\Users\Name\Documents\Visual Studio 2010\Projects\test\test\test.obj test
11/06/2011 14:08 Medix#15
Code:
#include <windows.h>
bool WINAPI DllMain(HINSTANCE hInst,DWORD reason,LPVOID reserved) 
{
        switch(reason)
        {
        case DLL_PROCESS_ATTACH:

           MessageBox(0,"Hello World!",0,0);
	

                break;
        }
        return true;
}
hier das dll grundgerüst von dem kannst du aufbauen