CodeEngn.com [코드엔진]
코드엔진은 국내 리버스엔지니어링 정보공유를 위해 2007년 부터 리버스엔지니어링 컨퍼런스 및 세미나, 워크숍을 현업 실무자들과 함께 운영하고 있는 비영리 커뮤니티입니다.
ch.codeengn.com
이 문제에서는 친절하게 UNPACK 하라고 되어있고, 05번과 똑같이 시리얼 값을 찾으라고 하고 있다.
OEP 값은 디버거로 실행시키면 가장 처음에 멈춰있는 주소일 테니, 우리는 시리얼 값만 구하면 된다.
FLAG는 OEP+Serial이라고 한다.
일단 peinfo에 넣어보았더니 upx 언패킹을 진행해야 한다고 한다.
5번과 똑같이 upx 툴을 사용하여 cmd 창에서 언패킹을 수행해주었다.
일단 파일을 실행시키면 어떤 값을 입력하라고 되어있다.
X32 디버거로 분석해보았다.
실행을 시켜보니 위의 그림처럼 해당 부분에 멈춰 있다.
즉, OEP 값이 00401360임을 알 수 있다. 이제 시리얼 값만 찾으면 된다.
문자열검색을 해보았더니, GOO JOB이라고 되어있고, 맨 위에 알 수 없는 문자열이 있다.
사실 누가 봐도 저 이상한 값이 시리얼 키이긴 하다,,,
일단 해당 위치로 이동해보았다.
422A30이라는 위치에 위에서 본 이상한 값이 들어가 있고, 바로 401290이라는 함수를 호출한다.
그 후에 eax와 eax를 비교하여 같지 않으면 error, wrong serial로 점프한다.
여기에서 디버깅을 해보았는데, 1234567890이라는 의미 없는 문자열을 입력하고 문자열 검색을 해보니 두 곳에 저장되는 것을 확인할 수 있었고, 두 값을 비교하는 것이라고 추측할 수 있었다.
그럼 시리얼 값이 “AD46DFS547”임을 알았고, 위에서 OEP 값이 00401360이므로
[ 00401360AD46DFS547 ]가 FLAG가 된다.
'Reversing > CodeEngn' 카테고리의 다른 글
[CodeEngn] Basic RCE L08풀이 (0) | 2021.08.18 |
---|---|
[CodeEngn] Basic RCE L07풀이 (0) | 2021.08.18 |
[CodeEngn] Basic RCE L05 풀이 (0) | 2021.08.01 |
[CodeEngn] Basic RCE L04풀이 (0) | 2021.08.01 |
[CodeEngn] Basic RCE L03풀이 (0) | 2021.08.01 |