posted by 블르샤이닝 2014. 3. 27. 14:51
728x90

간단하다....매우 간단하다...하지만 요즘 기억력이 좋지않은 관계로 걍 정리해둔다.

 

1. 처음 파일을 올리에 올리면 ep부분에 다음과 같을것이다.

   mov     eax, xxxxxxxxx  (oep의 위치를 스택에 저장하기 위해 쓰이는 것이다. xxxxxxxx가 oep가 된다

   push    eax

 

 

2. xxxxxxxx를 위에 올리에서 보이는 주소로 하면 잘 안보여도 00cf9518이다. 이주소로 예를 들겠다.

  해당 주소에 그냥 bp를 건다. 걍 f2

 

3. 그리고 run시키면 jmp가 아래에 보일것이다. 걍 근처에서 쭉 살펴보면 특정 바이너리 어셈코드가 있다.

 JMP     EAX

 

 

해당 어셈명령어는 거의 밑에쯤에 있다 뒤에보면 00이 줄기차게 있는것을 알수있다.(아닌경우도 있다ㅎ)

 

JMP EAX는 해당 OEP로 이동을 뜻한다.

 

여기서 조금 더 설명하면 POP EDX, POP, ESI, EDI 등 모든 레지스터들을 POP 해주는데 이것은 팩킹에서 주로 쓰이는 방법으로 저장되었던 레지스트리들을 가져오는것이다.

설명을 잘 못하니 해당부분은 PUSHAD ~ POPAD 부분에 대해 검색해서 찾아보면 이해될것이다.

 

이상 끝~~~~~~~~(IAT 복원은 심슨 아저씨 툴로 하면되고, 그부분은 요즘 설명잘된 블로그가 많으니 참고 하시면되요 ㅋ)

 

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

 

728x90