본문 바로가기

리버싱 핵심원리3

안티 디버깅 Dynamic 안티 디버깅 분류 Static, Dynamic - Static 기법은 디버깅 시작할 때 한번만 해체를 해주는 기법 - Dynamic 기법은 디버깅을 진행하면서 (해당 Anti기법을) 만날 때마다 해결하는 기법 Dynamic 안티 디버깅의 목적 목적은 내부 코드와 데이터를 리버싱으로부터 감추고 보호하는 것. 보통PE 프로텍터들에서 많이 사용되며 원본 프로그램의 핵심 알고리즘을 보호하기 위하여 사용됩니다. 디버거로 해당 프로그램이 실행될 수는 있을지언정 원본 프로그램의 핵심코드(OEP)로 트레이싱 하여 찾아갈 수 없도록 방해합니다. 예외 예외(Exception)를 이용하는 방법은 안티 디버깅의 단골 메뉴입니다. 정상적으로 실행된 프로세스에서 예외가 발생하면 SEH(Structured Exception Han.. 2022. 10. 5.
NtQueryInformationProcess 디버거를 탐지해내는 기법에 대한 설명입니다. ntdll!NtQueryInformationProcess() API를 이용하면 프로세스의 디버깅 관련 정보를 비롯하여 매우 다양한 정보를 얻을 수 있습니다. NTSTATUS WINAPI NtQueryInformationProcess( __inHANDLE ProcessHandle, __inPROCESSINFOCLASS ProcessInforamtionClass, __outPVOID ProcessInformation, __inULONG ProcessInformationLength, __out_optPULONG ReturnLength ) 두 번재 파라미터 PROCESSINFOCLASS ProcessInformationClass에 원하는 정보형식을 입력한 후 NtQu.. 2022. 9. 29.
TLS CALLBACK #include #pragma comment(linker, "/INCLUDE:__tls_used") void print_console(char* szMsg) { HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE); WriteConsoleA(hStdout, szMsg, strlen(szMsg), NULL, NULL); } void NTAPI TLS_CALLBACK1(PVOID DllHandle, DWORD Reason, PVOID Reserved) { char szMsg[80] = {0,}; wsprintfA(szMsg, "TLS_CALLBACK1() : DllHandle = %X, Reason = %d\n", DllHandle, Reason); print_console.. 2022. 8. 31.
반응형