일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Javascript
- Win32
- Direct2D
- 백준
- 지식나눔강좌
- 티스토리
- tipssoft
- c++
- 리뷰
- 문법
- c#
- VS ERROR
- Desktop
- 이지스퍼블리싱
- Programming
- 연산자
- 배열
- c
- 프로그래밍
- doit코틀린프로그래밍
- Visual Studio
- 함수
- 김성엽
- Tips강좌
- CS
- 포인터
- Tips프로그래밍강좌
- Kotlin
- 알고리즘
- Windows
- Yesterday
- Today
- Total
F.R.I.D.A.Y.
리버싱 - abexcm1(실습).exe 본문
abexcm1(실습).exe를 실행하면 위와같은 메시지가 출력된다.
그리고 [확인]을 누르면 Error라는 제목의 메시지가 발생하는데, 이를 아래와같은 메시지로 출력할 수 있도록 코드를 수정해야한다.
" Ok, I really think that you HD is a CD-ROM! :p "
처음 olly를 실행해서 abexcm1을 열게되면 아래와 같은 어셈 코드가 나온다.
ASM 코드 (x64라서 그런지 모듈명이 ntdll이다 )
이 상황에서 [F9]를 누르면 프로그램의 진입점, 즉 프로그램이 시작하는 첫 코드로 이동하게 된다. 아래 이미지와 같은 화면이 나오면 된다. 메모리의 주소는 [ 401000 ]으로, 이 주소가 프로그램의 시작이다. 그외에는 오류. 1
[F8]을 이용해 메모리 주소가 [ 401024 ]인 곳까지 내려온다. 중간에 [ 40100E ] 부분에서 [F8]을 눌러도 내려가지 않는 경우는 메시지박스가 출력된 것이니 출력된 메시지 박스를 닫고 다시 시도하자.
[ 401024 ]의 명령어는 다음과 같다.
cmp eax, esi
차례대로 설명하면
cmp [ ASM 명령어 모음 ]
>> 비교한다
eax
>> 확장된(Extended, e) ax 레지스터
esi
>> 확장된 si 레지스터
레지스터 설명은 아래 링크를 참고하자.
간단하게 eax 레지스터와 esi 레지스터의 값을 비교해 같으면 0을, 다르면 1을 ZF 레지스터에 넣는다. 2
cmp는 값을 단순 비교하는 것이 아니라 한쪽에서 다른쪽 값을 빼는 행위를 통해(값이 반영되지는 않는다) 값을 비교한다. 그래서 0값이 참, 1값이 거짓이 된다. 일반 프로그래밍과 다르다보니 여기서 혼돈이 찾아온다. 그런데 olly에서 보여주기를 ZF 에 1이 있으면 참, 0은 거짓이다..
오른쪽 Z가 바로 플래그 레지스터중 Z(ero) 플래그 레지스터이다. 저 값이 0이면 비교값이 0이 아님, 1이면 0임을 알린다.
더블클릭으로 변경가능
오른쪽에 ZF를 더블클릭해 값을 1로 바꾸면 이미지상에 왼쪽에 강조한 화살표부분이 빨간색으로 변경된다. 점프 분기를 [ 401028 ]로 하는 것이 아니라, [ 40103D ]로 하도록 변경한다. je는 다음과 같이 보면 된다. 이전에 배운 C로 코드를 짜보면 다음과 같다고 보면 된다.
if ( !ZF ) goto 40103D; // << je 작업
401028:
40103D:
3
변경후 다시 [F8]을 누르면 [ 40103D ]로 이동한 것을 볼 수 있다.
그리고 나서 쭉 실행해보면 리버싱에 성공한 것을 확인할 수 있다.
※ 참고
>> ZF값을 바꾸지 않고 cmp eax, esi 부분에서 eax와 esi의 값을 임의로 같게 만들어주어도 가능하다.
참고
>> http://blog.naver.com/PostView.nhn?blogId=67sooon&logNo=10166021894
'리버싱 > Olly' 카테고리의 다른 글
OpenSecureLab#1_Release.exe (0) | 2018.09.26 |
---|---|
crackme2.exe (0) | 2018.09.15 |
리버싱 - crackme1.exe (0) | 2018.09.13 |
Ollydbg 기본 단축키 (0) | 2018.09.13 |