개발세발보안중

리버싱 7주차 본문

Reversing

리버싱 7주차

채영채영 2022. 11. 7. 14:45

Music_Player.exe PEID로 Open

비주얼 베이식 언어로 개발되었고, 따로 패킹이 되어있지 않다. 

압축 파일 내 ReadMe.txt

MP3 플레이어가 1분으로 제한되어 있고 1분 이상 재생할 수 있도록 check-routine을 우회해야한다. 

시작하자마자 dll파일로 들어가고, 들어가고 나면 프로그램이 실행된다.

rtxMsgBox 함수 발견

Search for all intermodular calls로 함수를 살펴보니 rtcMsgBox가 4번 호출 된 것을 알 수 있었고 모두 breakpoint를 걸어주었다.

 

4개의 함수 중 어떤 함수가 1분 제한 메시지를 띄우는 것인지 알아내기 위해 breakpoint를 건 것!

 

노래 1분 실행

문제풀이를 위해 유튜브 오디오 보관함에서 오프라인 저장을 함 ..

Open을 해서 경로를 찾으면 코드가 실행되어 분석이 불가해짐 :( 
경로를 따로 복붙하여 재생하고 다시 1분 기다렸다.

BP가 걸린 곳이 메세지 박스를 띄우는 부분인데, 위로 올려보면 CMP EAX, 0EA60이 나옵니다 

EAX와 60000을 비교합니다. 

밀리세컨드 단위라서 60초가 60000으로 표기되어있습니다. 

 

(어떻게 값을 변경하는지 모르겠어요)

(이 후 부턴 구글링 결과)

 

EA60 보다 크게 만든 후 실행하면 런타임에러가 뜬다. 

예외가 발생한 시점의 Call Stack을 확인했을때, 예외가 발생하기 전에 4046BF가 리턴주소 스택에 들어와있음을 볼 수 있었고 예외가 발생하면서 해당 지점으로 리턴하지 못했을 것. 

 

해당 지점을 확인하니, vbaHresultCheckObj 함수 안에서 예외가 발생함을 확인 할 수 있었다. 

JGE를 패치하여 해당 함수가 호출되지 않도록 함!!

JGE를 JMP로 바꿔서 함수를 호출안하도록 하고 재생하면 제목에 패스워드 값이 뜬다 (Lxsten Cxre)

'Reversing' 카테고리의 다른 글

리버싱 7주차 -2  (0) 2022.11.07
Analysis  (0) 2022.09.25
디스어셈블과 디컴파일  (0) 2022.09.25
프로그램과 컴파일  (0) 2022.09.25
리버싱 스터디 1주차  (0) 2022.09.20
Comments