티스토리 뷰
Challenges : Basic 10
Author : ArturDents
Korean :
OEP를 구한 후 "등록성공"으로 가는 분기점의 OPCODE를 구하시오. 정답인증은 OEP + OPCODE
EX) 00400000EB03
English :
After finding the OEP, find the OPCODE of the branch instruction going to the "goodboy routine"
The solution should be in this format : OEP + Serial
EX) 00400000EB03
1)
가장 먼저 할것은 PEid툴을 이용하여 패킹여부를 확인 -> AsPack을 사용하여 패킹된것을 확인할 수 있음
2) 이제, pushad 부분을 dump 를 뜬후 PElord 를 사용하여 언패킹을 한다.
3) 언패킹을 뜬후
올리디버거로 다시 들어가서, popad 부분을 찾으면 JNZ, RETN OC 부분이 있다. 이부분이 실제 프로그램으로 가는 OEP 가 있는 부분이다. 이제 F8 로 진행하다보면, OEP 부분으로 진입하게 된다. 여기서 OEP 코드를 구할 수 있는데, OEP= 00445834
4) Ctrl+A 로 코드를 재분석하여 코드를 정렬시킨다.
이제, 문자열 search 를 통하여 분기점의 OPCODE 를 구한다.
여기서, ASCII "resgister well done" 부분을 찾을 수 있다. 조금 위로 가다보면, JNZ 라는 분기
문을 확인 할 수 있다.
5)
JNZ 부분에서 분기문이기때문에, OPCODE = 7555이 된다.
생각보다 구조가 복잡해보여서, 실제 프로그램의 OEP 부분과 아닌부분을 잘 구별하는 능력이 필요해보인다.
'Security' 카테고리의 다른 글
[리버싱] Code Engine 12 - 문제 풀이 (0) | 2018.03.25 |
---|---|
[리버싱] Code Engine 11 - 문제 풀이 (0) | 2018.03.25 |
[리버싱] Code Engine 9 문제 풀이 (0) | 2018.03.25 |
[리버싱] Code Engine 8 - 문제풀이 (0) | 2018.03.25 |
[리버싱] Code Engine - 7 문제 풀이 (0) | 2018.03.25 |
- Total
- Today
- Yesterday
- 개발하는 관광이
- 스프링
- 안드로이드
- C언어
- 텐서플로우
- programming
- node
- 감자코딩
- 백준알고리즘
- 복습
- 백준
- Spring
- Android
- 노드
- MVC
- db
- 머신러닝
- node.js
- 프로그래밍
- 리버싱
- 학교
- 알고리즘
- C langauge
- 초보자를 위한 C언어 300제
- BFS
- TensorFlow
- Controller
- 감자개발자
- Algorigm
- 코드엔진
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |