일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 포인터
- c#
- Visual Studio
- Direct2D
- 김성엽
- 지식나눔강좌
- Kotlin
- 리뷰
- 백준
- tipssoft
- Windows
- 문법
- 연산자
- 이지스퍼블리싱
- CS
- Tips강좌
- c
- doit코틀린프로그래밍
- 배열
- 알고리즘
- VS ERROR
- Programming
- 함수
- Tips프로그래밍강좌
- Javascript
- Desktop
- 프로그래밍
- 티스토리
- c++
- Win32
Archives
- Yesterday
- Today
- Total
F.R.I.D.A.Y.
crackme2.exe 본문
반응형
프로그램을 처음 실행하면 위와 같은 윈도우가 화면에 나타난다.
[F9]를 누르면 [401000]으로 이동하지 않고 [4013C0]으로 이동하는데 프로그램이 시작하기 전, 사전 초기화 작업으로 보인다.
메모리 주소가 [4013C0]이다.
확인해보면 각 메모리 주소는 다음 행동으로 예측할 수 있다.
[401000] ~ [401076]
>> 윈도우 클래스 설정, 등록과정
[40107C] ~ [4010A7]
>> 윈도우 생성 과정
[4010AD] ~ [4010B3]
>> 생성된 윈도우 출력
[4010E2] ~ [4010FB]
>> 프로그램의 이벤트에 따른 행동을 위해 프로그램을 종료시키지 않음
프로그램 이벤트는 메모리주소 [401120]으로 시작하는 함수단에서 처리하는 것으로 보인다. WNDCLASS의 WndProc 부분을 넣는 곳은 [40105A]로 보인다.
[401120]에서 시작하는 함수는 [401208]까지 이어지며 만일 [40116A]에서 분기가 되어 [40117A]로 넘어오면 여기서부터 문자열 비교가 시작된다. 즉, 다른말로 패스워드 확인이 이뤄지는 것이다.
만일 패스워드가 일치하면 [4011CA]에서 [401202]로 분기가 일어나지 않고 바로 다음 명령어를 실행하며 진행한다.
비교 문자열인 "HackFun"이 패스워드이며, 비교를 성공적으로 이루면 "HackFun" 문자열은 "SEP"로 변한다.
비교 과정은 한번 시행에 문자 두 개를 차례로 비교한다.
728x90
반응형
'리버싱 > Olly' 카테고리의 다른 글
OpenSecureLab#1_Release.exe (0) | 2018.09.26 |
---|---|
리버싱 - crackme1.exe (0) | 2018.09.13 |
리버싱 - abexcm1(실습).exe (0) | 2018.09.13 |
Ollydbg 기본 단축키 (0) | 2018.09.13 |
Comments