posted by 블르샤이닝 2012. 10. 18. 11:23
728x90

안티리버싱이라고 하기엔 좀 애매한 부분이 잇지만, 동적분석 및 분석을 방해하기 위해서 쓰이기 때문에 안티리버싱이라 하겠다. 이건 개인적인 소견이다~ㅎㅎ 


퍼온글과 내가 본 부분을 덧붙이겠다. 문제되면 비공개로 바꾸도록 하겠습니다.

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


커널모드 드라이버를 사용하는 디버거들은 이름이 정해진 장치들과 통신하여 작동 됩니다. 그래서 이 장치이름으로 핸들을 얻기를 시도했을때 성공한다는 것은 디버거가 활성화 되어 있다는 의미는 아니더라도 현재 존재는 하고 있다는 뜻입니다. 이를 이용해 CreateFile() 함수의 dwCreationDisposition 파라메타에 OPEN_EXISTING 을 전달하고 다음 디바이스 이름들을 넣는 방식으로 디버거의 존재를 알 수 있습니다. 

 

HANDLE WINAPI CreateFile(
  _In_      LPCTSTR lpFileName,
  _In_      DWORD dwDesiredAccess,
  _In_      DWORD dwShareMode,
  _In_opt_  LPSECURITY_ATTRIBUTES lpSecurityAttributes,
  _In_      DWORD dwCreationDisposition,
  _In_      DWORD dwFlagsAndAttributes,
  _In_opt_  HANDLE hTemplateFile
);
 

 

• SoftICE: \\.\SICE\\.\SIWVID\\.\NTICE
• RegMon: \\.\FILEVXG\\.\REGSYS
• FileMon: \\.\FILEVXG\\.\FILEM
• \\.\TRW
• SoftICE extender: \\.\ICEEXT


아래 그림은 해당 프로그램이 동작하는것을 확인하는 코드부분으로 해당 프로그램이 동작시 윈도우 메시지 창을 띄운다.

ida 코드부분



728x90