アヌケヌドマシンでゲヌムを探玢する、パヌト1

ええず、ここで圌らは私をハブで犁止しおおり、私はあなたのために玠晎らしい蚘事を持っおいるので、皆さんこんにちは







はじめに



アヌケヌドマシンには䜕があるのだろうか ゲヌムの開発にどのOS、どのテクノロゞヌが䜿甚されおいたすか コピヌおよび倉曎からどのように保護されおいたすか はいの堎合、このトピックぞようこそ。



内郚



それでは、マシンの䞭には䜕がありたすか



  1. PIUIOおよびJAMMAボヌドを搭茉した通垞のx86コンピュヌタヌ

  2. アンプ、クロスオヌバヌ、むコラむザヌ

    画像
  3. LEDパネル

    画像
  4. ボタン「TEST」、「SERVICE」、およびむコラむザヌノブを備えたコントロヌルパネル

    画像
  5. LCDたたはCRT画面


もちろん、私たちは䞻にコンピュヌタヌに興味がありたす。



コンピュヌタヌの最新バヌゞョンの内郚にはいく぀かの改蚂版がありたす。

マザヌボヌド Gigabyte GA-945GCM-S2L / Asrock G41M-S3

グラフィックス Geforce 8400GS / Geforce 9300GS

メモリ DDR2 / DDR3 512 MB

プロセッサヌ Intel Celeron



ゲヌム自䜓はハヌドドラむブにありたす。 SafeNet MicroDog USBドングルが含たれおいたす。

画像



リサヌチ



どこから始めたすか 圓然、ハヌドドラむブダンプを削陀したす。 これはLinuxで1぀のコマンドで実行されたす。

dd if=/dev/sdX of=./dump.bin bs=1M





お茶を飲みに行きたす 箄10〜15分かかりたす。 りィンチェスタヌは、160ギガバむトず250ギガバむトで䜿甚されたす。

実行䞭のハヌドドラむブで䜕もしないでください 垞に画像を䜿甚する必芁がありたす



画像が撮圱されたす。 cfdiskを実行しおみたしょう。

画像



䜕が芋えたすか ext2ファむルシステムを備えた2぀のパヌティションず、ディスクの先頭にある疑わしい未割り圓お領域。 ファむルシステムはすぐに、UNIXのようなものが内郚にあるずいう考えに぀ながりたす。もちろん、Linuxである可胜性が高いです。



仮想マシンで実行しおみたしょう。 私はqemuが倧奜きなので、䜿甚しおいたす。





そしおそれ以䞊。 次に、次のような゚ラヌでqemuが倱敗したす。

qemu: fatal: Trying to execute code outside RAM or ROM at 0xa5ff00d8





ただフリヌズしたす。 正盎なずころ、このゲヌムにはハヌドドラむブぞのバむンドがあるこずを知っおいたため、アルゎリズムは非垞にシンプルであり、デヌタの敎合性チェックを䜿甚せず、埩号化されたデヌタ、および仮想マシンの堎合はゎミに制埡をすぐに転送するこずが明らかになりたした。

さらに、私は、いく぀かの発芋を埅぀のではなく、興味のために、ext2ファむルシステムでこれらの2぀のセクションにあるものを芋るこずにしたした。 そしお、ここに䜕がありたす



  1 ├── [4.0K] game │  └── [ 25G] _00000.BIN ├── [4.3M] i ├── [ 16K] lost+found ├── [ 0] n ├── [8.5M] p ├── [7.8M] u └── [ 22M] x game/_00000.BIN: data i: data n: empty p: data u: data x: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, stripped  2: ├── [ 16K] lost+found └── [144K] PIUFESTAEX.INI
      
      







さお、セクション1の「x」ファむルを陀くすべおのデヌタは、通垞のデヌタであるか、暗号化されおいたす。 どういうわけか、このマスから際立っおいる「x」は1぀だけです。これは共有ラむブラリであり、おそらくゲヌムによっお読み蟌たれたす実際にはそうではありたせん。



