티스토리 뷰
Challenges : Basic 05
Author : Acid Bytes [CFF]
Korean :
이 프로그램의 등록키는 무엇인가
English :
The registration key of this program is?
1) 문제 풀이
일단 가장 먼저 해야될것은 , 등록 키값을 찾는것이기 때문에 이 파일이 패킹이 되었는지 여부를 확인해야 한다. 이때 사용하는것은 PEID 를 사용하여 이 5.exe 파일이 패킹되어있는지 확인을 해볼것이다.
5.exe 파일이 패킹되어있는지 여부를 알게되는것은 PEid 를 열어보면
UPX 0.8 9.6 - 1.02 / 1.05 - 2.90 (Delphi) stub -> Markus & Laszlo 이런식으로 패킹여부를 확인 할 수 있다.
2) 패킹 여부를 확인 하였으면 이제 올리디버거로 가보자.
보통 패킹이 되어있는 부분에는 어셈블리어 코드로 pushad / popad 부분이 존재한다.
이부분을 통해서 이제 패킹구간을 확인을 할 수 있다.
보통 popad 가 끝난이후에 jmp 문이 존재하는데, 이 때 jmp문을 타고가면 실제 코드를 확인 할 수 있다.
popad 부분이후에 실제 코드를 타고 들어가는 부분
jmp 문을 타고 들어가면 실제 코드의 모습이다.
3) 이제 jmp 부분에 f2를 걸어 놓고 패킹이 되어있는것들을 푸는작업 Dump작업을 실시 할것이다. 여기서 올리디버거 플러그인인 Dump를 사용하여 05.exe파일을 덤프 한다. 여기서 주의 할것은 나는 처음에 _05.exe파일로 덤프하였는데, 05.exe 파일에 브레이크포인트를 걸어놓아서 pushad 부분을 찾아가기가 어려웠다. 그래서 05.exe파일로 덮어쓰기를 한후 덤프를 실시 하였다. 이제 덤프가 완료되면, 기존의 PE 구조를 Rebuild하는 과정을 거칠 것인데 이때 사용할 툴은 Lord PE 툴을 사용하여 복구를 실시 할것이다.
4) 이렇게 Lord PE툴을 하여 Rebuild 까지 마치게 되면 다시 pushad 부분을 타고 들어가서 Ascill 코드를 확인하다보면
이렇게 된 부분을 확인할 수 있다. unRegisterd 로 되어있는 부분을 Registerd User로 바꿔주고 나머지 serial number 는 보시다 시피 알아서 변경을 하면 Congrets 라는 문구를 발견하게 될것이므로 정확히 키값을 알아낸것으로 확인 할 수 있다.
Review of End!
'Security' 카테고리의 다른 글
[리버싱] Code Engine - 7 문제 풀이 (0) | 2018.03.25 |
---|---|
[리버싱] Code Engine - 6 문제 풀이 (0) | 2018.03.25 |
[리버싱] Code Engine 4 - 문제 풀이 (0) | 2018.03.23 |
[리버싱] Code Engine - 3 문제 풀이 (0) | 2018.03.23 |
[리버싱] Code Engine - 2 문제 풀이 (0) | 2018.03.23 |
- Total
- Today
- Yesterday
- Android
- MVC
- 감자코딩
- TensorFlow
- node
- 감자개발자
- Algorigm
- programming
- 알고리즘
- 코드엔진
- 백준알고리즘
- 리버싱
- 초보자를 위한 C언어 300제
- 프로그래밍
- Controller
- 스프링
- 개발하는 관광이
- 머신러닝
- 안드로이드
- db
- 백준
- 노드
- C언어
- BFS
- 복습
- node.js
- 텐서플로우
- 학교
- C langauge
- Spring
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |