일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- boj
- Old-17
- JS
- 네트워크
- 자바스크립트
- Old-14
- openCV
- 자바
- 웹케이알
- webhacking.kr
- 백준
- tcp
- c++
- 웹해킹
- 10809
- 소프트맥스 함수
- old-1
- 리버싱
- 프로그래머스
- c언어 게임
- 계단함수
- 게임 프로그래밍
- 코드엔진
- 딥러닝
- 신규 아이디 추천
- 코딩테스트 연습
- C언어
- 5585
- 크레인 인형뽑기
- 퍼셉트론
- Today
- Total
SteffenLee
[CodeEngn]basic 06 본문
코드엔진 baisc 06번 풀이 입니다.
문제가 언팩을 한 후에 시리얼을 찾아서 인증하는게 문제인가 봅니다.
언팩을 하려면 어떤 패커로 압축되어 있는지 확인해봅시다.
PEiD로 열어봤습니다.
UPX로 패킹이 되어있군요.
UPX패커라면 지난번에 풀었던 5번과 같은 패커로 이루어져있습니다.
그렇다면 바로 올리디버거로 열어서 언팩을 진행해보겠습니다.
올리디버거로 열은 뒤 POPAD를 찾고 그 밑에서 JMP을 찾았습니다.
그러면 JMP로 따라가는 저 주소 값이 정답의 절반이겠군요
지금까지 정답은 ; 00401360Serial입니다.
Serial 키를 찾으러 가봅시다.
지난번과 같은 방법으로 언팩해주신 후에 올리덤프로 저장해주시면 되겠습니다.
2018/01/05 - [CodeEngn] - [CodeEngn]basic 05
를 봐주시면 upx 언팩하는 법이 나와있습니다.
언팩을 하신 후 올리디버거로 여시면
이런 식으로 되있습니다.
여기서 한번 그냥 올리디버거로 실행시키지 말고 실행파일을 실행시켜보겠습니다.
이렇게 되있군요
이제 문자열을 넣어보고 체크를 해보겠습니다.
이런 식으로 에러 메세지가 나오는군요.
그렇다면 저 에러 메세지 박스를 띄우기 위해서 한 번쯤은 메세지박스 함수를 호출하겠죠.
그럼 Search for를 사용해서 메세지박스 함수를 찾아보겠습니다.
메세지 박스를 띄우는 함수를 찾았으니 함수를 호출하는 부분으로 가봅시다.
이런 코드가 나옵니다.
대충보자면
첫 화면을 띄우고 입력을 받은 뒤 00401073 부분에서 호출하는 부분이 입력받은 문자열과 시리얼 값과 비교를 해서 ZF를 바꾸는 과정이라고 볼 수 있습니다.
그럼 중간에 시리얼 값처럼 보이는 것을 한번 프로그램에 넣어 봅시다.
맞군요.
그럼 아까전에 찾은 OEP와 시리얼 값을 합쳐서 인증해봅시다.
성공입니다.
감사합니다.
'Reversing > CodeEngn' 카테고리의 다른 글
[CodeEngn]basic 08 (0) | 2018.01.11 |
---|---|
[CodeEngn]basic 07 (0) | 2018.01.10 |
[CodeEngn]basic 05 (0) | 2018.01.05 |
[CodeEngn]basic 04 (0) | 2018.01.03 |
[CodeEngn]basic 03 (0) | 2018.01.01 |