검색결과 리스트
글
DAY 1 - 어셈블리언어
1.리버스 엔지니어링이란?
- 이미 만들어진 시스템을 역으로 추적하여 처음의 문서나 설계기법 등의 자료를 얻어 내는 일을 말한다.
즉, 실행파일을 분석해 소스코드를 알아내는 일
2.어셈블리언어란?
-기계어와 1:1 대응관계에 있는 언어를 말한다.
3.바이너리 디버거 종류
- Olly DBG
=http://ollydbg.de
=동적 악성코드 분석시 사용
- IDA Pro
=http://hex-rays.com/odapro/idadown.htm
=그래프뷰 기능 존재, 정적 악성코드 분석시 사용
-WinDBG
=http://www.microsoft.com/whdc/devtools/debugging/default.mspx
=MS사에서 제작
=Kernel + User 디버깅 가능 (명령어로 입력해야되는 것이 단점)
4.레지스터
-cpu내에 존재하는 저장공간으로 읽는 속도가 가장 빠르다
32bit General-Purpose Resgisters (32bit 범용 레지스터) |
|
EAX |
EBP |
EBX |
ESP |
ECX |
ESI |
EDX |
EDI |
EFlAGS |
AF |
CF |
OF |
PF |
SF |
ZF |
EIP |
|
|
*EAX
=누산기, 산술연산을 저장 하는 공간
=리턴값 저장에 주로 사용
*EBX
=간접 주소 저장 공간
= ex> JMP 1000(1000 주소로 이동) == EBX =1000, JMP EBX
*ECX
= 반복 카운터(반복문에서 사용)
= 반복이 한번 진행될때마다 안의 값은 하나씩 감소
= ECX>0
= ECX=5 == 5번 반복
*EDX
= EAX의 보조역할
= ex>64bit의 값을 EAX에 담을 시 상위 32bit는 EAX에 저장되고 하위 32bit는 EDX에 저장된다.
//EBP와 ESP는 stack과 연관
*EBP
=스텍 프레임의 기준점(고정)
*ESP
=스텍 프레임의 최상단(유동적)
*스텍은 높은 곳에서 낮은 곳으로 변수 생성(그림에서는 올라가고 있지만 실질적으로는 주소 감소)
//ESI 와 EDI는 주소와 연관
*ESI
=시작 주소 저장
*EDI
=도착 주소 저장
*EFALGS
=상태값 저장(0,1) -> 1:set , 0:clear
=종류 : AF,CF,OF,PF,SF,ZF
*AF,CF,OF
=>자리올림=1, 자리내림=0
*PF
=> 짝수=1, 홀수=0
*SF
=> 음수:1, 양수 :0
*ZF
=> 산술 연산 결과 저장
=> (산술연살 결과 = 0) == 1 , 나머지 == 0
*bit별 명칭 분류
EAX |
|
4byte(32bit) |
AX |
|
2byte(16bit) |
AH / AL |
|
1byte(8bit) | 1byte(8bit) |
*64bit 레지스터
=32bit 레지스터 앞에 'E'가 붙는데 이것을 'R'로 바꾸면 된다.
=ex> RAX,RCX,RDX
출처 == i2sec
'i2sec > Reverse Engineering' 카테고리의 다른 글
Day-02 어셈블리어 (0) | 2014.04.28 |
---|