디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

안티 리버싱 연습하는데 이상한게 있다.

MOBIUS(121.158) 2013.03.17 00:52:10
조회 143 추천 0 댓글 2

분명 책에는 이러이러하게 코드짜면 이렇게 뚫림 이라고 설명해놓았는데

안뚫린다 ㅋㅋㅋ
뭐 안뚫리면 좋은거긴 한데, 왜 안뚫리는건지 모르니까 찜찜하네...

코드 일부 공개한다.

// NtQueryInformationProcess 디버깅 무력화
typedef DWORD (WINAPI *APINtQueryInformationProcess)(HANDLE, DWORD, PVOID, DWORD, PVOID);
APINtQueryInformationProcess NtQueryInformationProcess;
HANDLE CheckDebugPort(HANDLE hProcess)
{
        HANDLE hPort = NULL;
        ULONG result = 0;
        HMODULE hntdll;

        hntdll = GetModuleHandle(L"ntdll.dll");

        NtQueryInformationProcess = (APINtQueryInformationProcess)GetProcAddress(hntdll, "NtQueryInformationProcess");

        NtQueryInformationProcess(hProcess, 7, &hPort, sizeof hPort, &result);

        return hPort;
}

// DebugObject 디버깅 무력화
typedef _Return_type_success_(return >= 0) LONG NTSTATUS;
/*lint -save -e624 */  // Don't complain about different typedefs.
bool DebugObjectCheck()
{
        HANDLE hDebugObject = NULL;
        NTSTATUS Status;

        ULONG result = 0;
        HMODULE hntdll;

        hntdll = GetModuleHandle(L"ntdll.dll");

        NtQueryInformationProcess = (APINtQueryInformationProcess)GetProcAddress(hntdll, "NtQueryInformationProcess");

        Status = NtQueryInformationProcess(GetCurrentProcess(), 0x1e // ProcessDebugObjectHandle
                                                                                , &hDebugObject, 4, NULL);

        if( Status!= 0x00000000 )
        {
                return FALSE;
        }

        // 디버거 감지.
        if(hDebugObject)
        {
                return TRUE;
        }

        return FALSE;
}
// DebugInherit 디버깅 무력화
bool CheckProcessDebugFlags()
{
        DWORD NoDebugInherit = 0;
        NTSTATUS Status;

        ULONG result = 0;
        HMODULE hntdll;

        hntdll = GetModuleHandle(L"ntdll.dll");

        NtQueryInformationProcess = (APINtQueryInformationProcess)GetProcAddress(hntdll, "NtQueryInformationProcess");

        Status = NtQueryInformationProcess(GetCurrentProcess(), 0x1f // ProcessDebugObjectHandle
                , &NoDebugInherit, 4, NULL);

        if( Status!= 0x00000000 )
        {
                return FALSE;
        }

        // 디버거 감지.
        if(NoDebugInherit == FALSE)
        {
                return TRUE;
        }

        return FALSE;
}
// HideThread 디버깅 무력화
bool HideThreadFromDebugger(HANDLE hThread)
{
        typedef LONG NTSTATUS1;
        typedef NTSTATUS1 (NTAPI *TNtSetInformationThread)(HANDLE,UINT,PVOID,ULONG);

        NTSTATUS1 Status;

        TNtSetInformationThread NtSetInformationThread = (TNtSetInformationThread)GetProcAddress(GetModuleHandle(L"ntdll.dll"), "NtSetInformationThread");
        if(NtSetInformationThread == NULL)
        {
                return FALSE;
        }

        if(hThread == NULL)
        {
                Status = NtSetInformationThread(GetCurrentThread(), 0x11 //ThreadHideFromDebugger
                        , 0, 0);
        }
        else
        {
                Status = NtSetInformationThread(hThread, 0x11, 0, 0);
        }

        if( Status != 0x00000000)
        {
                return TRUE;
        }

        return FALSE;
}




