336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

함수를 부를 때 정해진 규칙이 있다 -> 함수 호출규약 


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  -> 





cdecl.exe


fastcall.exe


stdcall.exe




-----------------------


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

PDF 


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
Posted by af334