[Tutorial] Gamehacking Howto I [Ger]

10/09/2009 15:51 MrSm!th#121
bin ja als admin angemeldet
da ist die schaltfläche "Als Administrator ausführen" nicht im Kontextmenü zu finden!
Und wie gesagt, er schreibt es ja in die Adresse! Beim zweiten Mal lesen Drücken, kommt ja der zuvor eingegebene Wert! Nur wird er nicht in Solitär übernommen, ist aber in die Adresse geschrieben worden!
Wie gesagt die richtige Adresse ist es auch; es könnte nur noch am Handle liegen, aber da ich damit nicht so viel Erfahrung habe, weiß ich nicht woran.

edit:
bitte sag mir wie man einen HWND in einer MsgBox ausgibt -.-"
ich bin schon stundenlang am googlen aber ich finde keine Möglichkeit, den HWND auszugeben, folglich kann ich nicht schauen, ob es am Handle liegt!
Und an Adminrechten kann es nicht liegen, da UAC aus ist und ich als Admin angemeldet bin!

edit: habs immernoch nicht, habe es aber geschafft, ihn in eine Editbox zu kriegen, wenigstens etwas^^ kann ein Hwnd so etwas wie 40c8a sein? ich hatte bis jetzt noch nie etwas damit zutun und weiß auch nicht wie ein hwnd aussehen kann =/

design is ja unwichtig habe die editboxen da hin getan wo platz ist! liegts am Handle? wie gesgat von Windowhandles habe ich noch nicht so viel Ahnung!
[Only registered and activated users can see links. Click Here To Register...]

hm also ProcID stimmt (auf dem screen ist sie in hex habe es aber schon auf dec geändert und sie ist richtig) beim anderen wie gesagt kA

code (überprüfng vorerst nur in lesen):

Code:
void CCEtrainerDlg::m_lesen(void)
{
	UpdateData(true);
	if (pWnd = CWnd::FindWindowExW(NULL,NULL,NULL,_T("Solitär"))) 
	    {
        
        hWnd = HWND(pWnd->GetSafeHwnd()); 
		m_hwnd.Format(_T("%x"),hWnd);
      
	unsigned long address1 = 0x00bf60f4;
    unsigned long offset = 0x2C;
	unsigned long offset2 = 0x10;
    unsigned long address2 ;
	unsigned long address3 ;
    int value ;
    DWORD numBytesRead;
	HANDLE hProc;
	DWORD procID;

	
	GetWindowThreadProcessId(hWnd,&procID);


	m_procID.Format(_T("%d"),procID);	
	

	hProc = OpenProcess(PROCESS_ALL_ACCESS,FALSE,procID);

	m_hproc.Format(_T("%x"),hProc);	

	ReadProcessMemory(hProc,(LPCVOID)address1,&address2,sizeof(long),&numBytesRead);

	address2 = address2+offset;


	address3 = address2+offset2;

	ReadProcessMemory(hProc,(LPCVOID)address3,&value,sizeof(int),&numBytesRead);

	m_Value.Format(_T("%i"),value); 

	UpdateData(false);

	CloseHandle(hProc);
	  }
	else
	{
    AfxMessageBox(_T("Fenster nicht gefunden!"));
    }  

}

