Olen pöördtehnoloogia hakkaja, olen läbi lugenud mõned õpetused ja tean oma põhilisi GDB- ja monteerimiskoode. Pärast paari tühise näite läbivaatamist tahaksin proovida midagi natuke "reaalsemat". Minu eesmärk on ümber kujundada ja „lõhkuda“ introvertsustarkvara / Ambrosia Software'i mäng „Uplink“.
Pange tähele, et teen seda vaid väljakutse nimel, kui tahtsin lihtsalt mängu tasuta mängida leiaks mõra, mitte ei teeks seda. Demo on vabalt saadaval aadressil http://www.ambrosiasw.com/games/uplink/.
Nüüd olen staatilise analüüsi abil õppinud mõned olulised asjad tööriistad Hopper ja class-dump. Peagi selgus, et registreerimisega seotud funktsioonid elasid kaustas ASWRegistration.framework
, kuid pärast mõne staatilise analüüsi proovimist otsustasin tulutult visata GDB. Laadis selle üles, proovis seada ühele huvitava välimusega funktsioonile katkestuspunkti.
(gdb) b + [ASWRegistration isRegistered:] Funktsioon "+ [ASWRegistration isRegistered:]" pole määratletud. Kas muuta tulevase jagatud teegi koormuse jaoks katkestuspunkt? (y või [n]) n
Ah, see on tüütu. Proovime midagi muud.
(gdb) b isRegisteredFunction "isRegistered" pole määratletud. Kas muuta jagatud teek tulevase jagamise jaoks ootepunktiks? (y või [n]) n
Hm, võib-olla teen midagi valesti ...
(gdb) b isRegistred: sümbolitabelit pole on laaditud. Kasutada käsku "file". Kas muuta jagatud teegi tulevase koormuse jaoks ootepunkt (y või [n]) n (gdb)
Noh, mis annavad mulle teistsuguse veateate, see siiski ei tööta ...
Edasisel uurimisel , Leidsin, et ma ei suuda käivitatava faili enda funktsioone isegi korralikult rikkuda.
(gdb) b applicationDidFinishLaunching: [0] tühista [1] kõik ] - [SUStatusChecker applicationDidFinishLaunching:] [3] - [SUUpdater applicationDidFinishLaunching:] > 0tühistatud
Kaks võimalikku applicationDidFinishLaunching
s, mitte üks neist ei pärine tegelikust mängust (ma arvan, et need pärinevad Sparkle.framework-ist). Tundus, nagu oleks Ambrosia nutikas ja eemaldaks kõik silumissümbolid, kuid class-dump annab mulle täielikud päised, nm annab mulle hulga sümboleid ja Hopper leiab igasuguseid meetodeid. Nii et ma ei saa aru, miks GDB seda kasutada ei saa. Olen jällegi selles kõiges algaja, võib-olla teen midagi räiget valet. Proovisin sama asja ka Mac App Store'i mängudega "Hack RUN Free" ja sain sama Sümbolitabelit pole laaditud. Kasutage viga käsk "file"
. Loomulikult pole failikäsklusest üldse abi.
Kas keegi teab, kuidas seda parandada? Tahaksin selles puhtalt teoreetilisest tasemest kaugemale jõuda?