→ Nuit Du Hack (NdH2k11) - RCE300

| 5 Comments | No TrackBacks
File: rce300.zip
Задание на первый взгляд интересное и необычное, у нас есть игра для Nintendo DS, которая проверяет введенную строку и сообщает success или fail.
Для начала нам нужно загрузить образ в IDA для анализа. В сети есть loader для IDA, но он скомпилирован под старую версию. Можно скомпилировать с новым sdk, но мы пошли по быстрому пути посмотрели нужные поля в заголовке и загрузили прошивку руками.

snk-box:rce300 snk$ ./dump-hdr crackme.nds
gamecode: ####
devicetype: 0x0
devicecap: 0x2
arm9_rom_offset: 0x200
arm9_entry_address: 0x2000000
arm9_ram_address: 0x2000000
arm9_size: 0x41e7c
arm7_rom_offset: 0x42200
arm7_entry_address: 0x37f8000
arm7_ram_address: 0x37f8000
arm7_size: 0xf71c
fnt_offset: 0x51a00
fnt_size: 0x9
fat_offset: 0x51c00
fat_size: 0x0
arm9_overlay_offset: 0x0
arm9_overlay_size: 0x0
application_end_offset: 0x52440
rom_header_size: 0x200

После того как загрузили, поищем интересные строки в памяти. Быстро найдем вот такой кусок:
RAM:020003BE       LDR     R0, =a______________ ; " ______________________________\n"
RAM:020003C0       BL      printf
RAM:020003C4       LDR     R0, =asc_2040858 ; "|                              |\n"
RAM:020003C6       BL      printf
RAM:020003CA       LDR     R0, =aPassword  ; "|            password          |\n"
RAM:020003CC       BL      printf
RAM:020003D0       LDR     R0, =asc_2040858 ; "|                              |\n"
RAM:020003D2       BL      printf
RAM:020003D6       LDR     R0, =asc_20408A0 ; " ------------------------------\n\n"
RAM:020003D8       BL      printf
RAM:020003DC       LDR     R0, =aRootNdh2011 ; "root@ndh2011:# "
RAM:020003DE       BL      printf
RAM:020003E2       LDR     R1, [SP,#8]
RAM:020003E4       LDR     R0, =aS         ; "%s"
RAM:020003E6       BL      scanf
RAM:020003EA       ADD     R3, SP, #16     ; R3 - String

По тому какие параметры передаются очень похоже что это вызов фукций printf и scanf. Чуть ниже идет несколько проверок и вычисление хеша от введенной строки.
rce300.png
Хэш-функция располагается по адресу sub_02003530. Её псевдокод и код полной проверки строки в rce300_src.tgz

snk-box:rce300 snk$ ./brute
Key: DsLrox

rce300-win.png
Задание на первый взгляд было сложным, но как оказалось решалось очень быстро, даже разбираться в устройстве Nintendo не пришлось :(

No TrackBacks

TrackBack URL: http://smokedchicken.org/m/mt-tb.cgi/53

5 Comments

А как ручками разбирали? научи? :)

1) скомпилированный свежий лоадер в интернете есть
http://www.romhacking.net/utils/632/
2) та функция, которую вы так страшной функцией и оставили, вообще-то просто-напросто числа делит ;)

привет с рдота

About this Entry

This page contains a single entry by snk published on April 4, 2011 11:28 PM.

Nuit Du Hack (NdH2k11) - RCE200 was the previous entry in this blog.

#defcon pp500 write-up and exploit is the next entry in this blog.

Find recent content on the main index or look in the archives to find all content.