C++ Pages

12/18/2013 19:22 Moritz99#16
Quote:
Originally Posted by Dr. Coxxy View Post
soweit ich das sehe wurden entsprechende stichwörter und auch schon ein lösungsweg beschrieben, trzd. scheint der TE nicht weiterzukommen - was wiederum zweifel an der sinnhaftigkeit seiner "lernmethode" aufkommen lässt.
warum ? O.o
Wenn ich es halt nicht verstehe und nicht weiß wie ich es in Code umsetzen kann?
12/21/2013 18:49 Moritz99#17
kann mir jemand weiterhelfen?
12/23/2013 22:01 Moritz99#18
also leute ich bin jetzt ordentlich weiter gekommen.
Functions:
Code:
#include <iostream>
#include <Windows.h>
#include <tlhelp32.h>
#include <Psapi.h>



void MsgBoxAddy(DWORD addy)
{
	char szBuffer[1024];
	sprintf(szBuffer, "Addy:", addy);
	MessageBox(NULL, szBuffer, "Title", MB_OK);

}



void WriteToMemory(uintptr_t addressToWrite, char* valueToWrite, int byteNum)
{
	
	unsigned long OldProtection;
	
	VirtualProtect((LPVOID)(addressToWrite), byteNum, PAGE_EXECUTE_READWRITE, &OldProtection);

	
	memcpy( (LPVOID)addressToWrite, valueToWrite, byteNum);

	
	VirtualProtect((LPVOID)(addressToWrite), byteNum, OldProtection, NULL);
}


DWORD FindPattern(PVOID base, SIZE_T regionssize, char *pattern, char *mask)
{
	
	

	
	DWORD base1 = (DWORD)base;
	DWORD size1 =  (DWORD)regionssize;

	
	DWORD patternLength = (DWORD)strlen(mask);

	for(DWORD i = 0; i < size1 - patternLength; i++)
	{
		bool found = true;
		for(DWORD j = 0; j < patternLength; j++)
		{
			
			found &= mask[j] == '?' || pattern[j] == *(char*)(base1 + i + j);
		}

		
		if(found) 
		{
			return base1 + i;
		}
	}

	return NULL;
} 

Source:
#include <Windows.h>
#include <iostream>  
#include "Functions.h"

using namespace std;
char AmmoOpCode[] = "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90";


void InitiateHooks()
{

	MEMORY_BASIC_INFORMATION memInfo;
	for (DWORD queryAddress = 0; queryAddress < 0x80000000;
		queryAddress += memInfo.RegionSize)
{
 if (!VirtualQuery(reinterpret_cast<LPCVOID>(queryAddress), &memInfo, sizeof(memInfo)))
  break;
 
 if (memInfo.Protect != 0x01) 
 {
DWORD ammoAddy = FindPattern(memInfo.BaseAddress,memInfo.RegionSize, 
		"\x89\x82\x00\x00\x00\x00\x8B\x4D\xF8\x8B\x01\x8B\x80\x00\x00\x00\x00\xFF\x50\x00\x89\x45\xF4\x8B\x45\xF8\x8B\x88\x00\x00\x00\x00\xE8\x00\x00\x00\x00\x89\x45\xF0\x8B\x4D\xF4\x8B\x55\xF0\x8B\x01\x8B\x40\x50\xFF\x10\x90\x90\x90\x8B\xE5\x5D\xC2\x04\x00\x00\x00\x00\x00\x00\xD0\x23\x32", "xx????xxxxxxx????xx?xxxxxxxx????x????xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
if (ammoAddy != 00)
{
	 MsgBoxAddy(ammoAddy);
	WriteToMemory(ammoAddy, AmmoOpCode, 70);
	break; 
}
}
}
}
#pragma endregion




BOOL WINAPI DllMain(
    HINSTANCE hinstDLL, 
    DWORD fdwReason,     
    LPVOID lpReserved)     
{
   
    switch(fdwReason)
    {
        case DLL_PROCESS_ATTACH:
         
            //MessageBoxA(NULL, "Erfolgreich!", "", 0);
			InitiateHooks();
            break;
    }
   
    return TRUE;
}
jetzt dachte ich: Yeah wird funktionieren.
Habe auch nochmal alles nach Fehler durchgeschaut und keine gefunden. leider wird keine Messagebox angezeigt ,was soviel heißt wie: Das Pattern wurde nicht gefunden.

Kann mir da jemand weiterhelfen? ich hab alles versucht, aber weiter komme ich nicht.
Danke :)
12/25/2013 12:36 Delinquenz#19
Ist das obere die Functions.h?
12/27/2013 20:22 Moritz99#20
Quote:
Originally Posted by Delinquenz View Post
Ist das obere die Functions.h?

