코드엔진 사이트에 들어가 basic12 문제를 다운로드 받고 압축을 푼다(비밀번호 : codeengn)
우선 프로그램을 실행해보자.
위 사진과 같이 key 값을 입력받는 간단한 프로그램인 듯 하다.
하지만 check 버튼을 눌러도 아무 일이 벌어지지 않는 것으로 보아, 정확한 key 값을 입력하면 성공 메시지가 출력되도록 코드를 변경하라는 문제이다.
Ollydbg를 이용해 정확한 분석 ㄱㄱ
우선 문제풀이에 힌트를 얻어보기 위해 올리의 text strings를 열어보자.
이전 문제에서 다뤄봐서 친근한 함수 이름이 보인다.
GetDIgItemInt 함수로 이동해보자.
우선 이 함수에 bp를 걸고 F9로 진행해보았다.
key 값을 임의로 '12345' 라고 입력해 보았는데 EAX에 1이 저장되었다.
이후 코드들을 살펴보니 00401068 ~ 0040107B 의 코드를 반복하다가 EAX와 7A2896BF 를 비교하고 분기한다.
따라서 우리는 입력값을 7A2896BF와 같게 해주어야 하고 이를 10진수 값으로 바꾸면 2049480383 이다.
이 값을 넣어보면
위 사진과 같이 성공메시지가 뜨는 것을 볼 수 있고, 이제 이 메시지를 key 값으로 바꿔주면 된다.
이제 HxD 로 파일을 열어서 메시지를 바꾸는 작업을 해보자.
위 사진과 같이 HxD 를 열고 Ctrl+F (찾기) 기능을 이용해 성공 메시지를 찾는다.
우리가 바꿔야 하는 코드는 0D3B ~ 0D62 이다.
여기에 2049480383 을 아래 사진과 같이 넣어준다.
범위는 0D3B ~ 0D46 이 된다. 나머지는 00 으로 채워준다.
성공!
'[Riversing] > [코드엔진] BASIC' 카테고리의 다른 글
[코드엔진] basic14 (0) | 2020.04.01 |
---|---|
[코드엔진] basic13 (0) | 2020.04.01 |
[코드엔진] basic11 (0) | 2020.03.31 |
[코드엔진] basic10 (0) | 2020.03.31 |
[코드엔진] basic9 (0) | 2020.03.31 |