Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > C/C++
You last visited: Today at 02:42

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Wie code ich n Patcher in c++ ?

Discussion on Wie code ich n Patcher in c++ ? within the C/C++ forum part of the Coders Den category.

Reply
 
Old   #1
 
t.burns's Avatar
 
elite*gold: 0
Join Date: May 2010
Posts: 71
Received Thanks: 28
Question Wie code ich n Patcher in c++ ?

Hiho ePvpers

erst mal will ich was los werden: Ihr seid sowas von krank, dass ihr mich voll angesteckt habt. Ich habe hier einige gute Tuts gefunden und hab es hingekriegt n kleinen Trainer zu coden (ShaiyaDE, Climb-,Speed-, Wall- und n Rangehack für Bogi / Jäger. Das Ganze hab ich in MFC/C++ realisiert und muss nun mal den Code bereinigen, da es in der Source aussieht wie n Saustall^^

Ich hab auch von euch gelernt, wie ich die game.exe patchen kann mit CE/OllyDbg.

Dafür ein fettes Thx an euch.

Nun zu meinem Probnlem:
Nach einigen Stunden Suchen und Lesen hab ich leider nix gefunden, was mir weiterhilft, die Patches zu automatisieren. Nach jedem Serverupdate muss ich all die Adressen manuell wieder suchen und in meiner Source anpassen (Könnte auch alternativ mit nem cfg-file gemacht werden).

Meine Idee: die game.exe importieren, die zu patchenden Stellen suchen und die "neue" Exe wieder speichern.

Bloss wie bekomm ich die Exe in einem lesbaren Format eingelesen?

Mein Ansatz (erst mal als Konsolenanwendung):
Code:
    fstream f;
    char cstring[256];
	f.open(filename, ios::in);
    while (!f.eof())
    {
        f.getline(cstring, sizeof(cstring));
        cout << cstring << endl;
    }
    f.close();
Wenn ich wenigstens den Input in ein Format wie in CE/OllyDbg (hex oder asm) bringen könnte, wär mir schon sehr geholfen. - Bloss wie?

Thx für eventuelle Hilfe
Attached Images
File Type: jpg multihack.jpg (22.9 KB, 90 views)
t.burns is offline  
Old 05/09/2011, 11:25   #2
 
meak1's Avatar
 
elite*gold: 220
Join Date: Jun 2007
Posts: 3,768
Received Thanks: 1,126


schau dir das mal an, dort ist erklärt wie man mithilfe von SearchPattern Pointer erstellt die nach Update jeweils auch weiterhin funktionieren.
meak1 is offline  
Thanks
1 User
Old 05/10/2011, 07:17   #3
 
t.burns's Avatar
 
elite*gold: 0
Join Date: May 2010
Posts: 71
Received Thanks: 28
woww, vielen Dank, hab schnell reingeschaut und einige neue Dinge gelernt. Werd am Abend mal genauer hinschauen. Das mit den Basepointern ist mir schon bekannt, aber das mit den Pattern eröffnet mir wohl einige neue Möglichkeiten

Ein fettes THX.
t.burns is offline  
Old 05/10/2011, 16:55   #4
 
xNopex's Avatar
 
elite*gold: 0
Join Date: May 2009
Posts: 827
Received Thanks: 471
Zu deinem Ansatz: Bitte im binary-mode einlesen! Hex darstellung wäre dann auch kein Problem mehr, du speicherst den Wert jedes Bytes (unsigned char) als unsigned int und gibst sie dann im Format deiner Wahl aus (Dec,Hex,Oct). Um das ganze dann so darzustellen, wie in Olly, müsstest du noch ne "asm-Lib" zu rate ziehen, die dir die Opcodes übersetzt, oder du programmierst das aufwendig selber.
xNopex is offline  
Thanks
1 User
Old 05/10/2011, 22:11   #5
 
t.burns's Avatar
 
elite*gold: 0
Join Date: May 2010
Posts: 71
Received Thanks: 28
Quote:
Originally Posted by xNopex View Post
Bitte im binary-mode einlesen!
Genau DA bin ich wohl gescheitert. Beim Einlesen Vergleichen einer Textdatei hat es funktioniert, bei ner EXE nicht. Und nun läuft es

Ich hab mich erst mal damit beschäftigt, 2 Files zu vergleichen. Ich werd das jedoch mal kurz so wie es is belassen und mal die Variante von meak1 durchgehn und schauen, ob ich das irgendwie bei mir einfliessen lassen kann.

btw, hier mal mein bisheriger Code:
Code:
#include <fstream> 
#include <iostream>  
#include <sys/stat.h>
#include <sys/types.h>

using namespace std;

//Deklaration der Funktionen
int dateigroesse(char dateiname[]);

//Deklaration der Variablen
struct stat buf;
char dateiname1[]="M:\\Tools\\game_original.exe";
char dateiname2[]="M:\\Tools\\game_patched.exe";
//char dateiname1[]="M:\\Tools\\Test1.txt";
//char dateiname2[]="M:\\Tools\\Test2.txt";


int main() { 
    
    // Deklaration der Variablen
    char ch1;
    char ch2;
    int countSpalte=0;
    int countZeile=0;
    int byteCount=0;
    
    int tmpData1=dateigroesse(dateiname1);
    int tmpData2=dateigroesse(dateiname2);
    int tmp=tmpData1-tmpData2;
    
    if(tmp>0)
    {
         tmp=tmpData1;
    }
     else
     {
         tmp=tmpData2;
     }   
          

    
    ofstream outFile;
    ifstream inFile1;
    ifstream inFile2;
    
   
    //BinFile: einzelne Bytes lesen-also HexEditor simuleren 
	inFile1.open(dateiname1,[B] ios::binary[/B]); 
    inFile2.open(dateiname2,[B] ios::binary[/B]); 

    inFile1.clear(); //resetet eof(), good(), fail(),... 
    inFile2.clear(); //resetet eof(), good(), fail(),... 
    //cout << endl << endl << "Inhalt von" << datei << ":" << endl;
    

    while (byteCount++ < tmp) { 

    inFile1.read((char*)&ch1, sizeof(char)); 
    inFile2.read((char*)&ch2, sizeof(char)); 
    //cout << hex << (int)(ch1 & 0xff) << " ";
    
    if(ch1!=ch2)
    {
         cout << "Diffefernz in Zeile " << countZeile 
         << ", Spalte " << countSpalte << endl;
    }
    
    if(++countSpalte==17)
    {
        //cout << endl << endl;
        countSpalte=0;
        countZeile++;
    }

    } 
    inFile1.close();  
    inFile2.close(); 
    
    cout << endl;
    system("PAUSE");
    return 0; 

    } 

    
int dateigroesse(char dateiname[])
{
    stat(dateiname,&buf);
    int groesse = buf.st_size;
    cout << "Dateigroesse von " << dateiname << ":" << groesse << endl;
    cout << "Letzte Aenderung:" << buf.st_mtime << endl;
    
    return groesse;
}
t.burns is offline  
Reply


Similar Threads Similar Threads
Patcher Fehler : CODE:12007 RESULT:2
01/15/2011 - Flyff Private Server - 5 Replies
Hey leute habe grade den patcher gemacht aber es kommt folgender fehler: Der Servername oder die Serveradresse konnte nicht verarbeitet werden. CODE:12007 RESULT:2 Was kann ich tun? Patchlog.txt:
Help FLYFF PATCHER FEHLER CODE:12007 RESULT:2
08/28/2010 - Flyff Private Server - 3 Replies
hi entschuldige mich schon mal fals es so einen thead schon gibt den ich habe nichts vernünftiges unter SUFU gefunden, also wenn ich meinen patcher starte kommt Der Servername oder die Serveradresse konnte nicht verarbeitet werden CODE:12007 RESULT:2 helft mir pls hab schon ausprobiert als admin auszufüren aber kan das häcken nicht machen XD



All times are GMT +2. The time now is 02:42.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.