정보보안 스터디 - 18주차 2일 - ollyDbg 사용법, PE 파일 구성
계산기.exe 에 대해 분석합니다.
계산기도 메모리에 올라와있는 형태를 ollydbg가 보여주는 것이기 때문에 실행중에는 편집할 수 없습니다.
기본으로 이미지베이스(주소) 백만부터 시작합니다.
물론 VSLR 기능이 없을 때 고정입니다.
☞ ollydbg 사용법
ni기능 하나씩 실행 F8 |
si기능 F7 로 들어가서 > F8 로 return까지 실행 |
F4 선택한 만큼갑니다. |
재실행 ctlr f2 |
F2 break point |
F9 계산기 실행 run F9 breakpoint 가 있다면 그 까지 |
* 명령이 실행될 위치로 다시 이동 |
해당폴더에 > UDD 파일 기록 남아있기 때문에
재실행해도 Breakpoint가 남아있습니다.
어셈플리어, 명령어를 바꿀 수 있습니다.
mov > 등 기계어를 바꿈 조작 > 편집기 가능합니다.
레지스터의 EAX 바꿀 수 있습니다.
Z 제로플래그 형태 0 1 바꿀 수 있습니다.
relative to EBP 기준으로 하면 스택 볼 수 있습니다.
메모리 주소랑 같이 다보입니다.
분석 도구
exeinfo
32비트 짜리 실행파일이고
비주얼 C++ 버전으로 제작되어있을거라는 것을 확인할 수 있습니다.
☞ PE (exe/dll) 파일 구성
PEview보면서
PE파일은 크게
섹션헤더. = 설명
섹션바디. = 데이터가 저장되어있습니다.
로 구성되어 있습니다.
DOS_HEADER
pFile보기(파일에서의 주소)로 볼 수도 있고, RVA로도 보기가 가능합니다.
데이터는 1바이트당 2개의 코드가 있습니다.
ascii가 아니라 16진수라서 그렇습니다.
총 2바이트씩 쭉 > 64바이트로 이루어져있습니다.
HxD로 볼 떄는
64바이트 > 16진수로 40길이로 이루어집니다.
만든사람의 시그니처인 MZ는 처음에 무조건 들어있는 것 입니다.
데이터와 HxD의 코드는 반대로 5A4D > 4D5A 로 봐야합니다.
해당 문자를 확인하는 방법은
ascii 코드 표봐서 16진수에 대한 문자로 뭔지 확인합니다.
해당하는 바이트와 위치(RVA)를 HxD에서 확인합니다.
MS-DOS stub program
시작하면 문자열을 출력해주는 내용
NT_HEADERS
248바이트
많아서 3분류로 나눕니다.
시그니처(PE)
SECTION_HEADER .text, .data, .rsrc, .reloc 등
SECTION(4개) .text, .data, .rsrc, .reloc 등
☞ RVA to VA 또는 RAW
메모리에서의 위치와 크기가 파일(RAW)에서의 위치와 크기랑 서로 다릅니다.
메모리에서 x1000이라면 파일에서 x400인 식입니다.
섹션 크기를 계산할 수 있고
sesision alignment때문에 4096 이런 단위로 남게됩니다.
따라서 남는부분인
패딩 부분도 계산할 수 있어야 합니다.