BOOL isRelease = TRUE;
        if( isRelease )
        {
                // IsDebuggerPresent 디버깅 무력화.
                // OllyAdvanced - IsDebuggerPresent 무력화로 우회가능
                DWORD dwIsDebugger = 0;
                __asm
                {
                        mov                eax, fs:[18h]
                        mov                eax, [eax+30h]
                        movzx        eax, byte ptr [eax+2]
                        mov                [dwIsDebugger], eax
                }
                if( dwIsDebugger != 0 )
                {
                        MessageBox(NULL,L"you can not run with debugger!!!",L"IsDebuggerPresent",MB_OK);
                        return FALSE;
                }

                // OllyAdvanced - CheckRemoteDebuggerPresent 무력화로 우회가능
                // single step (F7,F8)엔 효과가 없다.
                BOOL bDebugged = FALSE;
                CheckRemoteDebuggerPresent(GetCurrentProcess(), &bDebugged);
                if(bDebugged)
                {
                        MessageBox(NULL,L"you can not run with debugger!!!",L"NtQueryInformationProcess",MB_OK);
                        return FALSE;
                }

                // single step (F7,F8)엔 효과가 없다.
                int dwDebugger = Int3SingStepDetection();
                if(dwDebugger)
                {
                        MessageBox(NULL,L"you can not run with debugger!!!",L"9 Int3SingStepDetection",MB_OK);
                        return FALSE;
                }

                // 디버거로부터 감추길 원하는 스레드를 넘겨준다.
                // single step (F7,F8)엔 효과가 없다.
                // OllyAdvanced - ZwSetInformationThread 무력화로 우회가능하다고 하나 이상하게 무력화가 안됀다. 대체 뭐지 ㄱ-
                bDebugged = HideThreadFromDebugger(GetCurrentThread());
                if(bDebugged)
                {
                        MessageBox(NULL,L"you can not run with debugger!!!",L"5 NtSetInformationThread",MB_OK);
                        return FALSE;
                }

                // single step (F7,F8)엔 효과가 없다.
                // OllyAdvanced로 무력화 가능하다고 하나. 이상하게 무력화가 안됀다. 대체 뭐지 ㄱ-
                bDebugged = DebugObjectCheck();
                if(bDebugged)
                {
                        MessageBox(NULL,L"you can not run with debugger!!!",L"6 NtQueryInformationProcess::DebugObject",MB_OK);
                        return FALSE;
                }

                // OllyAdvanced로 무력화 가능하다고 하나. 이상하게 무력화가 안됀다. 대체 뭐지 ㄱ-
                bDebugged = CheckProcessDebugFlags();
                if(bDebugged)
                {
                        MessageBox(NULL,L"you can not run with debugger!!!",L"7 NtQueryInformationProcess::DebugInherit",MB_OK);
                        return FALSE;
                }
        }



내가 뭐 실수한거라도 있는건가?