ja :) sorry aber mr.smith musste es ja unbedingt editieren.. davor war der quellcode unterteilt. Der obere Teil ist die Functions.h schau mal im Quellcode irgendwo kommt dann:
Source
aber da komtm dann die Source
12/27/2013 21:09 snow#21
Code:
	for (DWORD queryAddress = 0; queryAddress < 0x80000000;
		queryAddress += memInfo.RegionSize)
{
 if (!VirtualQuery(reinterpret_cast<LPCVOID>(queryAddress), &memInfo, sizeof(memInfo)))
  break;
Sicher, dass VirtualQuery bei NULL als Adresse einen positiven Wert zurückgibt? Hast du schonmal überprüft, welche Memory Pages durchsucht werden?

Wenn du deinen Code in Zukunft mit dem [CODE] Tag postest, muss MrSm!th deinen Code übrigens auch nicht mehr editieren..
12/28/2013 00:50 Moritz99#22
hab jetzt:

in der txt file steht:

das ist zuwenig denke ich. also bricht es irgendwo ab. Wo muss ich die funktion getlasterror hinsetzen oder gibt es noch eine andere Möglichkeit?
Danke :)
12/28/2013 12:23 Tyrar#23
[Only registered and activated users can see links. Click Here To Register...]

Sollte recht genau beschreiben wann die Funktion anzuwenden ist.
Wir sind zwar hier um zu helfen, aber nicht für jedes winzige Problem das sich mit 2 Sekunden googlen selbst lösen lässt.
12/28/2013 13:40 Moritz99#24
Ja das weiß ich ja, aber ich war mir unsicher an welcher Stelle ich es genau hinsetzen soll.
12/28/2013 13:43 Padmak#25
Sagma.. dein Ernst?
Es steht genau dieser Satz drin: "You should call the GetLastError function immediately when a function's return value indicates that such a call will return useful data. That is because some functions call SetLastError with a zero when they succeed, wiping out the error code set by the most recently failed function."
Heißt: hinter der Funktion, die failed.
Wenn du es wirklich nicht weißt, dann halt einfach hinter alle WinAPI-Aufrufe die failen könnten

Padmak
12/28/2013 15:33 Moritz99#26
so?:
[Only registered and activated users can see links. Click Here To Register...]
12/28/2013 15:58 Dr. Coxxy#27
Quote:
Originally Posted by Moritz99 View Post
so?:
[Only registered and activated users can see links. Click Here To Register...]
hör auf zu copypasten, lern die sprache, werd älter, lies ein paar bücher, aber bitte, bitte, lass uns mit deiner blödheit in ruhe.
12/28/2013 16:01 Moritz99#28
Quote:
Originally Posted by Dr. Coxxy View Post
deiner blödheit
danke :D netter geht es nicht oder?
Nur weil du das schon lange machst und auch gut bist in Hacks musst du nicht gleich andere fertig machen ;)
12/29/2013 05:58 マルコ#29
Das hat nichts mit Hacks zu tun. Du kannst die Sprache nicht. So lange du kein C++ kannst, kannst du absolut überhaupt nichts machen, egal was du vor hast.
Sag mal bitte in eigenen Worten, wo du überall die Funktion in deinem Code deiner Meinung nach aufrufst und was sie an jeder einzelnen Stelle für einen Rückgabewert haben kann. Wenn du das schaffst sollte dir Coxxy's Reaktion klar sein und du darfst dich in Grund und Boden schämen.