PE 실행 파일 구조
DOS_H
MZ
elfnew -> NT헤더의 시작 주소
NT_H
PE0\0\
file header
machine -> cpu 32 ->
..
..
time data stamp
sizeof optional header
characteristic
0x0002 -> exe
0x2000 -> dll
magic -> 몇 bit PE -> 0x10B
-> 0x20B
ep + imagebase -> 코드가 시작되는 주소
section alignment -> 메모리 배치 간격
file alignment -> 파일 배치 간격
1.driver
2.gui
3.cui
[0]export 함수
[1]
[9]
SECTION_H
virtual -> 메모리 상에서 섹션의 영역
...
..
sections...
.text -> code
.data -> 전역변수,문자열
.idata-> import 함수 데이터
edata -> export 함수 데이터
.resource
-----------------
Packing & MUP
exe 실행파일 압축 -> packing
압축풀기 -> unpacking -> MUP( manual unpacking ) 수동 압축해제
test.exe -> 일반 압축 알고리듬-> test.zip
-> 용량 작아짐
-> 실행 안 됨
test.exe -> Packer 알고리듬 -> test.exe
-> 용량이 줄어들기도 하지만 늘어나기도 함
-> 안티디버깅을 위해서 첨가하는 방어 코드때문에 용량이 늘어나기도 함
-> 실행됨 -> 복호화 코드가 먼저 실행되어 복호화한 후 실행 하기 때문
일반압축 123345556 -> 123456
packing 123345556 -> 125486 -> 용량도 줄이지만 암호화도 같이 사용
-> 원래 있는 데이터랑 조금다르게 보임
-> ollydbg
packing을 하는 이유
-> 파일 용량 압축
-> 예전부터 있던 기술 -> 네트워크에서도 사용
-> 악성코드에서 사용 -> 악성코드의 쉽고 빠른 전파를 위해서
-> 파일을 보호하는 용도 -> 안티 디버깅 & 리버싱
-> 디버깅하는 것을 막는 기술
->
packer -> 용량 줄이기
protector -> 안티 디버깅
-> 변종된 악성코드 방지
PE view로 패킹여부 확인
-> packer의 고유한 이름으로 section을 사용하고 있으면 packing된 상태
-> 해킹대회문제들중에 packing되있는 척하는 문제들이 있음
packing의 종류는 많지만 원리는 비슷
packing의 원리
프로그램A(정상적인실행파일exe) -> packer ->
실행압축된A + 복호화코드 -> 복호화 코드가 먼저 실행됨 -> 복호화된A + 복호화된 코드
복호화 코드분석하려고 하자 갑자기 꺼짐 -> 안티 디버깅 -> 우회 ->
-> 패킹하는 원리는 같지만 난이도는 다름
UPX 다운로드
원본파일을 보호해주지 않음 -> 복사 한후 사용하기
-> 패킹여부 확인
nothing found
va /rcva -> ollydbg 로 볼때 -> 메모리상
upx -1 putty.exe
upx -d putty.exe
---------------------
MUP
ep-> entry point
pep -> packed entry point
oep -> original entry point
Process
1.oep 찾기
2.dump
3.IAT (import address table) 수정
pep부터 시작해서
-> oep를 찾는 것이 핵심
분석
패킹이 풀려난 상태로 파일로 저장 -> 덤프를 뜬다
'Reversing' 카테고리의 다른 글
packing (0) | 2014.10.07 |
---|---|
packing and unpacking using (0) | 2014.10.06 |
report (0) | 2014.10.02 |
PE structure and review (0) | 2014.09.25 |
summing-up questions (0) | 2014.09.24 |