Kategori
Misc, Rev
Beskrivning
Katastrofen är nära! Astronauten Rakel Raket, som jobbar ombord på ISS, skulle som vanligt varva ned lite genom att tillbringa eftermiddagen med att gamea lite Pokémon (Blå så klart, för Pokémon är inte Pokémon utan Meowth) på sin GameBoy, när hon upptäcker att Kenneth har lyckats ta över enheten!
Hela eftermiddagen är i fara!
Hon lyckas få ut lite data ut enheten som kanske kan avslöja vad Kenneth haft för sig i systemet. Kan du hjälpa henne?
Notera att formatet på flaggan i den här utmaningen är lite annorlunda. När du submittar flaggan ska den bara innehålla följande tecknen: [A-Z0-9()-].
Lösning
Bifogat till utmaningen är en fil innehållande assemblerkod för en GameBoy.
main:
ld hl, .data
jp $3C49
.data:
db $00, $85, $8b, $80, $86, $86, $80, $8d, $7f, $80, $91, $9c, $7f, $94, $8d, $83, $94, $93, $51
db $9a, $89, $80, $86, $e3, $80, $8b, $92, $8a, $80, $91, $e3, $86, $84, $8d, $f7, $9b, $57
Utmaningens namn hintar om att det har något att göra med Pokémon Blue. Söker vi efter Pokémon Blue disassembly kan vi hitta ett GitHub-repo som innehåller Pokémon Red och Pokémon Blue dissassemblys.
Letar man upp addressen $3C49 så ser vi att det är addressen för PrintText som skriver ut text på skärmen. Byter vi ut .data i koden, t.ex i oak_speech.asm, så kan vi ersätta texten som skrivs ut med texten i utmaningskoden.
OakSpeech:
ld a, SFX_STOP_ALL_MUSIC
call PlaySound
ld a, BANK(Music_Routes2)
ld c, a
ld a, MUSIC_ROUTES2
call PlayMusic
call ClearScreen
call LoadTextBoxTilePatterns
call PrepareOakSpeech
predef InitPlayerData2
ld hl, wNumBoxItems
ld a, POTION
ld [wCurItem], a
ld a, 1
ld [wItemQuantity], a
call AddItemToInventory
ld a, [wDefaultMap]
ld [wDestinationMap], a
call PrepareForSpecialWarp
xor a
ldh [hTileAnimations], a
ld a, [wStatusFlags6]
bit BIT_DEBUG_MODE, a
jp nz, .skipSpeech
ld de, ProfOakPic
lb bc, BANK(ProfOakPic), $00
call IntroDisplayPicCenteredOrUpperRight
call FadeInIntroPic
ld hl, .data
jp $3C49
.data:
db $00, $85, $8b, $80, $86, $86, $80, $8d, $7f, $80, $91, $9c, $7f, $94, $8d, $83, $94, $93, $51
db $9a, $89, $80, $86, $e3, $80, $8b, $92, $8a, $80, $91, $e3, $86, $84, $8d, $f7, $9b, $57
När vi gjort detta kan vi kompilera koden med RGBDS och köra den i en emulator för att få ut flaggan.

Flaggan är: UNDUT(JAG-ALSKAR-GEN1)