함수를 부를 때 정해진 규칙이 있다 -> 함수 호출규약
caller
callee
cdecl -> 가변인자 사용 가능
stdcall -> callee에서 인자 정리 -> retn 4
ret -> esp 의 값을 eip에 넣음
-> 가변 인자 함수 사용 불가 -> 인자 정리 코드가 callee에 정해져 있음 -> 예외 있음
fastcall -> 가장 빠름
-> callee
-> 인자 2개까지 ecx,edx 레지스터에 우선 저장
-> 가변 인자 함수 사용 불가 -> 인자 정리 코드가 callee에 정해져 있음
-------------------
ollydbg 설정
udd
plugin 폴더 생성
appearance
udd
plugin 폴더 지정
dll 파일 plugin에 넣기
우클릭 appearance -> christmas tree
----
주소 | disassembler -> assembly
hex dump -> 메모리 창
step over -> f8-> 함수는 그냥 넘어가고 진행
step into -> f7 -> 함수 안으로 들어감
break point -> f2 ->
run program -> f9 -> 브레이크 포인트까지 실행
restart program -> ctrl + f2 ->
execute till return -> ctrl +f9 ->
-----------------------
PE 구조
portable executable
어떤곳에서도 이식,실행 가능한 파일
실행파일 구조
외울게 많음
이미지로 부팅 -> PE -> 조금 다른 PE
프로그램
프로그램 로더(PE loader)
MZ(도스 설계자 이름의 약자) 확인 -> PE 확인 -> (메모리에 올라간 후 실행)
메모리에 로드
-------------
PE 란 ?
마이크로소프트 windows 3.1부터 지원 되는 (실행)파일의 형식
종류
실행 파일 계열 : EXE,SCR(화면보호기)
라이브러리 계열 : DLL, OCX(Active-X)
드라이브 계열 : SYS
오브젝트 파일 계열 : OBJ(컴파일)
PE view
HSD (hex editor)
Dos.H
NT.H
Section.H
.text
.data
.edata
.idata
.rsrc
...
...
-> 구조체의 구조로 이루어져 있음
-> 멤버가 존재
------
PNG
scr -> MZ -> PE
dll -> MZ -> PE
exe -> MZ -> PE
--------
PE 조작
사진 파일 안에 exe파일을 숨겨 놓기
두개의 파일 동시에 실행
안티 디버깅
------------
DOS 헤더
MZ
elf -> NT 헤더의 offset이 있는지 확인 해야 함 -> NT 헤더가 있는 주소
NT 헤더의 멤버
-> PE signature(PE\0\0)
-> image file header -> 또다시 구조체의 형식으로 각각의 멤버를 가지고 있음
-> image optional header -> 또다시 구조체의 형식으로 각각의 멤버를 가지고 있음
-> 구조체 중에서 가장 큰 구조체중에 하나
Section Table / Section header
IMAGE_SECTION_HEADER[] -> 배열 구조
IMAGE_SECTION_HEADER[0]
IMAGE_SECTION_HEADER[1]
...
...
-> 특정 섹션의 정보 -> 섹션이 어디 있고, 상태가 어떤지 -> 담긴 정보를 확인 할 수 는 없음
-> 더 따라가봐야 함
-> 해당하는 섹션만 특정 정보를 알고 있음
-> section들에 대한 정보를 가지고 있음
-> .text -> 주로 코드가 저장되는 section
.data -> 코드에 필요한 문자열, 전역변수들 ...etc
.edata -> e for export -> export 함수 정보가 존재 -> 기준 파일에서 외부로 함수를 전달
.idata -> i for import -> import 함수 정보가 존재 -> 기준 파일에서 외부의 함수를 호출
.rsrc -> resource -> 아이콘, 메뉴, bitmap...etc
...
'Reversing' 카테고리의 다른 글
PE structure and review (0) | 2014.09.25 |
---|---|
summing-up questions (0) | 2014.09.24 |
analyzing assembly sentences (0) | 2014.09.23 |
assembly lingoes and structuring functions using assembly (0) | 2014.09.22 |
assembly lingoes and questions (0) | 2014.09.19 |