Speicheradresse finden mit Ollydbg / IDA Pro

07/27/2011 18:11 jackicola#1
Hi,
ich habe ein Spiel(Airrivals) welches seine PID schützt weshalb man es nicht mit Cheat Engine oder sonstwas öffnen kann ... Somit kann ich nicht einfach nach Values suchen.. Kann ich das auch irgendwie mit ollydbg/ida pro machen?

MFG!
07/27/2011 19:14 buFFy!#2
klar, mit ollydbg dumper. ist aber net so schön.
erste idee ist doch immer, die pid freizugeben, oder? ;)

wenn du mit ollydbg rankommst, kannst du ja nachschauen wo das ganze hakt.

ansonsten kannst du
1. Memory Hacking Software by L.Spiro probieren
2. einen simplen cheatengine nachbau als dll verpacken und injezieren (ce ist open src, da kannst du code rausrippen)
3. GetCurrentProcessId aus einer injezierten dll aufrufen.
07/27/2011 20:39 jackicola#3
Code:
#include "stdafx.h"
#include <iostream>
#include <string>
#include <fstream>
#include <sstream>
using namespace std;



BOOL APIENTRY DllMain( HMODULE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
					 )
{
	switch (ul_reason_for_call)
	{
	case DLL_PROCESS_ATTACH:
		{
	DWORD dW = GetCurrentProcessId();
	ostringstream os;
	os << dW;
	string s(os.str());
	MessageBoxA(NULL, s.c_str(), "PID", MB_OK);
		}
	case DLL_THREAD_ATTACH:
	case DLL_THREAD_DETACH:
	case DLL_PROCESS_DETACH:
		break;
	}
	return TRUE;
}
Ok ich habe es jetzt mit dieser DLL versucht aber wenn ich sie injiziere passiert nichts :(...
07/27/2011 21:25 buFFy!#4
herr gott! was für eine ide nutzt du denn? dein code format sieht jedes mal total schrecklich aus. wird die dll richtig injeziert?

probier das mal aus.
Code:
#include <windows.h>
#include <stdio.h>

void AllocateConsole(char* sTitle)
{
	FILE *fh;
	AllocConsole();
	freopen_s(&fh, "CONOUT$", "wb", stdout);
	SetConsoleTitleA(sTitle);
}

int __stdcall DllMain(_In_ HANDLE _HDllHandle, _In_ DWORD _Reason, _In_opt_ LPVOID _Reserved)
{
	if( _Reason == DLL_PROCESS_ATTACH )
	{
		DisableThreadLibraryCalls((HMODULE)_HDllHandle);
		AllocateConsole("debug");

		printf("0x%X\n", GetCurrentProcessId());

		return 1;
	}

	if( _Reason == DLL_PROCESS_DETACH )
		FreeConsole();
	return 0;
}
btw. kann ich, falls dus noch nicht verwendest, winject empfehlen
07/27/2011 22:24 jackicola#5
Dein Code funktioniert bei normalen Programmen, aber bei dem Spiel nicht. Kann das vielleicht am Hackshield liegen?
07/27/2011 22:33 buFFy!#6
Jop, kann es. Wird's wohl auch :rolleyes:
07/28/2011 00:02 jackicola#7
Und was habe ich dann noch fuer Moeglichkeiten an den ( fuer mich wichtigen ) Speicher ranzukommen? Sagen wir ich suche nach dem Wert 50, wie kann ich diesen num finden? MFG
07/28/2011 00:12 MrSm!th#8
Was ihr da versucht ist sinnlos, die PID bringt dir auch nichts, da der Prozess 100%ig geschützt ist, wenn er schon seine PID versteckt.

OpenProcess und/oder wenigstens Read/WriteProcessMemory wird failen und GetLastError wird Access Denied ausgeben ;O

Da hilft nur eine Dll Form von CE oder den Prozessschutz umgehen.

(ohne geeignete Plugins ist Olly btw. von dem Schutz auch betroffen, da es nur ein Usermode Debugger ist)
07/28/2011 10:42 buFFy!#9
Was heißt hier ihr? Ich hab doch gesagt protection knacken :/
07/28/2011 14:32 MrSm!th#10
Btw für das finden von speicheradressenwie mit ce gibts auch plugins.
07/28/2011 15:41 jackicola#11
Plugins für Olly?
07/28/2011 17:21 MrSm!th#12
Ja, falls du es nicht wusstest, Olly 1 unterstützt Plugins.

Olly 1 > Olly 2 ;O