Domanda Risolto La locazione dei codici cambia ogni riavvio del gioco

DanyDollaro

Utente Electrum
14 Luglio 2018
148
41
58
138
Salve a tutti, mentre usavo Cheat Engine su un FPS offline, ho creato un'hack molto semplice che non facesse diminuire le munizioni nel caricatore, non le ho bloccate con i tasto "active" ma ho creato uno script che lo facesse, il problma è che al riavvio del gioco lo script non funzionava più, e l'unico modo per farlo era risalire all'indirizzo statico dell'addres delle munizioni e bloccarle da li ,e li va bene, il punto è che ci sono altri valori nel gioco, difficili da trovare su cui vorrei applicare uno script, ma al riavvio cambiano i codici e vi riporto un esempo sulle munizioni:
Codice:
alloc(newmem,2048,1946C79E)
label(returnhere)
label(originalcode)
label(exit)

newmem: //this is allocated memory, you have read,write,execute access
//place your code here

originalcode:
mov [rdi+000000D4],eax

exit:
jmp returnhere

1946C79E:
jmp newmem
nop
returnhere:
e dopo aver riavviato il gioco mi ritrovo quest'altro codice
Codice:
alloc(newmem,2048,1B589C8E)
label(returnhere)
label(originalcode)
label(exit)

newmem: //this is allocated memory, you have read,write,execute access
//place your code here

originalcode:
mov [rdi+000000D4],eax

exit:
jmp returnhere

1B589C8E:
jmp newmem
nop
returnhere:
qualcuno di voi saprebbe dirmi come mai faccia cosi? e c'è un modo per salvare definitivamente lo script?
 
Ultima modifica:
(Dopo averlo capito...)
Mi rispondo da solo, il problema come ho detto è che la locazione dei codici cambia ogni riavvio e quindi dato che un normale code injection ha il codice già settato ogni riavvio cerca sempre lo stesso codice (ma dato che è cambiato non riesce a trovarlo), alla fine risolsi il problema con un "AOB injection" dato questo tipo di iniezione creca il coidice tramite i suo arry of bits e sono riuscito a farlo funzionare anche dopo il riavvio

Aggiornamento: nel caso non funzionasse neanche con un AOB injection, vuol dire che è cambiato pure l'arry del codice, ma c'è un modo per cercarlo lo stesso, ovvero usando i caratteri jolly, qui sotto riporterò alcuni esempi:

in CE lo scanner risulterà cosi:
aobscan(INJECT,89 87 D4 00 00 00 48 8B CF)
questa stringa di codice dice a CE di cercare il seguente array 89 87 D4 B7 00 00 48 8B CF

e se dopo il riavvio cambiasse:
89 A1 00 B7 89 48 8B

si dovrebbe sostituire i bit cambiati con i caratteri jolly:
89 ?? ?? B7 ?? 48 8B

dato che CE capià che quie bit possono cambiare
 
  • Mi piace
Reazioni: Kolo93