코드엔진 사이트에 들어가 basic16 문제를 다운로드 받고 압축을 푼다(비밀번호 : codeengn)
14, 15번과 비슷한 문제인 듯 하다.
프로그램을 실행시켜보자.
이름과 패스워드를 입력받는 간단한 콘솔프로그램이다.
이전 문제들과 다른 점이라면 패스워드를 입력받은 뒤 null 값을 생성한다는 것과,
패스워드가 틀리면 프로그램이 종료된다는 것이다.
Exeinfo PE 로 분석 ㄱㄱ
패킹은 되어있지 않다.
Dev-C++ 로 컴파일되어있다.
그렇다면 Ollydbg로 정확한 분석 ㄱㄱ
프로그램에 사용된 문자열을 찾아 분기점으로 이동해보자.
분기점으로 이동 ㄱㄱ
패스워드를 입력 받고
0040159F 주소에서 EAX와 어떤 값을 비교한 뒤, good job쪽으로 분기한다.
지금까지의 경험으로 보았을 때 eax 값은 내가 입력한 패스워드 값이고,
비교값은 프로그램의 패스워드 일 것이다.
0040159F에 bp를 걸고 진행(F9)해 보았다.
위에서 예상 했듯이 내가 입력한 55 라는 값이 16진수의 형태(37) 로 EAX에 저장되어 있었다.
그렇다면 E4C60D97 의 10진수 값이 패스워드 일 것이다.
확인 ㄱㄱ
깰끔하게 성공!
'[Riversing] > [코드엔진] BASIC' 카테고리의 다른 글
[코드엔진] basic18 (0) | 2020.04.06 |
---|---|
[코드엔진] basic17 (0) | 2020.04.04 |
[코드엔진] basic15 (0) | 2020.04.04 |
[코드엔진] basic14 (0) | 2020.04.01 |
[코드엔진] basic13 (0) | 2020.04.01 |