also, ich bekomme meinen code (anscheinend) in den prozess, aber es bringt nix...
fehler find ich keine, sollte mir bei solitär eigendlich 100k punkte draufpacken... funzt leider nich!
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;
}