ASM LockMob 3 funzioni => 1 CodeCave

Stato
Discussione chiusa ad ulteriori risposte.

xXStephXx

Utente Electrum
28 Aprile 2008
389
16
1
125
Ultima modifica:
Anche questa è una mia discussione OLD e inutile... Fino a mo il lock mob l'ho fatto prendendo spunto dal modulo originale di Gex.. Ma giorni fa, rifacendolo per LocMt2, ho visto che anzichè 3 code-cave lunghi, è sintetizzabile in un'unica funzione... Tanto come potete vedere, nella funzione di movimento, il RET sta dopo le Y e dopo le Z.. Per cui quando vi muovete.. anche se vi muovete SOLO lungo le X, vengono chiamate anche le Y e le Z in quanto il ret è alla fine di tutto...
Questa è la funzione personalizzata..
Codice:
[00600144] = 47611598
[0060014a] = C7416596
[00600153] = 46980400
;Ovviamente scrivo i valori sui 3 address tramite WriteProcessMemory
///
0060015D - mov eax,[00600144] ; 47611598 <-X value
00600162 - mov [esi+000003a8],eax ;aggiorno le X
00600168 - mov ecx,[0060014a] ; C7416596 <- Y value
0060016E - mov [esi+000003ac],ecx ;aggiorno le Y
00600174 - mov edx,[00600153] ; 46980400 <- Z Value
0060017A - mov [esi+000003b0],edx ;aggiorno Z
00600180 - pop edi ; tolgo edi (perchè nell'originale lo toglie in questo punto)
00600181 - jmp 004ef0df ;ritorno
00600186 - nop

Adesso jumpate da qui:

Codice:
004EF0C6 - jmp 0060015d ;salto alla funzione mia
004EF0CB - nop
004EF0CC - mov ecx,[edi+04]
004EF0CF - mov [esi+000003ac],ecx
004EF0D5 - mov edx,[edi+08]
004EF0D8 - pop edi ;ecco qua che toglie edi, come detto sopra
004EF0D9 - mov [esi+000003b0],edx
004EF0DF - mov [esi+000003cc],00000001 ;dopo l'esecuzione ritorno qua
;con un unico code-cave ho settato tutte e tre le coordinate della procedura su quelle del mio pg

Di norma la funzione viene chiamata ogni volta che un' entità nel gioco compie uno spostamento.. La funzione prende come parametro un puntatore all'entità e ne aggiorna le coordinate con quelle nuove...
Nella funzione personalizzata, anzichè scrivere nell'entità le coordinate di quell'entità, ci scrive le mie, così appena si muove, viene chiamata la funzione e le coordinate si aggiornano (scrivendo le coordinate dove sto io).

Ormai è una cosa OLD, ma visto che fino a mo io ed altri la facevamo spezzettata in 3 parti, ho pensato di riunirla per far si che da ora in poi la uniamo tutti.. (sicuramente qualcuno la univa già da prima)...
In teoria avrei potuto usare anche solo eax per mettere una var dopo l'altra da mettere in esi+off... però per sfizio ho usato gli stessi registri usati nella funzione originale...

Working on LocMt2
 
Stato
Discussione chiusa ad ulteriori risposte.