La scorsa volta, Abbiamo appreso qualche argomento basilare riguardante il linguaggio Assembly.
Ripeto però, che per poter moddare programmi o giochi, c'è bisogno di una conoscenza elevata di diversi linguaggi.
In questa lezione, iniziamo a fare sul serio :)
Apprenderemo come eseguire una mod / Patch di un programma.
Realizzeremo un Patch in C#.
Essi, proprio in C#.
Per un solo motivo, Per farvi capire che il C# non scherza nemmeno lui :P
Ho già preparato l'occorrente per questa lezione, e scritto 2 programmini ad hoc.
Cosa ci occore?
1) Strumento di Debugger
Abbiamo bisogno di Ollydbg o IDA., Consiglio Ollydbg per i newbie.
Io uso ADA per risalire anche ai vari namling delle librerie.
Download Ollydgb
http://www.ollydbg.de/download.htm
2) Strumento di editor Esadecimale
Come secondo tool, ci serve un buon editor esadecimale. ( HEX Editor )
vi consiglio
http://www.hhdsoftwa...free-hex-editor
3) Visual C#
Scaricabile dal sito di microsoft
4) Materiale per questa lezione
http://www.mediafire...2/Lezione_2.rar
Cosa contiene il rar?
Contiene un programmino che ho scritto apposta in C++.
Il programmino simula lo status di un gioco. All'avvio è impostato su Schermata del titolo.
poi effettuando delle scelte, possiamo spostarci tipo in battaglia, shop, gioco, ecc. ecc.
Il nostro scopo è quello di modificare il programma, facendogli fare ciò che diciamo noi e non quello per la quale
è stato programmato.
Cosa dobbiamo fare?
Il programma contiene un modulo segreto. che ci mostrerà un messaggio nel caso riusciamo a chiamare quel metodo.
Invece, normalmente, non è stato programmato per eseguire quel metodo. Noi invece dobbiamo trovare il modo
di fargli attivare quel metodo nascosto.
All'interno trovate 3 file exe.
Hidden Quest (Moddato).exe
Questo è l'exe moddato. Sarà il risultato finale se riusciamo nell'impresa.
Hidden Quest.exe
E' l'exe originale senza mod
Hidden Quest Patcher.exe
E' il mio programma per patchare Hidden Quest.
Una volta che ho scoperto come attivare il modulo segreto, ho ricavato gli indirizzi ed i relativi Offset.
Successivamente, ho modificato il DUMP di memoria del file e gli ho detto di fare questo invece di quello.
C'è la possibilità sia di Patchare l'exe che riportarlo allo stato originale :)
E poi c'è la cartella sorgenti.
Dove c'è anche la mia soluzione.
Ma vi consiglio di non vedere la soluzione. Dobbiamo arrivarci noi.
Se invece non ci riuscite, potete guardare io come ho fatto.
LIVELLO PER PROGRAMMATORE ESPERTO: FACILE
LIVELLO PER NEWBIE : MEDIO / FACILE
Tempo impiegato per la soluzione: 10 minuti
Tempo totale (modifiche e creazione patcher) : 20 minuti
-----------------------------------------------------------------------------
Sorgente del programma principale
#include <iostream> #include <conio.h> using namespace std; int avvio = 1; void Funzione1() { cout << "-------------------------------------" << endl; cout << "Questo e' il metodo pubblico, normalmente chiamato dall'applicazione" << endl; cout << "Prova a scroprire il metodo segreto..." << endl; cout << "Su avanti, invece di far apparire questo testo cerca di far apparire il testo contenuto nel metodo segreto" << endl; getch(); } void Funzione2() { cout << "-------------------------------------" << endl; cout << "Complimenti! hai moddato correttamente il programma" << endl; cout << "Questo e' il metodo segreto, il cui si attiva solo patchando il programma" << endl; cout << "Congratulazioni :)" << endl; getch(); } int main() { cout << "+----------------------------------" << endl; cout << "| Lezione di livello semplicissimo " << endl; cout << "+----------------------------------" << endl; cout << "\n\n" << endl; cout << "Questo programma ha 2 funzioni, una pubblica ed una nascosta." << endl; cout << "Normalmente e' stato programmato per avviare la funzione pubblica." << endl; cout << "Riesci a moddare questa applicazione e facendo avviare il metodo nascosto invece del pubblico?" << endl; cout << "\n\nPremi INVIO per avviare" << endl; getch(); if(avvio == 1) { Funzione1(); } if(avvio == 2) { Funzione2(); } return 0; }
Ricordate gli insegnamenti della prima lezione,
Usate la vostra fantasia, spremete il cervello e cercate di riuscire a moddare questo programma.
Il consiglio che vi dò, e di ricordavi dei termini e descrizioni della prima lezione.
Sopratutto, come chiamare i metodi e funzioni in assembly.
Se non ci riuscite entro questa sera,
La soluzione e spiegazione dettagliata ve la mando questa sera con calma :)
Se invece ci riuscite,
Spiegate come avete fatto passo passo.
Buona Fortuna.
Modificato da Thejuster, 19 May 2016 - 10:59 AM.