코드엔진 사이트에 들어가 advance02 문제를 다운로드 받고 압축을 푼다(비밀번호 : codeengn)
좋아 정답을 찾아보자.
일단 Exeinfo PE ㄱㄱ
C++ 로 만들어졌고 패킹은 되어있지 않다.
프로그램을 실행시켜보자.
패스워드를 치는 콘솔창이 뜨고, 입력받은 패스워드가 틀리면 프로그램이 그냥 종료되어 버린다.
Ollydbg로 정확한 분석 ㄱㄱ
Textstrings를 확인해서 패스워드를 입력받는 곳으로 이동한다.
패스워드를 입력받고 나서 어떠한 루틴을 지난 뒤,
아래 그림처럼 004013C5에서 CALL EDX를 해서 프로그램을 종료시킨다.
그럼 F7로 이 함수 안으로 들어가보자.
ECX에는 내가 입력한 값이 들어있고 이 값을 43, 52, 41 ... 과 비교한다.
만약 비교값이 다르면
0012F8C2 로 점프하게 되고 위 그림의 CALL ECX 를 만나서 프로세스가 종료된다.
그렇다면 정답은 위의 비교문에서 나오는 숫자들(43,52 등등)일 것이다.
비교하는 숫자들은
43 52 41 41 41 43 4B 45 44 21 이고 이들의 아스키값은
C R A A A C K E D ! 이다.
이 문자열을 프로그램에 넣어보면?
웰 던! 인데 왜 오류지? 여튼 성공
'[Riversing] > [코드엔진] ADVANCE' 카테고리의 다른 글
[코드엔진] advance04 (0) | 2020.04.09 |
---|---|
[코드엔진] advance03 (0) | 2020.04.07 |
[코드엔진] advance01 (0) | 2020.04.07 |