2019.01.03.
책사서 리버싱 공부중에 abexcrackme시리즈랑 lena강의 다 봐보는걸 추천한다고 해서 해보기로 했습니다.
먼저 lena강의 주소
https://tuts4you.com/e107_plugins/download/download.php?list.17
ollydbg 공식사이트
ollydbg를 이용하여 lena 튜토리얼에 있던 reverseme를 열어보았다.
실행을 하니 다음과 같은 창이 뜬다.
1) virtual address 가상 주소
2) OP code
3) 어셈블리어
4) comment
5) 레지스터 - 데이터를 저장할수있는 특별한 장소 hexademical system
intel CPU의 경우 9개의 범용 레지스터를 갖는다.
EAX= Extended Accumulator Register
EBX= Extended Base Register
ECX= Extended Counter Register
EDX= Extended Data Register
ESI= Extended Source Index
EDI= Extended Destination Index
EBP= Extended Base Pointer
ESP= Extended Stack Pointer
EIP= Extended Instruction Pointer
자세한역할은 쓰면서 알아보자
32비트 레지스트는 8비트 단위로 나눠서 쓸수 있다
32bit 16bit 8bit
EAX AX AH/AL
EBX BX BH/BL
ECX CX CH/CL
EDX DX DH/DL
ESI SI
EDI DI
EBP BP
ESP SP
EIP IP
32bit 컴퓨터일 경우 0-FFFFFF까지 메모리를 쓸수 있다.
6) 스택 => 메모리의 종류로 LIFO구조(처음들어간것이 나중에 나간다)
다음은 실행 화면
단축키및 사용법
F9) RUN
F8) Step Over
F7) Step In
Ctrl+F2) Restart
F2) BreakPoint
2번째 줄에서 step in을 하여 함수안으로 들어가면 위의 사진으로 온다.
<어셈블리어>
PUSH: Stack에 입력한다
CALL: 뒤에 온것을 호출한다.
MOV: 뒤에값을 이동시킨다.
자세한것은 검색을 통해 알아보자
밑줄친 부분 두줄 위에 KERNEL32.CreateFileA를 검색해보았다.
comment 부분을 읽어보면 keyfile.dat를 찾는중이라고 한다.
JNE => Jump if not 0
ZFlag가 0이 아니면 건너뛴다
레지스터에서 Z를 두번클릭해 0을 만들어 건너뛰게 해줬다.
밑으로 내리다 보니 You really did it이라는 말과 함께 축하한다고 한다.
프로그램을 실행했을때 JNE JMP등을 통해서 이 지점까지 와야된다고 하는것이다.
실행결과
어셈블리어에 Space를 누르면 수정 가능 하다
위 사진처럼 JMP경로를 만들어주거나 실패했다는 메세지로 보내는 길을 NOP처리 시킨다.
수정한 코드는 위 사진처럼 새로 저장할 수 있다.
고찰:
리버싱을 시작하기 위해 ollydbg의 기본사용법과 레지스터에 관한 기초 지식을 익힐수 있었다.
'정보보안 > Lena's Reversing Tutorial' 카테고리의 다른 글
Lena's Reversing Tutorial 6 (0) | 2022.09.12 |
---|---|
Lena's Reversing Tutorial 5 (0) | 2022.08.16 |
Lena's Reversing Tutorial 4 (0) | 2022.08.15 |
Lena's Reversing Tutorial 3 (0) | 2019.01.07 |
Lena's Reversing Tutorial 2 (0) | 2019.01.04 |