Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- A feladat innen tölthető le (ugyanaz az összes részen).
- A feladathoz kezdetben kaptatok egy futtatható fájlt (SnakeGame.exe) és egy ismeretlen, kiterjesztés nélküli "gamedata" főleg olvashatatlan karaktereket tartalmazó fájlt.
- Magában kitalálni, hogy mit tartalmaz a "gamedata" az közel lehetetlen, vagy legalábbis jóval nehezebb, mint az EXE-vel kezdeni, ezért tegyük ezt.
- A fájlt el is lehet indítani, de ez nem javasolt általában, főleg nem az általatok használt gépen. Helyette érdemes egy üres VM-ben tesztelni minden ismeretlen eredetű fájlt. A program egyébként nem csinál sok rosszat, a gépetekről kérdez le információkat, mint azt nem sokára látni fogjátok.
- Általában első körben csak belenézünk a fájlba, hogy hogy néz ki:
- én speciel Total Commandert [http://www.ghisler.com/download.htm] használok, ahol simán F3-mal rá lehet nyitni a fájlra
- hasonló eredményt ad (csak hexában nem lehet vizsgálni alapból) egy Notepad++-szal való megnyitás [http://notepad-plus-plus.org/]
- persze lehet, hogy komolyabban is szerkeszteni kell majd, ehhez valamilyen hexeditor kézenfekvő lehet, én ezeket szoktam használni:
- XVI32: http://www.chmaas.handshake.de/delphi/freeware/xvi32/xvi32.htm
- HxD: http://mh-nexus.de/en/hxd/
- Ilyenkor érdemes kicsit végigpásztázni a fájlt, hogy miket lát az ember.
- Többek közt feltűnhet egy "_CorExeMain mscoree.dll" szövegrészlet. Ebből az derül ki, hogy a fájl egy .NET bináris ( http://en.wikipedia.org/wiki/.NET_Framework ), feltehetően már hallottatok róla / tanultátok egyetemen.
- Egyéb módon is kiderítő ez az információ, pl. nagyon kézenfekvő a Linuxos "file" parancs.
- kt@ubuntu:~/Desktop$ file SnakeGame.exe
- SnakeGame.exe: PE32 executable (GUI) Intel 80386 Mono/.Net assembly, for MS Windows
- Hasonlóan hasznos parancs a "strings", ami egy adott fájlból előkeresi az olvasható szövegeket és felsorolja őket. Linuxon alapból nem minden karakterkódolást ír ki, hanem rá kell venni a megfelelő kiíratására. A .NET pl. Unicode UTF-16 módon tárolja a stringeket. Ha csak simán elindítjátok Linuxon a strings-et, akkor várná az inputot, ilyenkor Ctrl+C-vel lehet kilépni. Ha a paramétereit szeretnétek tudni, akkor a "strings --help" a barátotok.
- Windowson is van hasonló programok, amit én ajánlani tudok az a Sysinternals Suite [http://technet.microsoft.com/en-us/sysinternals/bb842062.aspx] részeként elérhető ugyancsak strings nevű program. Ez alapból támogatja az unicode stringek kiírását is. Egyébként a Sysinternals Suite rengeteg hasznos programot tartalmaz, érdemes utána olvasni.
- Viszont megtudtuk, hogy .NET a bináris, ami mint több modern nyelv (pl. Java, Python, etc) egyedi bájtkóddal rendelkezik, ami a binárist könnyen visszafejthetővé teszi majdnem az eredeti forráskód szintjére. Ezzel szemben egy C vagy C++ program visszafejtése már jóval bonyolultabb feladat, de abban is lesz részetek bőven, ha még nem volt, nyugi :)
- Erre több program is létezik, elsők egyike a .NET Reflector volt, ami azóta fizetőssé vált. Én helyette dotPeek-et [http://www.jetbrains.com/decompiler/] ajánlom. Hasonlóan szokták dicsérni az ILSpy-t is [ http://ilspy.net/ ]. Egyébként a bájtkódra visszafejtő programokat disassembler-nek, míg a forráskódra visszafejtőket decompiler-nek szokták hívni.
- Egyik ilyen program feltelepítését és a SnakeGame.exe megnyitását követően el tudjátok olvasni, vagy kiexportálni a forráskódot. Ennek átnézését és a könnyű flag megtalálását (ha eddig strings-sel nem szereztétek meg), rátok bízom.
- A flag formátuma: 32 karakter (kisbetűk és számok)
- Találkozunk a második részen.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement