코드엔진 사이트에 들어가 advance04 문제를 다운로드 받고 압축을 푼다(비밀번호 : codeengn)
name 이 주어졌고 시리얼번호를 구하는 문제이다.
프로그램을 실행시켜 보면 아래 그림과 같이 이름과 시리얼번호를 입력하는 창이 뜨는 간단한 프로그램이다.
PEiD로 분석 ㄱㄱ
흠 Exeinfo PE 로도 봐야겠다;
self write 코드란다. 이런건 처음 봤다.
Ollydbg로 분석해보자.
intermodular calls 도 text strings 도 나오지 않는다.
색다른 방식으로 패킹이 되어 있는 듯 하다.
프로그램이 위의 그림처럼 00401006 주소로 JMP 하는 루프로 시작되는데
아무래도 이 00401006 주소가 OEP 인 듯 하다.
이 주소로 이동해서 덤프시켜주자.
위 그림과 같이 Rebuild Import 박스를 체크 해제 해주고 덤프시킨다.
덤프시킨 파일을 올리로 열어보니
아래 그림처럼 Intermodular calls 가 떴고, 거기에 유니코드를 비교하는 IstrcmpA 가 보인다.
이동 ㄱㄱ
IstrcmpA 함수에 bp 를 걸고 F9 키로 진행을 했다.
시리얼 값은 임의로 55 라고 입력하였다.
위 그림처럼 내가 입력한 55와 의심스러운 문자열을 비교한 뒤 다르면 Error 쪽으로 점프한다.
이 값을 프로그램에 시리얼 넘버로 입력해 보았더니?
성공!
'[Riversing] > [코드엔진] ADVANCE' 카테고리의 다른 글
[코드엔진] advance03 (0) | 2020.04.07 |
---|---|
[코드엔진] advance02 (0) | 2020.04.07 |
[코드엔진] advance01 (0) | 2020.04.07 |