티스토리 뷰

 

* Ollydbg 사전 환경설정
- udd, plugins 폴더 생성 및 경로 설정
- Option/debugging/start/~from entry point of main module -> 편리함

할일 : HDD를 CD-ROM으로 인식되도록 하자.

ollydbg attach
PE Tool

ImageBase + Add. of EP = 401000에서 시작되는것을 디버거에서 확인가능.

- IAT(Import Address Table)에 있는 API를 호출하는 경우는,
JMP DWORD PRT DS:[함수주소] 와 같은 방식으로 사용되는것도 확인할 수 있다.

- Step Over(F8) vs Step Into(F7)
- 일반적으로 USER32, KERNEL32와 같은 시스템DLL은 패스

- Breakpoint(F2) & Run(F9)
- restart(Ctrl+F2)
- 전진/후진(+/-) ...한계있음

- PUSH로 4개의 숫자를 스택에 넣어, MessageBoxA()함수로 인자 전달
- 특히 PUSH OFFSET ~부분은 메모리의 데이터를 스택에 넣는다
- 메모리의 문자열을 읽을땐 00(NULL) 단위로 읽음

[분석]
- 4번의 push과정으로 인자를 넣고, USER32.dll의 MessageBoxA() 호출 > 첫번째창 뜸
- "c:\"를 인자로 넣고, KERNEL32.dll의 GetDriveTypeA() 호출
- eax, esi 증감
- eax와 esi, CMP 비교후 그 결과에 따라 JE 점프문 분기

MSDN

[해결]
1. GetDriveTypeA()의 호출결과로 eax에 3이 저장되는데, 이를 CD-ROM의 리턴값인 5로 바꾼다.
> but, 출제의도는 초기 esi값이 FFFFFFFF로 esi=eax=3이 되어 조건을 통과하도록 설계된것같으나, 어째선지 초기 esi값이 401000이라서 CMP문을 만족시켜주진 못한다.
2. 점프문패치, 플래그패치 등 일반적인 우회방법들 (생략...'FSC_Level1'포스팅 참고)

결과 화면

'Security&Hacking > Reversing' 카테고리의 다른 글

Reversing) abex crackme #3  (0) 2019.09.11
Reversing) abex crackme #2  (0) 2019.09.11
Reversing) 기본 C문법 리버싱 (if문, for문)  (0) 2019.09.11
Reversing) CrackMe.exe v1.0 (Cruehead/MiB)  (0) 2019.09.11
Reversing) FSC_Level 1  (0) 2019.09.11
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
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
글 보관함