nochma nen prob

02/13/2009 14:00 Tyrar#1
also, ich bekomme meinen code (anscheinend) in den prozess, aber es bringt nix...
Code:
// DLL_Injection.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung.
//

//INCLUDES
#include "stdafx.h"

//DEFINITIONEN
typedef HINSTANCE (*fpLoadLibrary)(char*);
typedef LPVOID (*fpGetProcAddress)(HINSTANCE, char*);
typedef void (*fpFunktion)(void);

//STRUKTUREN
struct Injection
{
       fpLoadLibrary LoadLibrary;
       fpGetProcAddress GetProcAddress;
       char path[255];
       char func[255];
};

//THREAD
DWORD WINAPI threadstart(LPVOID addr)
{
	HINSTANCE hDll;
	fpFunktion funktion;
	Injection * is = (Injection*)addr;       
	hDll = is->LoadLibrary(is->path);
	funktion = (fpFunktion)is->GetProcAddress(hDll, is->func);
	funktion();
	return 0;
}

void threadend()
{
}

//MAIN
int _tmain(int argc, _TCHAR* argv[])
{
	try
	{
		HANDLE hProc;
		LPVOID start, thread;
		DWORD funcsize;
		HINSTANCE hDll;
		Injection is;
		DWORD id;
		hDll = LoadLibrary(L"KERNEL32");
		is.LoadLibrary = (fpLoadLibrary)GetProcAddress(hDll, "LoadLibraryA");
		is.GetProcAddress = (fpGetProcAddress)GetProcAddress(hDll, "GetProcAddress");
		strcpy_s(is.path, "InjectDll.dll");
		strcpy_s(is.func, "Funktion");
		funcsize = (DWORD)threadend-(DWORD)threadstart;
		printf("ID: ");
		scanf("%d", &id);
		hProc = OpenProcess(PROCESS_ALL_ACCESS, false, id);
		printf("Prozess Handle:       %x\n", hProc);
		start = VirtualAllocEx(hProc, 0, funcsize+sizeof(Injection), MEM_COMMIT, PAGE_EXECUTE_READWRITE);
		printf("Memory:               %x\n", start);
		WriteProcessMemory(hProc, start, (LPVOID)&is, sizeof(Injection), NULL);
		thread = (LPVOID)((DWORD)start+sizeof(Injection));
		WriteProcessMemory(hProc, thread, (LPVOID)threadstart, funcsize, NULL);
		CreateRemoteThread(hProc, 0, 0, (LPTHREAD_START_ROUTINE)thread, start, 0, 0);
		CloseHandle(hProc);
	}
	catch(char* ex)
	{
		printf("ERROR");
	}
	
	scanf("%s");
	return 0;
}
Code:
// dllmain.cpp : Definiert den Einstiegspunkt für die DLL-Anwendung.
#include "stdafx.h"

extern "C" void __declspec(dllexport) Funktion()
{
	HMODULE lib = 0;
	if(lib == 0) {
		lib = LoadLibraryA("HackDll.dll");
	}
	static FARPROC dllfunc = 0;
	if(dllfunc == 0) {
		dllfunc = GetProcAddress(lib,"MainHack");
	}
	int result;
	result = dllfunc();
}

BOOL APIENTRY DllMain( HMODULE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
					 )
{
	Funktion();
	switch (ul_reason_for_call)
	{
	case DLL_PROCESS_ATTACH:
	case DLL_THREAD_ATTACH:
	case DLL_THREAD_DETACH:
	case DLL_PROCESS_DETACH:
		break;
	}
	return TRUE;
}
Code:
// dllmain.cpp : Definiert den Einstiegspunkt für die DLL-Anwendung.
#include "stdafx.h"
#include <windows.h>

extern "C" void __declspec(dllexport) MainHack()
{
	HWND hwnd;
	hwnd = FindWindow(0,L"Solitär");
	DWORD Id;
	HANDLE ProcessHandle;
	int value;
	unsigned adress = 0xAB480;
	if(hwnd != 0) {
		value = 100000;
		GetWindowThreadProcessId(hwnd,&Id);
		ProcessHandle = OpenProcess(PROCESS_VM_WRITE |PROCESS_VM_OPERATION ,false,Id);
		WriteProcessMemory(ProcessHandle,(LPVOID)adress,(LPCVOID)value,sizeof(int),NULL);
	}
}

