posted by 블르샤이닝 2014. 3. 24. 10:39
728x90

두가지 방법.


1. Ctrl + F 를 눌러서 RETN 0c를 검색한다. 

그 밑에 두개의 명령에 BP를 걸어준다. 그다음 진행하면 된다.

EX)

RETN 0C

PUSH 0            <====여기서 BP

RETN               <====여기서 BP 


---------------------------------------------진행하면 


RETN 0C 

PUSH 00401BF3            <======OEP로 복원되어 RETN으로 해당 주소값으로 이동하게 된다. 

RETN 



2. 맨처음 PUSHAD 한번 진행해서 레지스터값 ESP부분에 하드웨어 BP 걸어서 진행. 해당 PUSHAD(모든 레지스터를 저장)을 한것을 POPAD에서 풀어주게 되는데 이때 OEP부분이 나오게 되는거다. 결론은 위에 주소(위치)랑 같다.

EX)

POPAD 

JNZ         SHORT 009263BA

MOV        EAX, 1

RETN        0C

PUSH       0

RETUN

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

진행하면 위와 똑같이 변함.


결론적으로 해당 OEP의 위치는 같은것을 찾게됨. 다만 두번째는 바이너리를 이용하여 찾는방법이고, 두번째는 저장된 레지스터가 풀리면서 나오게되는 ESP의 위치의 OEP값을 찾게되는거다.


개인적으로 1.이 좀더 빠르고 쉽다. 어느걸 이용하든 개인의 자유 (인터넷 및 배우내용을 토대로 적음) 

(오타나 태클부분 환영합니다. 잘못된 점 가르쳐 주시면 좋은 배움이 됩니다. )






728x90

'리버싱' 카테고리의 다른 글

가상머신인지 확인하는 어셈코드  (0) 2014.04.07
PEcompect 언팩킹  (0) 2014.03.27
thmida 2.xx 버젼 언팩 튜토리얼  (0) 2014.02.04
mfc 에서 #32770(Dialog)의 의미  (0) 2014.01.20
스레드 패턴 만드는법  (0) 2013.12.11