2017. 10. 23. 06:57ㆍ0x02 Reverse Engineer/0x03. Etc
이번에 알게 된 것 : 레나는 무조건 플래그를 찾는 그런 유형의 컨셉은 아니다.
바이너리 : TASM / MASM / FASM - assembler
바이너리를 실행하면 뜨는 메시지
Remove the nags to register
This will make program fully registered
잔소리를 지워달란다. 재미있는 문제인듯하다.
첨에 이 문제 이해가 안되서 멍하게 있다가 레나에서 제공하는 swf를 보았는데
문제 의도 파악을 하고 웃어버렸다. ㅋㅋㅋㅋ
다음 메시지는
You need to register me now!
It is supposed to be quite easy.
Just patch the program to remove the Nags.
첫번째 메시지박스가 잔소리인데 그 잔소리를 우회하는 패치를 진행하라는 뜻이다.
바이너리를 열어보겠다.
00401000 >/$ 6A 00 push 0x0 ; /pModule = NULL
00401002 |. E8 0D020000 call <jmp.&KERNEL32.GetModuleHandleA> ; \GetModuleHandleA
00401007 |. A3 1C314000 mov dword ptr [0x40311C],eax
0040100C |. 83F8 00 cmp eax,0x0
0040100F |. /74 13 je short Register.00401024
eax는 현재 401000이다. je가 당연히 만족하지 못하므로
00401011 |. 6A 00 push 0x0 ; /Style = MB_OK|MB_APPLMODAL
00401013 |. 68 7D304000 push Register.0040307D ; |Title = "Register Me"
00401018 |. 68 34304000 push Register.00403034 ; |Text = "Remove the nags to register
This will make program fully registered :))"
0040101D |. 6A 00 push 0x0 ; |hOwner = NULL
0040101F |. E8 C6010000 call <jmp.&USER32.MessageBoxA> ; \MessageBoxA
이 루틴으로 이동하게 되었던 것이다.
나는 이 루틴을 건너띄어야 한다.
CTF를 풀 때는 점프 패치를 함부러하면 안되지만 (만약, 루틴 관련 된 함수일경우)
이 문제에서는 대놓고 패치를 하라고 하니까 패치를 진행하자.
JE를 JNE로 바꾼다.
0040100F |. /74 13 jne short Register.00401024
그러면 두번째
You need to register me now!
It is supposed to be quite easy.
Just patch the program to remove the Nags.
가 뜨게 되고,
그 다음 메시지박스는 0x90 (nop) 처리 해버리면, 뜨지 않는다.
끝...?
Reverse_oops 문제 동일하다..
'0x02 Reverse Engineer > 0x03. Etc' 카테고리의 다른 글
[H4C] BINGO BINARY (0) | 2017.10.28 |
---|---|
[레몬 세미나] 랜섬웨어 (0) | 2017.10.23 |
[LENA 2] CreateFile (0) | 2017.10.23 |
[RENA] 1번 Do you know CreateFile? (0) | 2017.10.23 |
[파일 자동 삭제] (0) | 2017.09.19 |