Advertisement
Guest User

Untitled

a guest
Oct 23rd, 2014
171
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.71 KB | None | 0 0
  1. A feladat innen tölthető le (ugyanaz az összes részen).
  2.  
  3. 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.
  4.  
  5. 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.
  6.  
  7. 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.
  8.  
  9. Általában első körben csak belenézünk a fájlba, hogy hogy néz ki:
  10.  
  11. én speciel Total Commandert [http://www.ghisler.com/download.htm] használok, ahol simán F3-mal rá lehet nyitni a fájlra
  12. hasonló eredményt ad (csak hexában nem lehet vizsgálni alapból) egy Notepad++-szal való megnyitás [http://notepad-plus-plus.org/]
  13. persze lehet, hogy komolyabban is szerkeszteni kell majd, ehhez valamilyen hexeditor kézenfekvő lehet, én ezeket szoktam használni:
  14. XVI32: http://www.chmaas.handshake.de/delphi/freeware/xvi32/xvi32.htm
  15. HxD: http://mh-nexus.de/en/hxd/
  16. Ilyenkor érdemes kicsit végigpásztázni a fájlt, hogy miket lát az ember.
  17.  
  18. 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.
  19.  
  20. Egyéb módon is kiderítő ez az információ, pl. nagyon kézenfekvő a Linuxos "file" parancs.
  21.  
  22. kt@ubuntu:~/Desktop$ file SnakeGame.exe
  23. SnakeGame.exe: PE32 executable (GUI) Intel 80386 Mono/.Net assembly, for MS Windows
  24. 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.
  25.  
  26. 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.
  27.  
  28. 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 :)
  29.  
  30. 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.
  31.  
  32. 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.
  33.  
  34. A flag formátuma: 32 karakter (kisbetűk és számok)
  35.  
  36. Találkozunk a második részen.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement