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