BOOL APIENTRY DllMain( HMODULE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
					 )
{
	switch (ul_reason_for_call)
	{
	case DLL_PROCESS_ATTACH:
	case DLL_THREAD_ATTACH:
	case DLL_THREAD_DETACH:
	case DLL_PROCESS_DETACH:
		break;
	}
	return TRUE;
}
fehler find ich keine, sollte mir bei solitär eigendlich 100k punkte draufpacken... funzt leider nich!
02/13/2009 16:51 schlurmann#2
Was soll auch passieren? Du machst ja nichts bei DLL_PROCESS_ATTACH...
02/13/2009 17:20 Tyrar#3
Quote:
Originally Posted by schlurmann View Post
Was soll auch passieren? Du machst ja nichts bei DLL_PROCESS_ATTACH...
hab nen pointer auf die func in der dll gelegt, die aufgerufen werden soll.
bei dll_process_attach passiert aber auch nix (zumindest nich als ich es mit WinExec versucht hab)
02/13/2009 17:22 jamesbon#4
wir kapierst du da was sag mal was des bringn sol wen dus shafst ^^
02/13/2009 17:32 Tyrar#5
Quote:
Originally Posted by jamesbon View Post
wir kapierst du da was sag mal was des bringn sol wen dus shafst ^^
der superhack den ich erstmal an solitär teste...
kann auf interne klassen in metin zugreifen, ohne von den gms erkannt zu werden!
02/14/2009 13:21 schlurmann#6
Wie wäre es mit ein bisschen Error Checking und einem Log der dir Fehler protokolliert?

Bist du dir sicher, dass die Adresse stimmt? Außerdem: Wenn du sowieso injectest ist WriteProcessMemory unnötig.

Ich finde das ganze auch äußert umständlich. Und warum du die Funktionen exportierst weiß ich auch nicht. Eine simple Dll tut's, die kannst du dann mit einem Injector deiner Wahl in/ejecten. Der Loader ist das letzte worum man sich kümmert.

Um ehrlich zu sein wirkt das ganze, als hättest du wenig Ahnung was du da tust.
02/14/2009 15:58 Tyrar#7
Quote:
Originally Posted by schlurmann View Post
Wie wäre es mit ein bisschen Error Checking und einem Log der dir Fehler protokolliert?

Bist du dir sicher, dass die Adresse stimmt? Außerdem: Wenn du sowieso injectest ist WriteProcessMemory unnötig.

Ich finde das ganze auch äußert umständlich. Und warum du die Funktionen exportierst weiß ich auch nicht. Eine simple Dll tut's, die kannst du dann mit einem Injector deiner Wahl in/ejecten. Der Loader ist das letzte worum man sich kümmert.

Um ehrlich zu sein wirkt das ganze, als hättest du wenig Ahnung was du da tust.
adresse stimmt.
und warum ich mit writeprocessmemory mache is dass ich in solitär keine klassen und so kenne.
hab auch schon nach fehlern geprüft, kam aber nix raus...
und ich exportier die funktionen weil ich sie hald noch von wo anders aufrufen will;)

ich probiers einfach nochmal aus der dllmain raus...
02/14/2009 16:32 schlurmann#8
Verdacht bestätigt. Du hast keine Ahnung.:p
02/14/2009 16:48 Bot_interesierter#9
Quote:
Originally Posted by schlurmann View Post
Verdacht bestätigt. Du hast keine Ahnung.:p
Sein Code ist auf jeden Fall sehr verworren, er Injiziert eine ThreadRoutine die seine InjectDLL laden soll und dann eine Funktion dieser DLL aufrufen soll, diese Funktion läd wiederum seine HackDLL und soll eine Funktion aus ihr Aufrufen.
Kp wozu er so einen Aufwand betreibt wenn er auch einfach seine Funktionen in der DLLMain aufrufen könnte.
Er muss die Funktionen übrigens Exportieren wenn er sie so Aufruft wie er es gezeigt hat, sonst würde ja GetProcAdress nicht funktionieren ^^
02/14/2009 16:57 schlurmann#10
//Ui Ui Ui ein Missgeschick
02/14/2009 16:58 schlurmann#11
Quote:
Originally Posted by Bot_interesierter View Post
Er muss die Funktionen übrigens Exportieren wenn er sie so Aufruft wie er es gezeigt hat, sonst würde ja GetProcAdress nicht funktionieren ^^
Natürlich weiß ich warum er sie in diesem Beispiel exportiert, nur das ganze ist, wie du schon sagst, total überflüssig.


Ich mache einfach mal einen Vorschlag:

Code:
#include <windows.h>

void* address = (void*)0xAB480;

int __stdcall DllMain(HMODULE hModule, DWORD reason, LPVOID lpReserved)
{
    if(DLL_PROCESS_ATTACH == reason)
        memset(address, 1337, sizeof(int));
    return 0;
}
Edit: Vielleicht noch vorher Schreibrechte setzen. ;)
03/17/2009 12:38 DjDYnamiC#12
Also ih ha von der ganzen Sache so gar keine Ahnung... Hab den thread nur zufällig gefunden...^^

Wofür sind die Codes was bezwecken die???

Was für hacks sind das???

kann mir das einer sgaen,pls?

wäre hilfreich...Oda ist das ein Mainhack?^^

Greetz

DjDYnamiC
03/17/2009 20:07 DjDYnamiC#13
Jaaa er hat ka ... Kagge ich auch nicht...^^:handsdown: