PHP Forum - Coding Board
Juni 22, 2018, 08:26:06 *
Willkommen Gast. Bitte einloggen oder registrieren.

Einloggen mit Benutzername, Passwort und Sitzungslänge
News:
 
   Übersicht   Hilfe Suche Einloggen Registrieren  
Seiten: [1]
  Drucken  
Autor Thema: PinBall Punkte WriteLong ?  (Gelesen 191 mal)
0 Mitglieder und 1 Gast betrachten dieses Thema.
Kybernetik
Jr. Member
**
Beiträge: 70

484090778
Profil anzeigen WWW E-Mail
« am: März 23, 2009, 04:28:54 »

Nachdem ich nun erfolgreich herausgefunden hatte,
wie man Werte in 3D-Pinball für Windows - Space Cadet ändern kann,
mit Hilfe von "Cheat-Engine" hatte ich mir ein Gerüst geschrieben in C++,
mit dem ich mir die Arbeit von CheatEngine spare.

Ich habe folgende Werte herausgefunden für 1234567 Punkte.
                //0x00A52C14, 1234567
                //0x00BCAEBA, 1234567

>Hier mein unvollständiger Code...
>eventuell WriteLong ?
Code:
#include <windows.h>
#include <iostream>

using namespace std;

int main() {
    BYTE newvalue[] = {0x0};
    HWND hwnd = FindWindow(0, &quot;3D-Pinball für Windows - Space Cadet&quot;);//Fenstersuche
    DWORD pid;
    if(!hwnd) {//false
        cout << &quot;Error: Cannot find window!&quot; << endl;
    } else {//true
        GetWindowThreadProcessId(hwnd, &pid);//bekomme ID
        HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);//öffne Prozess
        if(!hProcess) {
            cout << &quot;Error: Can not open process&quot; << endl;//not open
        } else {
            do {
                Sleep(50);
                //0x00A52C14, 1234567
                //0x00BCAEBA, 1234567
            cout << &quot;Fin!&quot; << endl;//fertig
        }
    }
    system(&quot;pause&quot;);;
}

Gespeichert
2waen
Newbie
*
Beiträge: 2



Profil anzeigen E-Mail
« Antworten #1 am: März 24, 2009, 10:57:53 »

Ich würde es einfach mit WriteProcessMemory machen L&#228;chelnd

Ich habe einen anderen Weg genommen um die ID des Prozesses
herauszufinden. Mit CreateToolhelp32Snapshot kann man einen Snapshot
der aktiven Processe machen und dann einzelt durchgehen.
Ich finde es so einfacher zu handhaben. :X

Code:
#include <windows.h>
#include <Tlhelp32.h> // Für CreateToolhelp32Snapshot
#include <iostream>

using namespace std;

DWORD GetProcIdByName(char*);

int main()
{
    char patchproc[] = &quot;pinball.exe&quot;;
   
    DWORD pid = GetProcIdByName(patchproc);
    if(!pid){ // Falls pid == 0
            cout<<&quot;Cannot find process &quot;<<patchproc<<endl;
    }else{
        HANDLE hproc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid); // Hole handle für Process
        if(!hproc){
            cout << &quot;Failed to open process: &quot; << GetLastError() << endl;
        }else{
            Sleep(50);
            //0x00A52C14, 1234567
            //0x00BCAEBA, 1234567
            DWORD patch = 1234567;
               

            WriteProcessMemory(hproc, (BYTE*)0x00A52C14, (PVOID)&patch, sizeof(DWORD), 0);
            WriteProcessMemory(hproc, (BYTE*)0x00BCAEBA, (PVOID)&patch, sizeof(DWORD), 0);
               
            cout<<&quot;Wrote bytes!&quot;<<endl;
        }
    }
   
    cin.get();
    return 0;
}

DWORD GetProcIdByName(char *procname)
{
   HANDLE hproclist;
   PROCESSENTRY32 peproc;

   hproclist = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); // Erstelle Snapshot der Prozesse
   
   while(Process32Next(hproclist, &peproc)){
      if(strcmp(procname, peproc.szExeFile) == 0)
          return peproc.th32ProcessID; // Gibt die ID des gesuchten Prozesses zurück
   }

   return 0; // Process konnte nicht gefunden werden
}
Gespeichert
MrWellKnown
Newbie
*
Beiträge: 17


Profil anzeigen E-Mail
« Antworten #2 am: März 25, 2009, 12:39:11 »

code]DWORD dwGetProcIdByName( LPCSTR ccProcName )
{
   PROCESSENTRY32 peproc;
   peproc.dwSize = sizeof(PROCESSENTRY32);

   HANDLE hproclist = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 ); // Erstelle Snapshot der Prozesse
   
   while( Process32Next(hproclist, &peproc) )
   {
       if( !strcmp(ccProcName, peproc.szExeFile) )
       {
           CloseHandle( hproclist );
           return peproc.th32ProcessID; // Gibt die ID des gesuchten Prozesses zurück
       }
   }
   CloseHandle( hproclist );
   return 0; // Process konnte nicht gefunden werden
}[/code]

Achja und nach jedem cout den Manipulator 'endl' zu benutzen ist auch nicht so optimal, besser wäre einfach ein '\n'. endl flusht nämlich noch zusätzlich die Buffer..
Code:
DWORD dwGetProcIdByName( LPCSTR ccProcName )
{
   PROCESSENTRY32 peproc;
   peproc.dwSize = sizeof(PROCESSENTRY32);

   HANDLE hproclist = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 ); // Erstelle Snapshot der Prozesse
   
   while( Process32Next(hproclist, &peproc) )
   {
       if( !strcmp(ccProcName, peproc.szExeFile) )
       {
           CloseHandle( hproclist );
           return peproc.th32ProcessID; // Gibt die ID des gesuchten Prozesses zurück
       }
   }
   CloseHandle( hproclist );
   return 0; // Process konnte nicht gefunden werden
}


Achja und nach jedem cout den Manipulator 'endl' zu benutzen ist auch nicht so optimal, besser wäre einfach ein '\n'. endl flusht nämlich noch zusätzlich die Buffer...
Gespeichert
2waen
Newbie
*
Beiträge: 2



Profil anzeigen E-Mail
« Antworten #3 am: März 26, 2009, 10:08:54 »

Zitat von: MrWellKnown;16980
Die Formatierung sieht auch ziemlich schrecklich aus. :/

Jedem das seine Zwinkernd

Zitat von: MrWellKnown;16980
Gespeichert
MrWellKnown
Newbie
*
Beiträge: 17


Profil anzeigen E-Mail
« Antworten #4 am: März 26, 2009, 10:47:42 »

War auch keinesfalls böse gemeint. Nur konstruktive Kritik, wie man so schön sagt. :-)
Gespeichert
Seiten: [1]
  Drucken  
 
Gehe zu:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines | New Look by Nolt Prüfe XHTML 1.0 Prüfe CSS