본문 바로가기

Reversing/CodeEngn

[CodeEngn] Advance RCE L05풀이

https://ch.codeengn.com/

 

CodeEngn.com [코드엔진]

코드엔진은 국내 리버스엔지니어링 정보공유를 위해 2007년 부터 리버스엔지니어링 컨퍼런스 및 세미나, 워크숍을 현업 실무자들과 함께 운영하고 있는 비영리 커뮤니티입니다.

ch.codeengn.com


그림 1

이번에도 이전 문제와 비슷하게 Serial을 구하는 것이 문제였다.

일단 실행을 시켜보았다!

 

그림 2
그림 3

 

어마어마하게 자그마한 창이 뜨고 아무 값이나 입력하면 오른쪽 위의 그림처럼 “Mal Cracker!!!”라는 문구가 뜨고 창이 하나 뜨는 것을 볼 수 있다.

일단 Exe INFO에 넣어서 확인해보았다.

 

그림 4

패킹도 되어있지 않고 별다른 특징이 없길래 바로 x32디버거를 사용해서 분석해보았다.

파일을 열고 문자열 찾기를 들어가 보니 아래의 그림과 같이 프로그램 실행에 관련된 명령어들까지 모두 보여주게 출력이 되는 것을 확인할 수 있었다.

 

그림 5

그림 5에서 보이는 것처럼 보통 이런 경우 실행을 하면 문자열 찾기 출력 결과가 달라졌던 경험이 자주 있어서 이번에도 실행을 시키고 다시 문자열 찾기를 확인해보았다.

 

그림 6

예상했던 대로 실행하니 문자열 찾기 결과가 달라지는 것을 볼 수 있었다!

그리고 여기에서 하나 짚고 가야 할 부분이 있는데, 이렇게 실행시키면서 분석해야 하는 파일들의 경우 기본 BP가 아닌 Hardware BP를 사용해야 한다!!

보니 "Bien!!!"이라고 되어 있는 부분이 성공 flag일 것이라고 추측할 수 있었다.

해당 부분으로 이동해보았다.

 

그림 7


위의 그림은 동적 분석 중에 캡처한 사진이다.

 

사실 처음에 Ctrl+A로 모듈 분석을 하기 전에 위의 402476 위치의 함수가 “vbaStrCmp”라는 이름으로 보여서 비교하겠구나를 알고 문제를 풀기 시작했는데,

중간에 모듈 분석을 누르니까 함수가 sub~~ 형식으로 바뀌어서,,, 해당 표기법이 보이지가 않았다,, 왜 이러는겨,,?

 

그래서 “abcefg”라는 랜덤 값을 넣고 문자열을 비교하는 부분을 확인해본 결과 abcefg와 677345라는 값이 들어가서 비교 함수를 거치고 있는 것을 볼 수 있다.

 

여기에서 677345라는 값이 serial 값이라고 유추할 수 있었다.

그림 8

끝!!!

'Reversing > CodeEngn' 카테고리의 다른 글

[CodeEngn] Advance RCE L07풀이  (0) 2021.11.13
[CodeEngn] Advance RCE L06풀이  (0) 2021.11.13
[CodeEngn] Advance RCE L04풀이  (0) 2021.10.05
[CodeEngn] Advance RCE L03풀이  (0) 2021.10.05
[CodeEngn] Advance RCE L02풀이  (0) 2021.10.05