void CCEtrainerDlg::m_schreiben(void)
{
	
    if (pWnd = CWnd::FindWindowExW(NULL,NULL,NULL,_T("Solitär"))) 
	{
        
        hWnd = HWND(pWnd->GetSafeHwnd()); 
		
        
    }
	else
	{
    AfxMessageBox(_T("Fenster nicht gefunden!"));
    }
    UpdateData(true);
    unsigned long address1 = 0x00bf60f4;
    unsigned long offset = 0x2C;
	unsigned long offset2 = 0x10;
    unsigned long address2 ;
	unsigned long address3 ;
    int value ;
	HANDLE hProc;
    DWORD numBytesRead;
    DWORD procID;

    GetWindowThreadProcessId(hWnd,&procID);
  

    hProc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, procID);
	

    ReadProcessMemory(hProc, (LPCVOID)address1, &address2, sizeof(long), &numBytesRead);
    address2 = address2+offset ;

    address3 = address2+offset2 ;
    
    value = _wtoi (m_Value);
    WriteProcessMemory(hProc,(LPVOID)address3,&value,sizeof(value),NULL);
    
    
    UpdateData(false);
    
    CloseHandle(hProc); 
}
10/11/2009 23:23 MrSm!th#122
bitte ich brauche echt hilfe das mal hinzubekommen!
bin als vollständiger system Administrator (der der eigentlich deaktiviert sein müsste) angemeldet, führe den Trainer als Admin aus und es passiert immernoch das selbe!
ProcId, hwnd sowie die Adresse ist richtig!
Der Sourcecode müsste auch richtig sein (?)
Es könnte nur am Handle liegen, aber das ist doch genau wie bei dir im Code gemacht =(
Einziger Hinweis vielleich: der handle ist immer cc ansonsten müsste alles richtig sein (?)
Hat keiner eine Idee?
Sry für Doppelpost aber anscheinend liest ja niemand den Thread
10/12/2009 10:20 Adroxxx#123
Hast du mal versucht die Anwendung neu zu machen? Das hatte ich bei MFC hin und wieder mal, dass anscheinend kein eindeutiger Fehler zu sehen ist, aber es nicht funktioniert hat. Nachdem ich dann die Anwendung neu gemacht habe, ging es dann.

Also am besten mal Anwendung neu machen.


Du könntest auch mal versuchen CWnd::FindWindowEx zu benutzten anstatt CWnd::FindWindowExW.

Du könntest auch mal eine andere Ziel Anwendung Probieren, anstatt Solitär mal FreeCell oder Hearts oder so nehmen.

Was du auch mal Probieren kannst, ist dem Prozess Debug Privilegien zu geben, wobei ich mir nicht vorstellen kann, dass es daran liegt, da ja ReadProcessMemory schon nicht Funktioniert bei dir.

PHP Code:
HANDLE hToken;
    
TOKEN_PRIVILEGES oldtp;
    
DWORD dwSize;
    
HANDLE hProc;
    
LUID luid;
    
TOKEN_PRIVILEGES tp;
 
    
hProc GetCurrentProcess();
 
    if (!
OpenProcessToken(hProcTOKEN_QUERY |
        
TOKEN_ADJUST_PRIVILEGES, &hToken))
        return;
 
    if (!
LookupPrivilegeValue(NULLSE_DEBUG_NAME, &luid))
    {
        
CloseHandle (hToken);
        return;
    }
 
    
ZeroMemory(&tpsizeof (tp));
 
    
tp.PrivilegeCount 1;
    
tp.Privileges[0].Luid luid;
    
tp.Privileges[0].Attributes SE_PRIVILEGE_ENABLED;
 
    if (!
AdjustTokenPrivileges (hTokenFALSE, &tpsizeof(TOKEN_PRIVILEGES),
        &
oldtp, &dwSize))
    {
        
CloseHandle(hToken); 
Schau mal in deinen Visual Studio Ordner, unter Common/Tools, da ist eine Spyxx.exe damit kannst du herausfinden, welches Handle ein Fenster hat.
10/13/2009 11:52 MrSm!th#124
habe ich schon alles ist richtig
es kann also allerhöchstens am Handle zum fesnter liegen also hProc =/
alles andere ist vollkommen richtig

irgendwie habe ich generell probleme mit mfc xD alles geht halb aber nix ganz
habe auch schon mal nen simplen texteditor gemacht und CFileDialog zum speichern verwendet!
speichern ging auch ohne probleme, nur wenn ich es dann wieder öffnen wollte, dann sagte er mit Zugriff verweigert (trotz Adminrechte) vielleicht ist das das selbe Problem, wie bei meinem Trainer, nur dass ich bei diesem keine Fehlermeldung bekomme =/
Naja ich werde es wohl nochmal versuchen und ansonsten mal mfc/VC neu installieren vielleicht ist irgendwo ein Fehler
naja danke für den Tipp
was genau bewirkt der Code?
10/13/2009 16:36 Adroxxx#125
Gibt dem Prozess debug privilegien.
10/13/2009 18:14 MrSm!th#126
Gibt es eigentlich eine Möglichkeit den Value vom Programm selbst suchen zu lassen? (ist mir klar dass es geht aber so mit meinen Mitteln^^)
Obwohl die Adresse nämlich grün ist, ist nach spätestens 2 reboots wieder anders =/

edit: geht mit dem code auch nicht =/
10/13/2009 18:28 testacc123#127
Würde dann logisch gesehen auch für webzen funktionieren wenn man gg weg lässt

dann könnte man den cooldown auf 1 bzw. 0 ändern oder nicht?
10/13/2009 18:58 fr3ddy#128
Quote:
Originally Posted by xhelloselm View Post
Gibt es eigentlich eine Möglichkeit den Value vom Programm selbst suchen zu lassen? (ist mir klar dass es geht aber so mit meinen Mitteln^^)
Obwohl die Adresse nämlich grün ist, ist nach spätestens 2 reboots wieder anders =/

edit: geht mit dem code auch nicht =/
ist bei mir das selbse hab den günen pointer , aber ändert sich speater wieder.
ich hab win vista
10/13/2009 21:57 Adroxxx#129
Dann nochmal BP drauf und nach dem Base Pointer suchen.
10/13/2009 22:35 MrSm!th#130
BP geht leider nicht =/
Wenn ich Attachen will, gibts nen Error und wenn ich über Olly starten will startet Solitär und crasht dann.
Ich habe langsam keine Lust mehr mich mit diesem anscheinend hacksicheren Spiel zu beschäftigen xD ich mach mit Pinnball weiter^^
Also versuche ich jetzt erst:
Neu schreiben und genau auf die rechte schauen
neu schreiben für Konsole (die hat mich noch nie im Stich gelassen)
neues Spiel versuchen
wenn ich bald seven hole dann muss ichs eh machen: VS neu installieren

wenns dann noch nicht klappt geb ichs auf -.-"
dann beschäftige ich mich weiterhin mit dem windows.h und hooking und vor allem dlls
die trainer können dann die anderen in autoit machen^^
10/14/2009 16:25 Magix92#131
Hab mal eine Frage, warum ist es so wichtig zuerst Punkte zu erspielen und dann erst auf die 0 warten und scannen?
Hängt es damit zusammen das beim "next Scan" nur die Einträge nach der Value gesucht werden die davor schon beim First Scan gefunden wurden?
10/14/2009 16:38 Adroxxx#132
Quote:
Originally Posted by Magix92 View Post
Hab mal eine Frage, warum ist es so wichtig zuerst Punkte zu erspielen und dann erst auf die 0 warten und scannen?
Hängt es damit zusammen das beim "next Scan" nur die Einträge nach der Value gesucht werden die davor schon beim First Scan gefunden wurden?
Hab niergens geschrieben, dass es wichtig ist.
Du kannst auch Solitär starte, CE starten und dann direkt erstmal nach 0 Suchen. Und dann bei Next Scan nach der geänderten Punktezahl.

Das ist schnuppe ;)
10/14/2009 16:58 Magix92#133
Quote:
Originally Posted by Adroxxx View Post
Hab niergens geschrieben, dass es wichtig ist.
Du kannst auch Solitär starte, CE starten und dann direkt erstmal nach 0 Suchen. Und dann bei Next Scan nach der geänderten Punktezahl.

Das ist schnuppe ;)
Aber 2 mal scannen muss ich sowieso oder?
Warum denn 2?
Warum nicht gleich einfach die "0" scannen ohne den Wert u ändern?
Irgendwie möchte ich das unbedingt wissen, Tutorial ist echt spitze!
10/14/2009 17:19 MrSm!th#134
weil beim 1. scann um die 500.000 ergebnisse kommen ;)
außerdem brauchst du ja die eine richtige adresse für den trainer
10/14/2009 17:28 Magix92#135
Okay, das habe ich mir eigentlich auch schon so gedacht.
Habs mal bei Pinball versucht, klappt wunderbar.

Super Tutorial ;)

Jetzt Noobfrage des Jahrhunderts: Warum macht man dann nicht einfach somit Geld in iwelchen Onlinegames hoch?
Engine wird detected oder...wäre ja sonst zu einfach :D