반응형
안티-리버싱 기법에 대해 관심이 많으신 분들은~~ 다들 알만한 내용입니다만...
-0- 스스로 정리하는 차원에서;; 살포시 포스팅 해봅니다..
PEB 에서 ImageBase 값 및 LDR_DATA 의 첫번째 모듈(보통은 메인 프로세스죠;;)의
이미지베이스, 엔트리포인트, 이미지크기 등을 조작해서 해당 정보를 읽지 못하게 하면 되는데요~
코드는 대략 아래와 같습니다.
__asm { // 프로세스의 이미지 베이스 제거 MOV EAX, DWORD PTR FS:[0x30] MOV DWORD PTR [EAX + 0x08], 0 // LDR_DATA 의 첫번째 모듈 정보 조작 MOV EAX, DWORD PTR FS:[0x30] MOV EAX, DWORD PTR [EAX + 0x0C] MOV EAX, DWORD PTR [EAX + 0x0C] // 모듈의 베이스 주소 MOV DWORD PTR [EAX + 0x18], 0 // 모듈의 엔트리 포인트 MOV DWORD PTR [EAX + 0x1C], 0 // 모듈의 사이즈 ADD DWORD PTR [EAX + 0x20], 0x1000 }
LordPE 에는 'correct ImageSize' 라고 이미지 사이즈가 조작된 경우 이를 어느 정도 바로잡아 주는 기능이 있는데..
위와 같이 이미지 베이스 등~ 정보를 다 조작해버리면 그 기능도 사용할 수 없습니다~ :)
( 직접 분석해보면서 부분 덤프를 해야하겠죠;;... )
보통은 위와 같은 구현으로 잘 돌아갑니다만...
테스트를 해보니 문제가 발생하는 경우가 있었습니다..
실행파일이 "Delay Import" 를 가지는 경우인데요~
정확한 이유는~~ =0= 다음에 좀 더 살펴보고 이어서 포스팅을 할까 합니다..
( 사실 =0= 아직 이유를 모르거든요;;;.. )
암튼.. 위와 같은 방식을 단일 실행파일에 적용하는 것은 괜찮겠지만...
패커나 프로텍터 등~ 다양한 파일을 지원하는 프로젝트에 적용하는 것은~
고려를 해봐야될 듯 합니다.. ^^:
반응형
'Reverse Engineering' 카테고리의 다른 글
사람 난감하게 만든 '언인스톨러'... (6) | 2010.03.22 |
---|---|
3rd 코드엔진(CodeEngn) 컨퍼런스~!! (18) | 2009.06.24 |
Anti-Unpacker Tricks ( by Peter Ferrie ) (3) | 2009.02.25 |
Themida 의 API Wrapping 분석(?) (28) | 2008.11.20 |
XP SP3 와 OllyAdvanced 문제..;;; (3) | 2008.05.15 |