Hacking flash pe exemplul de zbor

Hacking Flash pe exemplul de zbor. partea 1

În prealabil Îmi cer scuze pentru orice neconcordanță cu definițiile și o eroare în articol. Aici am descrie cursul gândurilor sale și cum am ajuns la anumite concluzii și, prin urmare, narațiunea la persoana întâi, dar în viitor se poate schimba stilul.

Pentru cei care au deschis această pagină pentru prima dată, am recomanda sa se familiarizeze cu alte părți ale articolului. Prima parte - Break deschide joc flash cu ajutorul Monster Debugger. Introducere. ciclu de aceste articole arată utilizarea unui debugger, și cum de a încorpora fulger într-o aplicație descrisă aici: Break deschide joc flash cu ajutorul Monster Debugger. introducerea

Se apropie de un final interesant, și anume de rupere și scris ieftin pentru joc [Trebuie sa fii înregistrat și nu este blocat de către utilizator pentru a vizualiza link-uri pentru a înregistra la acest link]. situat pe site-ul de jocuri Armor Games.

La începutul vom atașa un depanator la acest joc, acum trebuie să găsiți variabile (valori) care doresc să hack. Pentru mai multe detalii în studiul aprofundat al structurii de necesitatea de joc pentru a descărca Sothink Flash Decompiler, așa că știm tot ce avem nevoie.


Imediat mi găsesc elemente care ar dori să hack. Primul este viteza și altitudinea, care corespunde vitezei și altitudinea. În primul rând aveți nevoie pentru a găsi elemente care să reflecte valorile lor. Treceți la debugger, a pus o evidențiere capusa Verificați și să încerce să evidențieze Velocity. Ea nu funcționează, tocmai a lansat întregul panoul superior. Ei bine, mă întorc la debugger în căutare de obiecte legate (pictograme într-un dosar cu săgeata drop-down). Ei, de asemenea, nu a putut fi găsit. Deci, să ia un obiect global pentru căutare. Selectați un obiect responsabil pentru redarea intreaga interfata de joc, deci nu este, cred, se cere elemente. Am avea - Instanță: uiGame.


Extinderea copac, eu văd astfel de obiecte: _a, _d, _V, acestea corespund domeniilor de altitudine, distanța și viteza.


Ok, acum aveți posibilitatea să le scrie într-un caiet, ei încă veni la îndemână. Eu folosesc cuvântul părinte pentru a desemna obiectul părinte, în acest caz uiGame:

_a (TextField) - ALTITUDINE. Părinte - uiGame
_d (TextField) - DISTANTA. Părinte - uiGame
_V (TextField) - VELOCITY. Părinte - uiGame

Rămâne de a găsi bani, dar ai nevoie pentru a merge la un ecran în cazul în care acestea apar, completând astfel prima etapă și trece la meniul upgrade-uri.


În prima etapă, am câștigat 59 de dolari, aveți nevoie pentru a găsi un obiect cu o astfel de valoare, repetați pașii anteriori, dar de data aceasta voi sări peste acest proces.


Adăugați o intrare într-un notebook:

t_money (TextField) - Bani. Părinte - UpgradeScreen

Acum Nastola timp decompilare. Sunt de încărcare Sothink Flash decompilator, o unitate flash deschis USB și exportarea în format fla. Dosarul de export a existat o listă mare de fișiere sursă. Eu folosesc Total Commander pentru operațiunile de fișiere, și, mai târziu în acest articol, voi folosi pentru a căuta fișiere care conțin text. Din moment ce obiectul t_money este un obiect copil UpgradeScreen (În ierarhia debugger este mai mare în copac), deschideți mai întâi fișierul și căutarea t_money UpgradeScreen.as.

Funcția displayMoney publică (). vid
var _loc_1: * = "$" + asta. Statistici P. # 91; 3 # 93;. toFixed (2);
acest lucru. t_money. text = _loc_1;
return;
> // functie end

După cum s-ar putea ghici, această funcție afișează suma de bani disponibile. Aici, contorul este actualizat din variabila „this.P.stats [3]“. Acum, trebuie să găsiți ceea ce P și cum să-l pentru a accesa:

acest lucru. P = _g. playerData;

Excelent _g căutare din această clasă nu sunt date suficiente informații pentru a repeta căutarea în alte fișiere cu text și pentru a găsi _g _g.as fișier, deschideți-l:

public class extinde _g obiect
.............
publice var playerData statice. PlayerData = new PlayerData ();

Este o clasă cu playerData static câmp (static, în sensul că aparține clasei în sine, nu instanțele sale, sperăm, pune-l într-un limbaj simplu), este disponibil publicului pentru toate obiectele care sunt desenate la el. Această variabilă este găsit responsabil pentru bani, scrie într-un caiet.

_g. playerData. statistici # 91; 3 # 93; - este bani.

uiBody = new uiGame ();

Deci, câmpurile noastre sunt în _gD.uiBody, în căutarea pentru utilizarea acestei expresii în alte fișiere:

_gD. uiBody. _V. text = acest lucru. tratament (XVEL * 30/200) + "m / s";

Ok, aceasta este o bucată de fișier Plane.as, valorile dorite - sunt toate acolo:

_gD. uiBody. _D. text = acest lucru. (. Acest totalDist / 200) tratarea + "m";
_gD. uiBody. _a. text = acest lucru. trata ((- (ay - _gP sol)) / 200) + "m";
_gD. uiBody. _V. text = acest lucru. tratament (XVEL * 30/200) + "m / s";

Distanță - asta. totalDist / 200
Altitudine - (- (ay. - sol _gP)) / 200
Velocity - XVEL * 30/200

Rămâne de a găsi o referire la clasa de avion, și puteți începe înșelăciune:

var public static P. Plane;

În clasa _g această bucată de cod face referire la planul obiect, înlocuiește toate accesul local la nivel mondial. Sunt obtinerea de rezultate:

Distanță. _g. P. totalDist / 200; - necesitatea de a crește _g. P. totalDist
Altitudine. (- .. (_g P. ay -gP sol)) / 200; - necesitatea de a crește _g. P. ay
Velocity. _g. P. XVEL * 30/200 - ar trebui să crească _g. P. XVEL
Bani. _g. playerData. statistici # 91; 3 # 93;

Sfârșitul primei părți). Acest articol prezintă cursul gândurilor mele, la momentul de a găsi variabile relevante. Cred că procesul în sine este interesant, îl puteți trimite ca unele puzzle-uri complicate de rezolvare, în care, deși un pic pentru a obține de la sol, trebuie să vină la acest loc foarte.