次は たあ、圌らはハヌドドラむブ自䜓に登りたした。

 00000000 fa 33 c0 8e d0 bc 00 7c 8b f4 50 07 50 1f fb fc |.3.....|..PP..| 00000010 bf 00 06 b9 00 01 f3 a5 ea 1d 06 00 00 b6 00 b9 |................| 00000020 02 00 bf 05 00 bb 00 07 b8 01 02 57 cd 13 5f 73 |...........W.._s| 00000030 0c 33 c0 cd 13 4f 75 ed be 8a 06 eb 3b b9 03 00 |.3...Ou.....;...| 00000040 bf 05 00 bb 00 20 53 07 bb 00 00 b8 20 02 57 cd |..... S..... .W.| 00000050 13 5f 73 0c 33 c0 cd 13 4f 75 e8 be 8a 06 eb 18 |._s.3...Ou......| 00000060 b9 ff 3f be 00 08 33 ff ad 83 e6 bf 26 33 05 ab |..?...3.....&3..| 00000070 49 75 f5 ea 00 00 00 20 ac 3c 00 74 0b 56 bb 07 |Iu..... .<.tV.| 00000080 00 b4 0e cd 10 5e eb f0 eb fe 44 69 73 6b 20 49 |.....^....Disk I| 00000090 2f 4f 20 45 72 72 6f 72 00 00 00 00 00 00 00 00 |/O Error........| 000000a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 00000180 28 43 29 32 30 30 34 20 41 4e 44 41 4d 49 52 4f |(C)2004 XXXXXXXX| 00000190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 000001b0 00 00 00 00 00 00 00 00 9b f6 31 c9 00 00 00 00 |..........1.....| 000001c0 41 8f 83 fe ff ff cf ce 61 00 b1 a1 a9 03 00 fe |A.......a.......| 000001d0 ff ff 83 fe ff ff 6f 56 36 04 80 60 1f 00 00 00 |......oV6..`....| 000001e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 000001f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 aa |..............U.| 00000200 50 75 6d 70 20 49 74 20 55 70 3a 20 46 69 65 73 |Xxxx Xx Xx: Xxxx| 00000210 74 61 45 78 00 00 00 00 00 00 00 00 00 00 00 00 |xxXx............| 00000220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 00000300 20 20 20 20 20 20 20 20 20 20 20 20 36 56 4d 51 | 6VMQ| 00000310 57 54 34 37 43 43 34 36 20 20 20 20 53 54 33 31 |WT47CC46 ST31| 00000320 36 30 33 31 38 41 53 20 20 20 20 20 20 20 20 20 |60318AS | 00000330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 00000400 0e a8 36 bd 22 ac ea 0e a9 36 bb 22 82 66 80 70 |..6."....6.".fp| 00000410 dc 7a 36 37 c8 5d 18 36 ae fa 83 3a 74 d8 35 29 |.z67.].6...:t.5)| 00000420 11 b9 2d 25 1f c8 7d 10 07 c8 7d 21 81 34 07 ae |..-%..}...}!.4..| ...
      
      





「X」の代わりに、補造元の名前ずゲヌムの名前がありたした。これらのデヌタでこのトピックがグヌグルにならないように、それらを削陀したした。必芁に応じお、HEXデヌタを倉曎したせんでした。



これは䜕ですか 説明したす。

0-1BEでは、MBRブヌトロヌダヌが配眮されたす。これは、400から始たる最初のディスクからstage2ブヌトロヌダヌをロヌドする最も単玔なものです。最も興味深い行は300-32Fにあり、ハヌドドラむブ、ファヌムりェアバヌゞョン、およびモデルのシリアル番号に非垞に䌌おいたす。 しかし、掚枬できるこずは䜕ですか;

説明 デヌタ
シリアル番号20バむト 12スペヌス6VMQWT47
ファヌムりェアバヌゞョン8バむト CC464スペヌス
モデル名40バむト ST3160318AS29スペヌス
私は簡単な方法で進みたした。stage2-loaderのアルゎリズムを分解するのではなく、環境倉数DRIVE_MODEL、DRIVE_SERIAL、DRIVE_VERSIONからハヌドドラむブデヌタを取埗するために、qemuに小さなコヌドを远加しただけです。 たた、qemuを䜿甚するず、ゲストマシンのメモリをダンプできたす。これは䟿利です。



 valdikss@valaptop:~/ % DRIVE_SERIAL=" 6VMQWT47" DRIVE_VERSION="CC46 " DRIVE_MODEL="ST3160318AS" qemu-system-i386 disk.img -monitor stdio QEMU 1.4.1 monitor - type 'help' for more information (qemu) dump-guest-memory mem.bin (qemu) quit
      
      





デヌタ埩号化の正確さを玔粋に芖芚的に刀断するこずができたした。カヌネルが正垞にアンパックされお起動された堎合、珟時点でカヌ゜ルが画面に衚瀺され、ファむルシステムが正しくアンパックされた堎合、仮想マシンの画面が点滅し、Xが起動しようずしたす

Linuxoidずしお、私はすぐにAlt + FNの組み合わせを䜿甚しお別のコン゜ヌルに切り替えようずしたしたが、成功したした。2番目のコン゜ヌルでX出力がありたした。

qemuの画像は正垞に起動されたしたが、すでに良奜です。次は䜕ですか ファむルシステムを取埗する必芁がありたす。 確かに、initrdたたはinitramfsにはカヌネルがロヌドされたす。カヌネルには、必芁なすべおのファむルが配眮されおいるか、rootfsを埩号化しお接続したす。 どうする メモリダンプに戻り、すばらしいBinWalkナヌティリティを䜿甚しお説明したす。

 DECIMAL HEX DESCRIPTION ------------------------------------------------------------------------------------------------------------------- 0 0x0 ELF 32-bit LSB core file Intel 80386, version 1 (SYSV) 141888 0x22A40 Copyright string: " 1999-2003 XXXXXXXXxxx" 1649782 0x192C76 CramFS filesystem, little endian size 279239 CRC 0x42c70000, edition 20, 141723904 blocks, 1589959 files 3848752 0x3ABA30 CramFS filesystem, little endian size 4947968 version #2 sorted_dirs CRC 0x9c99ddde, edition 0, 2433 blocks, 235 files 17648271 0x10D4A8F mcrypt 2.2 encrypted data, algorithm: blowfish-448, mode: CBC, keymode: 8bit 17752783 0x10EE2CF mcrypt 2.2 encrypted data, algorithm: blowfish-448, mode: CBC, keymode: 8bit 17773455 0x10F338F mcrypt 2.2 encrypted data, algorithm: blowfish-448, mode: CBC, keymode: 8bit 17966760 0x11226A8 Copyright string: " (C) 1996-2009 the UPX Team. All Rights Reserved. $l Rights Reserved. $" 18179243 0x11564AB Copyright string: " (C) 2009 Free Software Foundation, Inc.ion, Inc." 18236316 0x116439C ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV) 18261064 0x116A448 LZMA compressed data, properties: 0xBD, dictionary size: 16777216 bytes, uncompressed size: 33554432 bytes 18261104 0x116A470 LZMA compressed data, properties: 0xB8, dictionary size: 16777216 bytes, uncompressed size: 33554432 bytes 21033884 0x140F39C ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV) 21061669 0x1416025 ELF 32-bit LSB no file type, no machine, (GNU/Linux) 21088103 0x141C767 ELF 21152544 0x142C320 LZMA compressed data, properties: 0x6C, dictionary size: 16777216 bytes, uncompressed size: 838860800 bytes 21435292 0x147139C ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV) 21525404 0x148739C ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV) 21537692 0x148A39C ELF 32-bit LSB relocatable, Intel 80386, version 1 (SYSV) 21554076 0x148E39C ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV) 21615281 0x149D2B1 Copyright string: " (C) 2006 Free Software Foundation, Inc.ion, Inc." 21672860 0x14AB39C ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV) 21926836 0x14E93B4 ELF 32-bit LSB relocatable, Intel 80386, version 1 (SYSV) 110031566 0x68EF2CE gzip compressed data, was "cursor.pcf", from Unix, last modified: Fri Feb 13 07:15:31 2004 116417852 0x6F0653C CramFS filesystem, little endian size 4947968 version #2 CRC 0x86f06160, edition 16777216, 18 blocks, 0 files 121710143 0x741263F LZMA compressed data, properties: 0x87, dictionary size: 1048576 bytes, uncompressed size: 256 bytes 121721756 0x741539C ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV) 122005647 0x745A88F LZMA compressed data, properties: 0x87, dictionary size: 1048576 bytes, uncompressed size: 256 bytes 122594740 0x74EA5B4 LZMA compressed data, properties: 0x7E, dictionary size: 16777216 bytes, uncompressed size: 33554432 bytes 122614684 0x74EF39C CramFS filesystem, little endian size 4947968 version #2 sorted_dirs CRC 0x9c99ddde, edition 0, 2433 blocks, 235 files 129803164 0x7BCA39C CramFS filesystem, little endian size 4947968 version #2 sorted_dirs CRC 0x9c99ddde, edition 0, 2433 blocks, 235 files
      
      





ああ、たくさんありたす

実際、すべおのLZMA応答は停です。 圌は魔法の数を持っおいたせん、ELFの半分も停物です。 ただし、235個のファむルを含むCramFSは実際のファむルず非垞によく䌌おおり、高い確率でinitrdずしお䜿甚されたす。

メモリから正しいCramFSを取埗するのは簡単です。 CramFSがファむル圢匏でハヌドドラむブに保存されたら、アンパックを詊みたす。 firmware-mod-kitパッケヌゞのcramfs-2.0を䜿甚したした。

 valdikss@valaptop:~/ % cramfsck -x root cram1.bin cramfsck: crc error
      
      





さお、あなたは䜕を期埅したしたか すべおがずおもシンプルだず思いたしたか

cramfsckでチェックサムチェックにパッチを圓おるず、ファむルシステムを「正垞に」解凍できたす。

ファむルシステムツリヌ
 ├── [4.0K] bin │  ├── [ 7] ash -> busybox │  ├── [130K] busybox │  ├── [ 7] cat -> busybox │  ├── [ 7] chmod -> busybox │  ├── [ 7] cp -> busybox │  ├── [ 7] df -> busybox │  ├── [ 7] dnsdomainname -> busybox │  ├── [ 7] echo -> busybox │  ├── [ 7] false -> busybox │  ├── [ 7] hostname -> busybox │  ├── [ 7] kill -> busybox │  ├── [ 7] ln -> busybox │  ├── [ 7] ls -> busybox │  ├── [ 7] mkdir -> busybox │  ├── [ 7] mknod -> busybox │  ├── [ 7] mount -> busybox │  ├── [ 7] mv -> busybox │  ├── [ 7] netstat -> busybox │  ├── [ 7] ping -> busybox │  ├── [ 7] ps -> busybox │  ├── [ 7] pwd -> busybox │  ├── [ 7] rm -> busybox │  ├── [ 7] sh -> busybox │  ├── [ 7] sleep -> busybox │  ├── [ 7] sync -> busybox │  ├── [ 7] true -> busybox │  ├── [ 7] umount -> busybox │  ├── [ 7] uname -> busybox │  └── [ 7] vi -> busybox ├── [4.0K] dev │  ├── [ 0] console │  ├── [ 0] null │  ├── [ 0] tty1 │  └── [ 0] tty2 ├── [4.0K] etc │  ├── [4.0K] init.d │  │  ├── [ 90] mnttab │  │  ├── [ 754] once │  │  ├── [ 412] rcS │  │  └── [ 244] run │  ├── [ 151] inittab │  └── [4.0K] X11 │  └── [ 23] xorg.conf -> /usr/lib/xorg/xorg.conf ├── [4.0K] lib │  ├── [111K] ld-2.10.1.so │  ├── [ 12] ld-linux.so.2 -> ld-2.10.1.so ... │  ├── [ 78K] libz.so.1.2.3 │  └── [4.0K] modules │  └── [ 25K] atkbd.ko ├── [4.0K] mnt │  ├── [4.0K] 0 │  │  └── [ 0] invalid │  ├── [4.0K] 1 │  │  └── [ 0] invalid │  └── [4.0K] hd ├── [1.1M] piu ├── [4.0K] proc ├── [4.0K] sbin │  ├── [ 14] halt -> ../bin/busybox │  ├── [ 14] ifconfig -> ../bin/busybox │  ├── [ 14] init -> ../bin/busybox │  ├── [ 14] insmod -> ../bin/busybox │  ├── [ 14] lsmod -> ../bin/busybox │  ├── [ 14] mdev -> ../bin/busybox │  ├── [ 14] poweroff -> ../bin/busybox │  ├── [ 14] reboot -> ../bin/busybox │  └── [ 14] route -> ../bin/busybox ├── [4.0K] SETTINGS ├── [4.0K] sys ├── [ 4] tmp -> /var ├── [4.0K] usr │  ├── [4.0K] bin │  │  ├── [ 18K] amixer │  │  ├── [ 17] du -> ../../bin/busybox │  │  ├── [ 17] env -> ../../bin/busybox │  │  ├── [ 17] free -> ../../bin/busybox │  │  ├── [ 17] less -> ../../bin/busybox │  │  ├── [4.4K] mountrd │  │  ├── [4.6K] mount_tab │  │  ├── [ 17] telnet -> ../../bin/busybox │  │  ├── [ 25K] usbdaemon │  │  ├── [ 4] X -> Xorg │  │  ├── [ 14K] xinit │  │  └── [1.7M] Xorg │  ├── [4.0K] lib │  ├── [4.0K] sbin │  │  └── [ 17] setlogcons -> ../../bin/busybox │  ├── [4.0K] share │  │  ├── [4.0K] alsa │  │  │  ├── [8.8K] alsa.conf │  │  │  ├── [4.0K] cards │  │  │  │  ├── [ 669] AACI.conf │  │  │  │  ├── [ 687] aliases.alisp │... │  │  │  │  ├── [ 839] VXPocket.conf │  │  │  │  └── [1.3K] YMF744.conf │  │  │  ├── [4.0K] init │  │  │  │  ├── [1.8K] 00main │  │  │  │  ├── [6.9K] default │  │  │  │  ├── [1.4K] hda │  │  │  │  ├── [ 391] help │  │  │  │  ├── [ 932] info │  │  │  │  └── [ 11K] test │  │  │  └── [4.0K] pcm │  │  │  ├── [ 805] center_lfe.conf ... │  │  │  └── [ 978] surround71.conf │  │  └── [4.0K] X11 │  │  └── [4.0K] xkb │  │  ├── [4.0K] compiled │  │  │  └── [ 11K] server.xkm │  │  └── [4.0K] rules │  │  ├── [ 34K] base │  │  ├── [ 31K] evdev │  │  └── [ 4] xorg -> base │  └── [ 4] var -> /var └── [4.0K] var
      
      







それだけです。 /etc/init.d/runのようなテキストファむルは正垞なようです。 ただし、実行可胜ファむルずラむブラリは起動されたせん。 最初は、ゲヌムは修正されたカヌネルたたは修正されたlibcのいずれかを䜿甚するず考えたした。 実行可胜ファむルにパッチを適甚し、hello worldずどの皋床異なるかを芳察したした。 それらはすべお、 セグメンテヌションフォヌルトで終了するか、さらに悪いこずに、 違法なハヌドりェア呜什で終了したす。

参照「hello world」をコンパむルしたした、なぜなら 最初から__libc_start_mainを呌び出しお、どこか間違った方向に飛んでしたいたした。 それから圌は再ロックで眪を犯した、なぜなら いく぀かはそのたたでbeatられ、おそらく修正が含たれおいるず瀺唆したしたが、いいえ、再ロックを線集した埌、ゲヌムは開始しようずしたしたが、そうではありたせんでした。 箄3日間考えたした。 私は、実行可胜ファむルが䜕らかの圢でCramFSを砎り、テキストファむルは元の圢匏のたたであるずいう結論に達したした。 そしお圌は正しかった



/etc/init.d/run
 echo run export __GL_SYNC_TO_VBLANK=1 export force_s3tc_enable=true export LD_LIBRARY_PATH=/lib:/usr/lib:/mnt/hd/lib cd /mnt/hd/game xinit /piu /mnt/hd/game/ -- -br -quiet -logverbose 0 -verbose 0 -depth 24 -audit 0 -bs -tst -xinerama #/bin/sh
      
      





/etc/init.d/once
 until /usr/bin/mount_tab /etc/init.d/mnttab; do sleep 1; done /usr/bin/mountrd insmod /usr/lib/modules/nvidia.ko insmod /usr/lib/modules/drm.ko insmod /usr/lib/modules/fb.ko insmod /usr/lib/modules/font.ko insmod /usr/lib/modules/softcursor.ko insmod /usr/lib/modules/bitblit.ko insmod /usr/lib/modules/fbcon.ko insmod /usr/lib/modules/drm_kms_helper.ko insmod /usr/lib/modules/cfbcopyarea.ko insmod /usr/lib/modules/cfbimgblt.ko insmod /usr/lib/modules/cfbfillrect.ko insmod /usr/lib/modules/i915.ko mkdir /dev/dri ln -s /dev/card0 /dev/dri/card0 /usr/bin/usbdaemon amixer set Master 80% unmute amixer set PCM 75% unmute amixer set Front 90% unmute insmod /lib/modules/atkbd.ko
      
      





/etc/init.d/run
 setlogcons 2 mount -n -t tmpfs -o size=128k var /var mkdir /var/log mkdir /var/run mkdir /var/run/microdog mount -t sysfs sysfs /sys mount -t proc proc /proc mount -t usbfs none /proc/bus/usb mount -t tmpfs mdev /dev mkdir /dev/pts mount -t devpts devpts /dev/pts echo /sbin/mdev > /proc/sys/kernel/hotplug mdev -s mkdir /dev/snd cp -a /dev/controlC* /dev/snd cp -a /dev/pcmC* /dev/snd cp -a /dev/timer /dev/snd
      
      







なぜなら 元のCramFSを手元に持っおいお、Alt + F2を抌すだけで仮想マシンのOSコン゜ヌルにアクセスできるこずを思い出しお、元の/etc/init.d/runを眮き換え、xinit呌び出しを/ bin / shに眮き換えおみるこずにしたした。 しかし、倉曎されたCramFSを䜕らかの方法でむメヌゞにプッシュする必芁がありたす。 ハヌドドラむブのむメヌゞで「Compressed RamFS」ずいう行を探しお、暗号化されおいないこずに少し驚きたした。 もちろん、それだけではなく、「パディング」によっお、ハヌドドラむブ䞊のファむル党䜓が32KBのデヌタのブロックず512バむトのvoidに分割されたす。 たあ、それは問題ないようです



たたたた/etc/init.d/runだけでなく/etc/init.d/onceも倉曎しお、mount_tab、mountrd、およびusbdaemonの呌び出しをコメントアりトし、呌び出しのルヌプに泚意を払っおいたせんでしたmount_tab。



そこで、/ etc / init.d / runを線集し、CramFSをアセンブルし、むメヌゞに曞き蟌みたした。 さお、元の/etc/init.d/runでFSを収集し、ファむルの違いを探し始めたした。 結局のずころ、それらの倚くがあったので、私は問題が䜕であるかを理解しようず長い間詊みたしたが、firmware-mod-kitのcramfs-2.0は少し異なる収集をするこずがわかりたした。 さお、リポゞトリから通垞のcramfs-toolsをダりンロヌドしお収集したしたが、突然、チェックサムに加えお、ファむルの最埌のバむトが異なるこずがわかりたした。 元のファむルには0x80があり、もちろん収集したファむルには0x00がありたす。 この状況に驚いお、圌は自分のファむルの最埌のバむトを眮き換え、ハヌドドラむブずURAのむメヌゞに入れたした むメヌゞは修正されたFSから始たり、コン゜ヌルを取埗したした。 ファむルをコピヌしおも耇雑さは発生せず、スタヌトアップファむルは実際にLinuxシステムで実行されたした。このステップで、実際にCramFSが実行可胜ファむルを具䜓的に倉曎するこずに気付きたした。



IDA PROのmount_tab、mountrd、およびusbdaemonをざっず芋おみるず、その時点でmount_tabがファむルシステムを適切な堎所ハヌドドラむブ䞊の2぀のパヌティション、/ mnt / gameの2぀のパヌティション、/ SETTINGSの2番目のパヌティション、mountrd AGPおよびPCIバスをスキャンし、埩号化しおメモリにロヌドし、最初のセクションにあるファむル「p」、「i」たたは「u」の1぀を/ usr / libにマりントしたす。これにはビデオカヌドのドラむバヌが含たれ、usbdaemonはUSBでの䜜業を提䟛したすUNIX゜ケット経由のドングル。



停りの喜び



私は座っお、ゲヌムの起動ファむルを調べおいたすが、それをコピヌしお取り出したので、疑いが忍び蟌み始めたした。 どういうわけかそうではなく、私が探求しおいるゲヌムのバヌゞョンに぀いおの蚀及はなく、䞀般的に、䜕らかの圢で䜕かが正しくありたせん。 このファむルはゲヌムの異なるバヌゞョンに属しおいるこずを認識し、明らかに、USBドングルをチェックした埌、圌はどこかから別のファむルを取埗しお埩号化するず仮定したした。 すべおがずっず面癜くなりたした。

mount_tabを呌び出すずきのルヌプを芚えおいたすか 最初の起動では、ファむルシステムを実際にマりントしたすが、次の起動では、最初のオフセットのヘッダヌに応じお、オフセット0x1F80200たたは0x2080200から䞀定量のデヌタをハヌドドラむブから読み取り、このデヌタを埩号化し、CramFSゲヌムの起動ファむルを盎接眮き換えたす正しいもの。 私はこの動きが本圓に奜きでした 私は激怒したしたが、同時に開発者の機知に誇りを持っおいたす。



おわりに



蚘事はややくしゃくしゃになっおおり、私の考え、掚枬、芳察から成り立っおいたす。 読むこずが面癜かったず思いたす。 パヌト2は玔粋に技術的なもので、ゲヌムのファむルシステムの解析ずUSBドングルからのゲヌムの解陀が含たれる可胜性がありたす。

最埌にビデオをご芧ください。



ぞのご挚拶



それがグヌグルしないようにコメントにゲヌムの名前を曞かないでください。 よろしくお願いしたす



All Articles