Fundamenta Auto Assemblatoris: Scripta injectionis AOB in Cheat Engine intellegenda
Quid sit introitus scripti, quomodo [ENABLE] et [DISABLE] operentur, et exemplar injectionis AOB in Cheat Engine versu per versum explicatum: aobscanmodule, alloc, labels, symbola et wildcards.
Plurimi introitus utiles in tabulis cheat communicatis non sunt simplices valores, sed scripta: vita infinita, nulla recarcatio, fabricatio gratuita. Scribuntur in Auto Assemblatore Cheat Engine, formato scribendi parvo, quod assemblatorium x86 cum mandatis ad codicem inveniendum et mutandum coniungit. Hic ductus explicat quid tale scriptum faciat, exemplar injectionis AOB, quod Cheat Engine tibi generat, percurrit, et regulas tractat quae scriptum fidum reddunt.
Plus proficies, si iam scis quomodo valor inveniatur et quid sit pointer; ductus de pointer scanning illam rem tractat. Scripta codicem ludi currentis mutant, ergo ea tantum in ludis singularibus et offline adhibe, ante probationem serva, et exemplaria salvorum tuorum custodi.
Quid sit introitus scripti
Introitus scripti est elementum in indice electronicarum inscriptionum, cuius columna Valoris <script> ostendit. Loco valoris indicandi codicem Auto Assemblatoris continet. Si capsulam Active introitus signas, sectio scripti [ENABLE] currit; si signum removes, sectio [DISABLE] currit. Ductus de tabula cheat adhibenda hoc ex parte usoris tractat.
Scriptum typicum valorem non semel mutat. Mandatum ipsius ludi, quod valorem scribit, mutat, ergo effectus permanet dum scriptum activum est. Exempli gratia, mandatum quod vitam tuam novam post damnum condit, ad codicem redirigi potest qui maximum condat.
Scripta magnam utilitatem prae inscriptionibus simplicibus habent: scopum suum quaerendo formam bytorum in codice ludi inveniunt, ergo post reinitia sine ullo pointer operantur. Pretium est quod ab eo pendent ut codex idem maneat, quod ea ad versionem ludi alligat.
[ENABLE] et [DISABLE]
Omne scriptum commutabile utramque sectionem habet. [ENABLE] codicem invenit, memoriam pro novo codice assignat, et saltum a mandato ludi ad novum codicem scribit. [DISABLE] omnia resolvit: bytos originales rescribit, nomina registrata removet, et memoriam liberat. [DISABLE] bene scriptum ludum prorsus ut erat relinquit. Si deest aut errat, signum removendo ludus in statu mutato vel fracto manet donec eum reincipias.
Mandatum inveniendi et exemplar generandi
- Inveni valorem quem regere vis et adde eum ad indicem inscriptionum.
- Dextro bacillo preme et elige Find out what writes to this address. Fac ut valor in ludo mutetur. Unum vel plura mandata in indice apparent.
- Elige mandatum et aperi in disassemblatore (Memory Viewer).
- Mandato in Memory Viewer electo, aperi Tools → Auto Assemble.
- In fenestra Auto Assemble elige Template → AOB Injection. Confirma inscriptionem et accipe vel muta nomen symboli, quod per defaltam est
INJECT. - Scriptum recense, deinde menu File fenestrae utere ut id tabulae cheat currenti assignes. In indice inscriptionum ut novus introitus scripti apparet.
Exemplar injectionis AOB, versu per versum
Infra est exemplum structurae quam exemplar producit. Nomen processus, symbolum et byti ad illustrandum fincti sunt; hic non est codex ullius ludi veri.
{ EXAMPLE STRUCTURE ONLY - not code for a real game.
Process: game.exe Symbol: INJECT Bytes: made up }
[ENABLE]
aobscanmodule(INJECT,game.exe,89 83 F0 00 00 00 48 8B 5C 24 ??) // should be unique
alloc(newmem,$1000,INJECT)
label(code)
label(return)
newmem:
mov eax,#999 // your change: store 999 instead
code:
mov [rbx+000000F0],eax // the original instruction
jmp return
INJECT:
jmp newmem
nop
return:
registersymbol(INJECT)
[DISABLE]
INJECT:
db 89 83 F0 00 00 00 // original bytes: mov [rbx+000000F0],eax
unregistersymbol(INJECT)
dealloc(newmem)
aobscanmodule
aobscanmodule(INJECT,game.exe,...) memoriam moduli game.exe pro forma bytorum scrutatur et, si invenit, nomen INJECT ut inscriptionem ubi incipit definit. Quaestionem ad unum modulum limitare celerius est et falsas congruentias alibi vitat. Mandata cognata exstant: aobscan omnem memoriam scrutatur, et aobscanregion inter duas inscriptiones scrutatur. Si forma non invenitur, scriptum cum errore activari non potest, quod est symptoma solitum post renovationem ludi.
alloc
alloc(newmem,$1000,INJECT) 0x1000 bytos memoriae pro codice tuo reservat et eam newmem appellat. Tertius parameter Cheat Engine rogat ut eam prope INJECT assignet. In ludis 64-bit hoc refert: jmp brevis 5 bytorum in utramque partem solum circiter 2 GB attingere potest, et prope assignare saltum satis parvum servat ut loco mandati originalis capiatur.
label
label(code) et label(return) nomina pro locis declarant quae infra definiuntur. code notat ubi mandatum originale iterum agitur; return notat mandatum statim post mutatum, ubi exsecutio pergit.
newmem et code
Omnia sub newmem: codex tuus sunt, quem sequitur mandatum originale sub code:. In exemplo mov eax,#999 registrum ad 999 ponit (# numerum decimalem notat), et mov [rbx+000000F0],eax originale deinde eum condit, ergo valor semper ut 999 scribitur. Denique jmp return in codicem ludi redit.
INJECT: jmp newmem
In inscriptione inventa scriptum mandatum originale cum jmp newmem superscribit. Saltus 5 bytos capit, sed mandatum originale hic 6 bytorum erat, ergo nop bytum reliquum implet; alioquin processor dimidium mandati currere conaretur. Exemplar hoc pro te computat. return: statim post ponitur, itaque mandatum proximum intactum notat.
registersymbol et unregistersymbol
registersymbol(INJECT) nomen INJECT globaliter in Cheat Engine notum facit. Hoc sectioni [DISABLE], quae postea et separatim currit, permittit ut eandem inscriptionem sine nova scrutatione inveniat. Etiam aliis introitibus permittit ut ad eam referant. unregistersymbol(INJECT) in [DISABLE] nomen removet.
Bytos originales restituere, et dealloc
In [DISABLE], INJECT: cum db 89 83 F0 00 00 00 subsequente bytos originales super saltum rescribit, quod mandatum ludi exacte restituit. Deinde dealloc(newmem) memoriam quae codicem tuum tenebat liberat. Ordo refert: saltum primum restitue, ut ludus newmem iam non utatur cum liberatur.
Wildcards et cur signaturae singulares referant
Forma bytorum in aobscanmodule signatura vocatur. Duas condiciones implere debet:
- Singularis esse debet. Si forma pluries occurrit, scriptum primam congruentiam mutat, quae functio prorsus alia esse potest. Sic scripta ludos frangunt vel rem falsam mutant. Exemplar commentarium "should be unique" ut monitum addit.
- Parvas mutationes superare debet. Quidam byti facile inter versiones ludi vel etiam inter cursus mutantur: offsets intra mandata, inscriptiones relativae vocationum et saltuum, et constantes insertae. Hos bytos cum wildcards
??substituere formam congruere sinit cum solum illa singula mutantur.
Haec duo proposita inter se repugnant. Si pauci byti sunt, forma in multis locis congruit; si nimis multae wildcards, iterum generica fit. Ratio practica est opcode bytos servare, offsets et inscriptiones volatiles cum wildcards substituere, et paucos bytos mandatorum sequentium pro contextu includere. Deinde proba formam singularem esse: in fenestra principali pone Value Type ad Array of byte, forma insere et scrutare cum optionibus memoriae ita positis ut memoriam executabilem includant. Exacte unus eventus est quod vis. Creator signaturarum AOB te adiuvat ut bytos exemplatos in formam cum wildcards vertas et quinam byti mutari probabiliter videas.
Scriptum probare
- Serva ludum et exemplar salvi tui custodi ante primam probationem.
- Activa scriptum, effectum inspice, deinde deactiva et confirma ludum iterum normaliter se gerere.
- Commuta pluries. Scriptum quod secunda activatione deficit plerumque sectionem
[DISABLE]habet quae[ENABLE]non plene resolvit. - Cave mandata communia. Mandatum quod vitam tuam scribit etiam vitam hostium scribere potest; tunc mutatio tua omnes afficit, et casus distinguere debebis antequam quidquam mutes.
Cum scriptum operatur, introitui descriptionem claram da et tabulam serva. Cum ludus renovatur et scriptum activari non potest, signatura est primum quod inspiciendum est.
Commentarii
Nondum sunt commentarii
Primus sententiam tuam communica.