MusicPlayer

2017. 7. 28. 08:110x02 Reverse Engineer/0x02. Reversing.kr

728x90


This MP3 Player is limited to 1 minutes.

You have to play more than one minute.


There are exist several 1-minute-check-routine.

After bypassing every check routine, you will see the perfect flag.



1분 마다 체크 루틴이 있는데 이걸 다 우회해서 플래그를 찾아랑~~ 


비주얼 베이직 문제구나~~


우선 , mp3파일 아무거나 하나 구해서 열고 


vb의 함수를 알아야 풀수 있겠는데?



msv~ 어쩌고의 내부는 들어가지 않아도 되네.. 여기서 헤맷네 

7295D1F2    FF15 7C129472   call near dword ptr [<&KERNEL32.lstrcpyA>]          ; kernel32.lstrcpyA

경로 복사

7295D1F8    8D85 FCFEFFFF   lea eax,dword ptr [ebp-0x104]

7295D1FE    57              push edi

7295D1FF    50              push eax

7295D200    FF15 48129472   call near dword ptr [<&KERNEL32.lstrcatA>]          ; kernel32.lstrcatA

dll명 추가 

7295D206    8D85 FCFEFFFF   lea eax,dword ptr [ebp-0x104]

7295D20C    50              push eax

7295D20D    FF15 74119472   call near dword ptr [<&KERNEL32.LoadLibraryA>]      ; kernel32.LoadLibraryA





프로그램이 실행되는 위치 인 것 같음

7294363F    E8 7E6E0000     call msvbvm60.7294A4C2


72943646    E8 B48F0000     call msvbvm60.7294C5FF





004045D7   .  52            push edx                                            ;  rtcMsgBox 왓다가 어디로 리턴하는지 보자

004045D8   .  FF15 4C104000 call near dword ptr [<&MSVBVM60.#595>]              ;  msvbvm60.rtcMsgBox




기존 EAX는 2D1 이걸 EA60보다 크게 하자. 왜 2D1(DEC= 721)일까도 생각을 해보면 좋겠다.

EA60이 DEC로 60000M/S -> 60초


(코드패치)  EA60을  2BF20로 !! 


00404563   .  3D 60EA0000   cmp eax,0xEA60                                      ;  EAX를 확인해야겠네

00404568   .  8945 E8       mov dword ptr [ebp-0x18],eax

0040456B   .  0F8C 8D000000 jl Music_Pl.004045FE                                ;  eax가 0xEA60보다 작으면 점프 승낙




004045FE   > \83F8 FF       cmp eax,-0x1                                        ;  여기서 위로 쭉 타고 올라가는 루틴이 있다 

00404601   . /0F84 C3000000 je Music_Pl.004046CA

00404607   . |8B0E          mov ecx,dword ptr [esi]

00404609   . |50            push eax

0040460A   . |56            push esi


코드패치를 하니 노래는 잘 ~~ 나온다~~ 야호야호 !! 

하지만.. 런타임 에러(308)가 뜬다. 구글링 해보니 런타임 오류 380: 잘못 된 속성 값"는 기존 FRx 문서 블록 (행, 열, 카탈로그 또는 트리) 열 때이 오류가 발생 합니다.

 

속성 값이 잘못되었다고 한다. 당연히 내가 2BF20으로 바꾸었으니 속성 값이 잘못 된 거라고 생각한다.


그럼 이제 이 경고창을 우회해야한다.. 하 .. 어쩌지 또 한번 멘탈이 나가는건가`~`



메시지 박스 4개 인가 5개에 hardware bp 걸어뿌자

00403B07   .  FF15 4C104000 call near dword ptr [<&MSVBVM60.#595>]              ;  msvbvm60.rtcMsgBox



004046A7   .  85C0          test eax,eax

004046A9   .  DBE2          fclex

004046AB      EB 12         jmp short Music_Pl.004046BF ; 코드패칭

004046AD   .  68 BC000000   push 0xBC

004046B2   .  68 582B4000   push Music_Pl.00402B58

004046B7   .  57            push edi

004046B8   .  50            push eax

004046B9   .  FF15 3C104000 call near dword ptr [<&MSVBVM60.__vbaHresultCheckOb>;  msvbvm60.__vbaHresultCheckObj

004046BF   >  8D4D E0       lea ecx,dword ptr [ebp-0x20]

004046C2   .  FF15 28114000 call near dword ptr [<&MSVBVM60.__vbaFreeObj>]      ;  msvbvm60.__vbaFreeObj


Password is ??????









'0x02 Reverse Engineer > 0x02. Reversing.kr' 카테고리의 다른 글

CRC1  (0) 2018.01.05
PEpasswd  (0) 2017.12.01
RansomWare  (0) 2017.07.28
EasyUnpackMe  (0) 2017.07.28
EasyKeygen  (0) 2017.07.28