디시인사이드 갤러리

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

갤러리 본문 영역

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

MOBIUS(121.158) 2013.03.17 00:52:10
조회 141 추천 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/07 - -
AD 디지털 액세서리 기간한정 세일! 운영자 25/07/11 - -
공지 프로그래밍 갤러리 이용 안내 [88] 운영자 20.09.28 45400 65
2871107 짱깨좌빨척살 ! ♥로스트미디어냥덩이♥갤로그로 이동합니다. 12:31 4 0
2871105 나님 낮술 때리니 기분이 Joker등여~⭐+ ♥로스트미디어냥덩이♥갤로그로 이동합니다. 11:53 11 0
2871104 웹앱땔깜들 소멸이얼마남지않았다 네오커헠(211.235) 11:48 23 0
2871101 냥덩이❤+가 지배하는 세상⭐+ [3] ♥로스트미디어냥덩이♥갤로그로 이동합니다. 11:03 27 0
2871100 선임 육휴가고 경력자 뽑아서 그자리채웟는데 [7] ㅇㅇ(211.234) 10:58 46 0
2871099 전철에 비실이할머니 개멍청한유라갤로그로 이동합니다. 10:56 19 0
2871098 백종원 보다가 은현장 보니깐 천사가 따로없네 [7] 야옹아저씨갤로그로 이동합니다. 10:36 57 5
2871097 킬링필드의 진실, 그 때 미군 폭격이 있었다 발명도둑잡기(118.216) 10:33 7 0
2871095 고수준 개발자들은 gpu 개비싼거 사서 api키 따로 안씀? ㅇㅇ(119.194) 10:31 26 0
2871094 이게 뭐라고 신기하냐 프갤러(113.59) 10:26 23 0
2871093 관세폭탄 쳐맞고 술이나 처먹는 무능좌파 2찢명 [1] ♥로스트미디어냥덩이♥갤로그로 이동합니다. 10:17 24 0
2871092 윤석열이 싸지른 똥 이재명이 열심히 치우는 중 [1] 야옹아저씨갤로그로 이동합니다. 09:51 21 0
2871089 ..!! [1] ♥로스트미디어냥덩이♥갤로그로 이동합니다. 08:58 20 0
2871088 냥덩이를 현실에서 만나고 싶다면? [2] ♥로스트미디어냥덩이♥갤로그로 이동합니다. 08:40 35 0
2871087 ❤✨☀⭐⚡☘♥+나님 시작합니당♥+☘⚡⭐☀✨❤ ♥로스트미디어냥덩이♥갤로그로 이동합니다. 08:13 14 0
2871086 2재명 짱깨 셰셰 ♥로스트미디어냥덩이♥갤로그로 이동합니다. 08:12 12 0
2871085 도로도로도로? ♥로스트미디어냥덩이♥갤로그로 이동합니다. 07:55 16 0
2871083 도로도로? ♥로스트미디어냥덩이♥갤로그로 이동합니다. 07:30 13 0
2871082 도로? ♥로스트미디어냥덩이♥갤로그로 이동합니다. 07:20 17 0
2871081 ❤✨☀⭐⚡☘♥+나님 시작합니당♥+☘⚡⭐☀✨❤ ♥로스트미디어냥덩이♥갤로그로 이동합니다. 06:58 15 0
2871080 자전거 ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 06:56 12 0
2871079 태연 ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 06:50 12 0
2871078 하루 한 번 헤르미온느 찬양 헤르 미온느갤로그로 이동합니다. 06:48 17 0
2871077 나는조현병이야 나는내향적이야 손발이시립디다갤로그로 이동합니다. 06:09 17 0
2871072 음기 충전 발명도둑잡기(118.216) 01:47 34 0
2871071 디시클리너 프갤러(118.130) 01:43 19 0
2871069 d-bus 라이센스 발명도둑잡기(118.216) 01:37 16 0
2871067 이런 경우엔 어떻게 하는게 좋음? ㅇㅅㅇ [2] 익명의따당이갤로그로 이동합니다. 01:28 69 0
2871066 Github 갤러리 31일 차단 당했다. 발명도둑잡기(118.216) 01:19 52 1
2871065 도스에서 vesa vbe 지원하게 에뮬레이션 발명도둑잡기(118.216) 01:16 32 0
2871063 전국민 다 아는데 서로만 모르는 관계 발명도둑잡기(118.216) 00:49 18 0
2871062 요즘 모기가 잘 안 보이는 이유 [2] ♥천상천하유아독존경화수월냥덩♥갤로그로 이동합니다. 00:46 46 0
2871061 모기인줄 알고 잡았더니.. [5] ♥천상천하유아독존경화수월냥덩♥갤로그로 이동합니다. 00:41 47 0
2871060 외국인 혐오선동 규탄 집회 발명도둑잡기(118.216) 00:28 18 0
2871058 나는 일본 만화풍 얼굴만 봐도 짜증이 확 나지만 발명도둑잡기(118.216) 00:13 32 0
2871057 프로미스 상표권 관련 팩트 ㅇㅇ(175.223) 00:09 36 0
2871056 깃허브 프로젝트 setting 어디서 함? 프갤러(180.231) 00:06 19 0
2871055 냥덩이에게 팩폭 일침 발명도둑잡기(118.216) 00:05 21 0
2871054 오늘은 제로 카피 공부하다 자야긋다 ㅆㅇㅆ찡갤로그로 이동합니다. 00:02 28 0
2871053 한녀에게 오염된 모모링이 천연 귀여움을 잃어버리는 과정.. ㅠㅅ ㅠ.. [3] ♥천상천하유아독존경화수월냥덩♥갤로그로 이동합니다. 00:00 32 0
2871052 한국의 미래 <엑소더스 재팬> [1] 발명도둑잡기(118.216) 07.11 22 0
2871051 러스트는 개발의 즐거움을 포기하게 만드는 언어다 [1] 루비갤로그로 이동합니다. 07.11 50 0
2871049 림월드 같은 시뮬겜 만들기 어렵나 [1] 뉴진파갤로그로 이동합니다. 07.11 28 0
2871048 허니패밀리-남자 이야기 [1] 발명도둑잡기(118.216) 07.11 20 0
2871047 그리스 고대 원형극장 소리 발명도둑잡기(118.216) 07.11 14 0
2871046 59.14 임마 빡고수네 [10] ㅆㅇㅆ(124.216) 07.11 83 0
2871045 현존하는 모든 운영체제 뚫는 밀리터리 그레이드 백도어 취약점 [1] 발명도둑잡기(118.216) 07.11 40 0
2871044 러스트 빠돌아 내가 2022년, 2023년 뭐라 했냐. 인생 낭비라 했지 [8] 루비갤로그로 이동합니다. 07.11 42 0
2871043 무자막 케이온 정주행 수련 on [4] 아스카영원히사랑해갤로그로 이동합니다. 07.11 27 0
뉴스 밴드 실리카겔, 새 싱글 ‘南宮FEFERE’ 발매 이어 단독 콘서트 ‘Syn.THE.Size X’ 개최 디시트렌드 07.11
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2