Security/리버싱

정보보안 스터디 - 18주차 2일 - ollyDbg 사용법, PE 파일 구성

wonder12 2023. 2. 10. 23:56

 

 

 

계산기.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 이런 단위로 남게됩니다. 

따라서 남는부분인

패딩 부분도 계산할 수 있어야 합니다.