Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - una domanda
Forum - C/C++ - una domanda

Avatar
Thejuster (Member)
Guru^2


Messaggi: 1704
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 20:48
Domenica, 22/03/2015
Ragazzi scusate la mia poca esperienza nel linguaggio c++

Volevo chiedere cosa fa esattamente questa righa?

  static RPG::SceneMenu *&menu = (**reinterpret_cast<RPG::SceneMenu ***>(0x4CDC60));

Vedo anche un doppio e triplo.puntatore

Ultima modifica effettuata da Thejuster il 22/03/2015 alle 20:50


PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6110
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 23:07
Domenica, 22/03/2015
Assegna a menu un riferimento all'indirizzo 0x4CDC60 (specificando che ci si aspetta di trovare un tipo RPG::SceneMenu).

Mi sfugge il motivo di tale decisione... forse qualcuno più esperto può chiarire.


Seguimi su Twitter: http://www.twitter.com/pierotofy

Fai quello che ti piace, e fallo bene.
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5475
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 10:03
Lunedì, 23/03/2015
L'hai preso da qui

http://rewtone.com/dynrpg/_scene_menu_8h_source.html

Presumo che sia un tool/plugin che permette di accedere ad un menu di un gioco sapendo dove sta in memoria quando questo viene eseguito.

Ovviamente può non valere più in seguito ad un semplice aggiornamento del gioco stesso.


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Avatar
Thejuster (Member)
Guru^2


Messaggi: 1704
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 10:36
Lunedì, 23/03/2015
Si in pratica è plugin da allegare a dei giochi rilasciati tramite un Engine.
Che permette di manipolare le scene di gioco.

Chiedevo come fà a sapere l'indirizzo di memoria di ogni scena?

ho provato a vedere tramite disassembler ma ci ho capito ben poco.

esempio vedo in una parte del codice:

Codice sorgente - presumibilmente C/C++

  1. asm volatile("call *%%esi" : : "S" (0x4C712C), "a" (0x4C605C), "d" (n) : "cc", "memory"); // welp



Volevo capire come ha fatto il tizio a risalire a quell'indirizzo di memoria.
o magari come fà a sapere come modificarlo.

Magari sono argomenti un pò troppo difficili per il mio livello attuale di conoscenza.
Visto che sono orientato nel sviluppare giochi e non a manomettere la memoria.

Ma è pura curiosità.
Mi sono chiesto come ha fatto?


PM Quote
Avatar
lumo (Member)
Expert


Messaggi: 413
Iscritto: 18/04/2010

Segnala al moderatore
Postato alle 18:35
Martedì, 24/03/2015
Sulla documentazione c'e' scritto che funziona solo usando GCC... suppongo anche una certa versione di GCC, altrimenti non saprei come abbia fatto a tirar fuori quei magic numbers

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5475
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 19:39
Martedì, 24/03/2015
Basta eseguire il gioco con un debugger ...


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote