티스토리 뷰
** 분석 중 문제 함수가 지역 변수 접근에 EBP 를 사용하지 않았음. (ESP 를 대신 사용함.)
Immunity Debugger 에서 LOCAL.n Prefix 를 사용하지 못함. IDA 를 이용해 스택 주소를 확인함.
1.
mp3 파일을 열어서 재생한다.
1분 이상으로 듣지 못하고, 모든 체크 루틴을 우회하면 플래그를 볼 수 있다고 하였음.
VB6으로 제작되었으며, 분석을 용이하게 하기 위해서 ida pro visua basic 6.0 스크립트를 통해 IDA 가 CallBack 등 함수를 제대로 나타날 수 있게 해준다.
(VB6 Decompiler 를 통해서 빠른 분석도 가능하다.)
2.
1분 이상 듣게 되면, "1분 미리ㅣ듣기만 가능합니다." 라는 메세지가 출력된다.
이때 프로그램을 Suspend 해서, MessageBox 가 호출된 코드를 찾는다. (타이머 콜백 함수)
00403B0D 에서 실행이 계속되는데, 조금 더 위로 올라가보면 하나의 큰 분기문을 찾을 수 있다.
0040455D 에서 특정 값을 비교해서, 60000보다 크면 아까의 오류 메세지를 표시하는 구문을 보게 된다.
그부분을 바꾸어 jmp 로 수정하고 실행해본다.
3.
"Invalid Property Value" 라는 오류와 함께 프로그램이 종료된다.
Immunity Debugger 로 Attach 후, Call stack 을 조사해서 타이머 콜백 함수에서의 call 이 실행된 주소를 찾는다.
해당 주소 위의 jge 구문을 jmp로 변경하고 실행하면, 문제없이 코드가 실행되고, 답을 찾을 수 있다.
'Reversing > * reversing.kr' 카테고리의 다른 글
reversing.kr - Ransomware (0) | 2016.07.22 |
---|---|
reversing.kr - ImagePrc (0) | 2016.07.22 |
reversing.kr - Easy Keygen (0) | 2016.07.20 |
reversing.kr - Replace (0) | 2016.07.19 |
reversing.kr - Easy Unpack (0) | 2016.07.18 |