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
'리버싱' 카테고리의 다른 글
관리자 그룹으로 권한 상승위함 코드(CreateWellKnownSid, EqualSid ) (0) | 2014.04.17 |
---|---|
가상머신인지 확인하는 어셈코드 (0) | 2014.04.07 |
ASPACK 언팩 (0) | 2014.03.24 |
thmida 2.xx 버젼 언팩 튜토리얼 (0) | 2014.02.04 |
mfc 에서 #32770(Dialog)의 의미 (0) | 2014.01.20 |