일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
- ShaktiCTF
- 라이트업
- 2021
- web
- write up
- c언어
- reversing.kr
- 코드엔진
- reversing
- write-up
- ctf
- 워 게임
- 풀이
- 변수
- 드림핵
- 뭉뭉
- 리버싱
- Basic
- 히공
- 리버스 엔지니어링
- 라업
- vsCode
- 시탭
- PYTHON
- 라이트 업
- 해킹캠프
- 강의
- hackingcamp
- probgame
- 파이썬
히공
코드엔진 - basic 10 본문
10번을 풀어보겠습니다.

이러한 문제입니다.

실행했을때 이런 화면이 나옵니다.

peid로 확인해보니까 Aspack 패킹이였습니다.
Aspack은 압축해제 -> 압축해제 끝 -> 프로그램 실행
이 순서입니다.
pushad -> 압축해제 -> popad -> oep로 분기
방식으로 원본코드를 볼 수 있습니다.

pushad 발견

pushad 실행 후 esp값 변화 확인

esp우클릭 후 덤프에서 따라기기 클릭

이러한 것이 밑에 뜹니다.
여기서

우클릭 - 중단점 - 하드웨어, 엑세스 - Dword 클릭
이제 esp가 가르키는 메모리 주소에 접근할 때 bp를 걸어두고 실행시키게 되면, 메모리 상에 복구를 마친 뒤 OEP로 분기전 상태가 되며 F9누르면 bp전까지 실행됩니다.

f9로 실행하고 나서 jne구문 발견 이제 push 445834를 하는것을 보면
OEP는 445834이다.

oep로 도착했습니다. 이제 등록성공 분기점 opcode만 찾으면 됩니다.
문자열로 찾아봅시다.

끝쪽까지 다 내리고 나서 보니 성공문이 보입니다.

저기서 enter을 누르면 이런식으로 오류가 뜹니다. (아마 코드 복구가 끝나고 x32dbg에서 새로고침을 안해서 그런가 봅니다.)

디스어셈블러에서 따라가기를 클릭해봅시다.

정상적으로 코드가 보입니다.

여기가 분기점 입니다.
opcode : 7555
oep + opcode = 004458347555
입니다.


답 : 004458347555
'reverse engineering > CodeEngn' 카테고리의 다른 글
코드엔진 - basic 12 (1) | 2020.09.22 |
---|---|
코드엔진 - basic 11 (0) | 2020.09.22 |
코드엔진 - basic 09 (0) | 2020.09.16 |
코드엔진 - basic 08 (0) | 2020.09.16 |
코드엔진 - basic 07 (0) | 2020.09.16 |