[Reversing] PEB, Anti-Debugging PEB란? Process Environment Block로 프로세스의 정보를 담고있는 구조체로 FS 레지스터를 통해 얻을 수 있다. 각 프로세스들 마다 PEB를 가지고 있으며, 스레드로는 TEB를 가지고 있다.FS:[18] = TEB 주소 또한 PEB를 이용하여 dll과 api 주소를 얻을 수 있으며, 프로세스의 디버깅 유무도 함께 알 수 있다. 0x002 BYTE BeingDebugged; 0x008 void* ImageBaseAddress; 0x00C _PEB_LDR_DATA* Ldr; 0x018 void* ProcessHeap 0x064 DWORD NumberOfProcessors; 0x068 DWORD NtGlobalFlag; PEB의 안티..
[Reversing] ZwSetInformationThread, Anti-Debugging 참고> https://www.geoffchappell.com/studies/windows/km/ntoskrnl/api/ps/psquery/class.htm> http://www.openrce.org/reference_library/anti_reversing ZwSetInformationThread의 두 번째 인자 값을 확인하여 안티디버깅 유무를 확인 할 수 있다. 두 번째 인자 값에 0x11(ThreadHideFromDebugger)를 전달할 경우 디버깅을 체크 확인하여, 우회를 원하면 해당 값을 0으로 수정하면 된다. typedef DWORD (WINAPI *PFZWSETINFORMATIONTHREAD) ( HA..
[Reversing] Anti-Reversing - 참조> http://unprotect.tdgt.org/index.php/Anti-debugging - 샘플 파일 다운로드> 첨부파일 샘플에 적용된 안티 디버깅, 안티 VM 기법에 대해 확인하였다. IsDebuggerPresent, CheckRemoteDebuggerPresent API 안티 디버깅 0x4019D0()에서 IsDebuggerPresent()을 이용하여 디버거를 통해 호출이 되었는지를 확인한다. 디버거 환경이 아니라면 “0”을 반환하고, 디버거 환경이라면 “0”이 아닌 값을 반환 한다. CheckRemoteDebuggerPresent()의 v1 즉, GetCurrentProcess() 현재 프로세스의 핸들을 얻는다. CheckRemoteDe..
- Total
- Today