일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 알고리즘
- 티스토리
- CS
- Desktop
- 문법
- tipssoft
- Windows
- c
- VS ERROR
- 리뷰
- 백준
- 지식나눔강좌
- Tips프로그래밍강좌
- 배열
- Tips강좌
- Win32
- 김성엽
- 연산자
- Direct2D
- Visual Studio
- Programming
- 포인터
- 함수
- doit코틀린프로그래밍
- Javascript
- Kotlin
- c++
- 이지스퍼블리싱
- c#
- 프로그래밍
- Yesterday
- Today
- Total
목록리버싱 (13)
F.R.I.D.A.Y.
이전 프로그램과 달리 메모리주소가 [ 401000 ]에서 시작하지 않고 [ 40116B ]에서 시작한다. 이는 사전 작업으로 프로그램을 시작하기 전 사전 작업을 위한 코드로 보인다. 쭉 실행하다보면 메모리주소[ 401233 ]에서 아래와 같은 코드를 볼 수 있다. call crackme1.00401000 프로그램 진입점이다. 밑줄 친 부분이 실제 메시지박스를 띄우는 함수를 콜하는 부분 [ 401003 ]위치에서 [F7]을 눌러 메시지콜 함수로 진입한다.메시지 박스 콜 함수에 진입한 모습 그러면 위 이미지와 같은 메모리 주소로 이동한다. [ 40102E ]에서 local.1과 5를 비교해 ZF에 저장한다. 그러면 jnz에 의해 다음 메모리 주소로 이동할지, jnz가 지정한 메모리 주소로 갈지 분기를 정한다..
abexcm1(실습).exe를 실행하면 위와같은 메시지가 출력된다. 그리고 [확인]을 누르면 Error라는 제목의 메시지가 발생하는데, 이를 아래와같은 메시지로 출력할 수 있도록 코드를 수정해야한다. " Ok, I really think that you HD is a CD-ROM! :p " 처음 olly를 실행해서 abexcm1을 열게되면 아래와 같은 어셈 코드가 나온다.ASM 코드 (x64라서 그런지 모듈명이 ntdll이다 ) 이 상황에서 [F9]를 누르면 프로그램의 진입점, 즉 프로그램이 시작하는 첫 코드로 이동하게 된다. 아래 이미지와 같은 화면이 나오면 된다. 메모리의 주소는 [ 401000 ]으로, 이 주소가 프로그램의 시작이다. 그외에는 오류. [F8]을 이용해 메모리 주소가 [ 401024 ..
단축키 설명 Ctrl + F2 다시 디버깅 ( 프로그램을 종료하고 다시 디버깅) F7 현재 코드 실행 (함수 호출시 함수 내부로 진입) F8 현재 코드 실행 (함수 호출시 함수 실행 후 다음 코드 이동) Ctrl + F9 함수코드 내에서 탈출 ( caller로 이동) Ctrl + G 원하는 코드 줄로 이동 ' ; ' comment 추가 (주석기능) ' : ' Label 추가 ( 메모리 주소에 이름 부여) F2 Break Point 설정/해제 Alt + B Break Point 목록 F9 실행, BP가 걸린 곳까지 실행 ' * ' 현재 BP의 위치를 보여줌 ' - ' 직전 커서 위치를 보여줌 Ctrl + F8 F8 작업 지속 실행