Vai al contenuto

Rilevato Ad-Blocker. Per favore disabilita il tuo adblocker quando navighi su makerando.com - Non c'è nessun annuncio invasivo.

  • Chatbox

    You don't have permission to chat.
    Load More
Thejuster

DynRPG Hacked by Thejuster

Recommended Posts

Ma no!

Nei crediti sicuramente, ma all'avvio e molto snervante come cosa >_>

 

Sopratutto ogni volta che si testa il gioco.

 

Mettere un logo all'avvio e per me che non lo so esempio e come dire questo gioco e stato fatto da me o con il mio tool.

 

Mentre per i plug-in non dovrebbero esserci loghi o altro. Tanto gia compaiono le cartelle nella directory del gioco.

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Doh! XD

 

E cmq Cherry non può pretendere nulla.

Il tool non è suo.

 

Anzi per dirla tutta, ha anche violato il copyright  manomettendo il programma originale il ché non è permesso XD asd.

 

Cosa fa? denuncia per aver modificato una sua modifica ad un programma craccato? XD

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

devo ammettere però che è un gran figlio di .... bravo ragazzo XD

 

Ci avrà sputato veramente del sangue sopra, nel trovare tutti quei indirizzi ed accessi alla memoria.

 

Io ne ho trovati una decina, ma fanno qualcosina di più leggero.

esempio far muovere il pg dove si vuole, aprire shop quando si vuole ecc. ecc.

 

lui ha fatto qualcosa di eccezionale.

 

quando crei un plug-in gli viene assegnato un indirizzo esempio  0X0015587

la dll fà in modo che esempio.  

Se la battaglia ( Battle Start ) inizia all'indirizzo 0X18Fe1EA  lui ha fatto un trampolino

 

Anzichè continuare, prima va a chiamare la funzione del plugin

CALL 0X18Fe1EA 
# Metodo Cherry ->
JMP 0015587
RTN 8
# Ripresa della condizione normale

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Oddio fa cosi strano leggere trampolino XD

Sarà che a scuola gli abbiamo sempre chiamati jump, come per sintassi e non confonderci ulteriormente(confusione data perlopiù dalla puzza di alcol, che fuoriusciva dalla bocca del prof alle 8:30 del mattino :wacko: ).

E molto probabilmente lo conosce più lui di ojima quel tool XD

Se ti interessa la versione più aggiornata si trova qui: https://github.com/PepsiOtaku/DynRPG

Attualmente ci stanno mettendo mano pepsiotaku e Bugmenot

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

wow grandioso!

 

ci ho dato subito un occhiata.

Purtroppo non c'è quello che mi serviva veramente :( 

la libreria RPG è Closed-Source.

 

ed eccosi dimostrato ciò che volevo dire prima

void RPG::Screen::toggleLargeWindow(bool largeWindow) {
		asm volatile("call *%%esi"
			: "=a" (RPG::_eax), "=d" (RPG::_edx)
			: "S" (0x46B400), "a" (this), "d" (largeWindow)
			: "ecx", "cc", "memory");
	}

Questo è il trampolino.

come vedi da C++ si può utilizzare codice Assembly.

in questo caso ha modificato l'indirizzo 0x46B400 cambiando lo stack

da 0x000000 a 0x000001

 

nativamente il valore booleano corrisponde a 1 o 0

 

true = 1

false = 0

 

 

PICCOLA LEZIONE DI HACKING / REVERSING ENGINEER By Thejuster

 

voglio spiegarvi cosa fà.

 

questa funzione permette di mettere lo schermo pieno o schermo a finestra.

 

L'indirizzo 0x46B400 è riferito al Parent HWND

 

pre_1463499989__1.png

 

 

Abbiamo

 

PUSH ESI

 

ESI,EAX,ECX,EBX sono contenuti nello stack

 

le possiamo notare in alto a destra.

 

come potete vedere

 

EAX = 000000

 

significa false

 

quindi logicamente possiamo dire che abbiamo lo schermo ridotto.

 

Ora cosa fà il codice Assembly?

PUSH ESI
PUSH EDI
ADD ESP,-10
MOV ESI,EAX

Cherry mette in EAX ed in EDX  1 ( true)

 

L'assembly funziona diversamente dagli altri linguaggio.

Noi scherzosamente lo definiamo arabo.

Ma ironia della sorte funziona proprio così.

 

Legge da Destra verso Sinistra

 

Valore <- Variabile

 

Il valore và a sinistra mentre la variabile a destra.

 

Quindi al MOV ESI,EAX

 

il Valore EAX passa in ESI

quindi ESI diventa 1

 

a questo punto abbiamo il nostro schermo in full mode.

successivamente ci basta interpellare la chiamata all'indirizzo.

 

Più in basso alla screen,

c'è una chiamata di colore blu

CALL RPG_RT.00416140

l'indirizzo è  0x00416140

 

noterete che in corrispondenza di questa riga, c'è

 

Args2 = 000000F0

Args1 =

 

RPG_RT.CALL 00416140

 

cosa abbiamo in Args2?

L'assembly ci mostra che c'è già un valore dichiarato nello stack.

 

Ma in Args1 cosa abbiamo?

 

Tadatadà: 

PUSH EAX    ---------->  Args1

Traduzione:

Metti come argomento1  ( EAX Che ora vale 1 )

Dopo chiamami questa funzione RPG_RT.CALL 00416140

 

 

Se provassimo a tradurre il codice abbiamo un qualcosa del genere

PUSH EAX;
CALL RPG_RT.00416140

//---------

Maximizza(1);


public void Maximizza(int valore)
{

   if(valore == 1)
   {
    this.FullScreen = true;
   }else
   {
    this.FullScreen = false;
   }
}

Quindi possiamo dedurre che una volta che gli abbiamo inviato il valore 1 o 0

lui eseguirà questa chiamata e mettere lo schermo FULL o minimized.

 

Spero che il vostro Justaccio oscuro vi abbia chiarito un pò le idee :D

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Crea un account o accedi per lasciare un commento

You need to be a member in order to leave a comment

Crea un account

Iscriviti per un nuovo account nella nostra comunità. È facile!

Registra un nuovo account

Accedi

Sei già registrato? Accedi qui.

Accedi Ora

×