추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 이번주 설문은 탈모 걱정 없어 보이는 머리숱 금수저 스타는? 운영자 25/07/14 - -
AD 디지털 액세서리 기간한정 세일! 운영자 25/07/11 - -
350316 근데 트위터 저거 디게 거슬리지 않음? [2] (168.126) 13.03.18 80 0
350313 니네 뭐 걸신 들렸냐? [6] py(175.223) 13.03.18 120 0
350311 ㅇㅇ횽 회사일 중이신가? 징기스칸4(101.1) 13.03.18 43 0
350310 우리는 회사에 다니면서 부당한 일을 봤을 때 에어로홍갤로그로 이동합니다. 13.03.18 49 0
350309 나는 지금 심각한 실존의 문제에 빠져있다 에어로홍갤로그로 이동합니다. 13.03.18 45 0
350308 김슬기님 고민 에어로홍갤로그로 이동합니다. 13.03.18 64 0
350306 니들 선배가 왜 무서움? [2] ㅇㅇ(223.62) 13.03.18 115 0
350305 차 전시회 가볼까? 에어로홍갤로그로 이동합니다. 13.03.18 39 0
350304 핸폰으로 컴파일햇는데 왜이러졍 [5] ㅎㅋㅋㅋ(175.223) 13.03.18 123 0
350303 강의자료 달라는 새끼가 제일 짜증난다 [1] ?(110.70) 13.03.18 61 0
350301 형님들 이 문제 하나만 풀어주세요 ㅠㅠ [4] ㅇㅇ(211.59) 13.03.18 108 0
350298 핸드폰으로 c++ 할수없을까요 [2] ㅎㅋㅋㅋ(175.223) 13.03.18 103 0
350297 c++ 코드짜야되는데 도움좀 ㅠㅠ [5] 시부럴(175.121) 13.03.18 82 1
350296 밥맛있다 히히 [1] LastCorona갤로그로 이동합니다. 13.03.18 40 0
350295 필독!!! 스파이킹 원장님 지시말씀!!! [1] 에어로홍갤로그로 이동합니다. 13.03.18 65 0
350294 형들 microsoft visual C++ 간단한 수식좀 도와주세요 ㅠㅠ [2] ㅇㅇ(121.127) 13.03.18 59 0
350292 알 수 없다고 나란 사람을 에어로홍갤로그로 이동합니다. 13.03.18 35 0
350291 빛의 속도는 왜 2.99792458×108m/s 일까?.. [17] (168.126) 13.03.18 244 0
350288 codesafer가 얼마 전에 피자 돌렸다던 그 호갱임? [4] ㅇㅇ(14.146) 13.03.18 170 0
350286 김치국의 나이든 새끼들은 왤케 꼰대같이구냐 [9] DART(116.41) 13.03.18 247 0
350284 ㅇㅇ형 계십니까? 1ㅇ(1.245) 13.03.18 50 0
350282 님들 프로그래머에게 증명론이란?? 야간편돌이(175.116) 13.03.18 47 0
350281 텐서 배우면 프로그래밍에 좋냐 [1] ㅁㄴㅇㄹ(203.255) 13.03.18 66 0
350278 Idedroid로 학교에서 짬짬히 코딩짜는데 [7] 백이(223.62) 13.03.18 113 0
350277 ㅇㅇ 저새끼 애들이 종 빨아주니까 정신줄 놓은듯ㅋㅋㅋ [7] ㄱㄴㄷ(211.246) 13.03.18 191 0
350275 수업중에 문학이 갑인듯 백이(223.62) 13.03.18 34 0
350272 안녕하십니까 프갤 형님들 [2] ㅎㅋㅋㅋ(59.152) 13.03.18 71 0
350271 리눅스 저수준 파일입출력 질문 [3] 질문(164.125) 13.03.18 68 0
350269 전철 존나 덥다 73(211.234) 13.03.18 30 0
350268 ㅇㅇ형 제한 깨셨나요? [11] 징기스칸4(202.31) 13.03.18 207 0
350267 님드라 저 0값을 쓸때 [1] ?(175.203) 13.03.18 53 0
350266 와 지금보니깐 이산수학 책 문제가 이상한 것 같음 야간편돌이(175.116) 13.03.18 53 0
350265 |A|=10, |B|=12, |C|=11, |A∩B|=5 성님들헬프 [2] 야간편돌이(175.116) 13.03.18 65 0
350263 선생님들 헬프 [2] 야간편돌이(175.116) 13.03.18 73 0
350262 아제랑다른사람들잠없는듯 백이(182.214) 13.03.18 34 0
350261 프갤 갑자기 미쳤나 왜이래 dd(1.214) 13.03.18 102 0
350260 아 진짜 졸립네요 [1] 백이(182.214) 13.03.18 42 0
350259 입에붙는거님 님 이웃집꽃미남 보셨나요 [1] 야간편돌이(175.116) 13.03.18 38 0
350258 성님들 이거 답좀 알려주세요 [3] 야간편돌이(175.116) 13.03.18 52 0
350257 1시간 약간 안잤는데 개운하다 [3] 입에붙는거갤로그로 이동합니다. 13.03.18 60 0
350254 아까부터 누군가 덧글을 지운다. [1] 생물학(111.118) 13.03.18 55 0
350252 제행무상: 모든 것은 움직인다 [4] 에어로홍갤로그로 이동합니다. 13.03.18 107 0
350250 누군가 발견한 더 놀라운 사실은 [6] 생물학(120.50) 13.03.18 127 0
350248 곽가 무용담을 해주자면 예전에 곽가랑 나랑 둘이서 3페이지 넘긴적있는데 [3] 생물학(120.50) 13.03.18 102 0
350247 프갤 늙바리들 보니까 졸음이 다 달아났네 이제 퇴갤해야지 규라타스(211.189) 13.03.18 51 0
350246 페이지 수 넘어간것보소 [1] ㅋㄱ(183.96) 13.03.18 50 0
350245 전에 회사에서 팀장이 했던 이야기 [2] (168.126) 13.03.18 146 0
350244 늙바리들에게 내는 문제 [1] 규라타스(211.189) 13.03.18 62 0
350243 한시간 뒤 갑자기 글이 모두 사라지면 99% 곽가다 생물학(120.50) 13.03.18 46 0
350241 codesafer가 프갤이 처음이라 잘 모르나본데 [1] 생물학(120.50) 13.03.18 122 0
뉴스 스무공일∙EROS∙김도안, 7월 2주 차 위클리 키트앨범 스포트라이트 선정! 디시트렌드 07.11
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2