디시인사이드 갤러리

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

갤러리 본문 영역

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

MOBIUS(121.158) 2013.03.17 00:52:10
조회 145 추천 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 휴대폰 액세서리 SALE 운영자 25/07/15 - -
348345 컴공 대학생 놋북 추천좀&&&&&&&&&&&&&&&&&&&&&&&&&&& [4] ㄹㅇ너미러ㅣ(125.143) 13.03.07 116 0
348344 진수 씨빰 [7] 백이.갤로그로 이동합니다. 13.03.07 59 0
348343 야 파밍이 주소가 같은 사이트인데 다른 사이트로 접속되는거냐?? [3] ㅇㅇ(203.90) 13.03.07 56 0
348342 Level 2. 퀴즈. [12] ㅇㅇ(119.203) 13.03.07 128 0
348341 mysql 인덱스를 지정하면 왜 속도가빨라짐? [8] qwew(175.215) 13.03.07 97 0
348340 아 프로그래머 계속 해야 하나... [3] ㅁㄴㅇㄹ(1.227) 13.03.07 159 0
348339 엔지니어로 먹고사는데 운영체제 (공룡책) 보다 중요한거. [5] ㅇㅇ(119.203) 13.03.07 255 0
348338 아래 퀴즈 답. [4] ㅇㅇ(119.203) 13.03.07 92 0
348336 니들 중에 이거 풀 수 있는 사람 있니? [8] ㅇㅇ(119.203) 13.03.07 130 0
348335 드림스파크 이거 학교이메일이업는데 어떡하냐 ㅋㅋㅋㅋ ㅂㅈㄷ(211.201) 13.03.07 41 0
348334 학점 이야기가 나와서 말인데 [3] ㅇㅇ(119.203) 13.03.07 94 0
348332 성님들 학점이 아무리 안중요하다 해도 [2] ㅂㅈㄷ(182.218) 13.03.07 119 0
348331 c언어 main함수에... [9] main(59.24) 13.03.07 121 0
348330 웹할라면 자바만 하면 안되냐 아 좆같다 [2] 붕ㄱ붕ㄱ(121.186) 13.03.07 111 0
348329 자바스크립트 책 추천 [4] 북한 김정은(210.221) 13.03.07 127 0
348328 코딩 스탈 어쩌니 해도 실무가면 더 젖같잖아 [1] 갑을병정(211.36) 13.03.07 79 0
348327 횽님들 cfile로 저장할때 말이야 [2] 김삼디(110.9) 13.03.07 96 0
348326 보안업체 신입 취업 어떰? [10] crowww(121.186) 13.03.07 255 0
348325 행님들 궁금 한게 있는데 [7] 도와주세요(119.203) 13.03.07 74 0
348324 학점 아무짝에 쓸모없음 [6] ㅇㅇ(119.203) 13.03.07 200 0
348321 다들 컴사양어떻게되? [9] 차르봄바(211.36) 13.03.07 98 0
348320 잉여 일년차 개발자가 대학생에게 하는말 [2] LastCorona갤로그로 이동합니다. 13.03.07 145 0
348319 프겔 지난글 읽어보고 있는데... [3] 듀스(124.153) 13.03.07 67 0
348318 전자과에서 프로그래밍 하면 롱런할 수 있냐?? [17] 전자과(221.160) 13.03.07 215 0
348317 이세상에서 프래그래머 관점으로 두가지가있다. [5] 티모티모(211.112) 13.03.07 167 0
348316 시밤 아래 태그 종범이라 다시 올림 멍청닭(182.211) 13.03.07 34 0
348315 야근 시작하는 횽들은 이거 보면서 스트레스 푸세여 [2] 멍청닭(182.211) 13.03.07 88 0
348314 능력 없으면 대학, 대학원 가라. [12] ㅇㅇ(119.203) 13.03.07 306 0
348313 삼성 엘지가 수천명씩 뽑긴한다 [1] ㅇㅇ(119.203) 13.03.07 145 0
348312 개발자 삼성 엘지가 싹쓸어 갔다고 했는데 쓸어가서 지금 어따 씀? [2] 멍청닭(182.211) 13.03.07 167 0
348311 1학년땐 뭘하면 되나여 [10] ㅇㅇ(223.62) 13.03.07 123 0
348310 어느 정치가의 개소리 [1] 에어로홍갤로그로 이동합니다. 13.03.07 47 0
348309 대학 임베디드 아이티과 어떰? Macau갤로그로 이동합니다. 13.03.07 47 0
348308 예전에 수업시간에 백이.갤로그로 이동합니다. 13.03.07 33 0
348307 아는만큼 보인다 [5] 미크님갤로그로 이동합니다. 13.03.07 126 0
348306 입갤함 [1] 백이.갤로그로 이동합니다. 13.03.07 32 0
348304 디시같은 다중게시판 원리가 뭐임? [12] 작성자(203.226) 13.03.07 160 0
348303 국비지원 그만둘려고하는데 답좀내려줘..... [2] 123(117.111) 13.03.07 219 0
348302 자바 질문좀 ㅇㅇㅇ(110.35) 13.03.07 39 0
348301 내가 책을 안 모았으면 [1] 에어로홍갤로그로 이동합니다. 13.03.07 41 0
348300 형님 퇴갤한다. [2] ㅇㅇ(119.203) 13.03.07 58 0
348299 이건 이게 좋고 저건 저게 좋은데 무얼살까? ㅇㅇ(119.203) 13.03.07 43 0
348298 gof의 디자인패턴 책 사야하는데 [4] ?(175.203) 13.03.07 118 0
348297 대학 임베디드 아이티과 어떰? [4] Macau갤로그로 이동합니다. 13.03.07 75 0
348296 하드코어한 개발자가 되고 싶으면 다음의 방법을 추천한다 [6] ㅇㅇ(119.203) 13.03.07 210 0
348294 개발자 횽들은 건강을 위해 운동을 해야합니다. [1] 멍청닭(182.211) 13.03.07 72 0
348293 생성자 이거 왜 이러냐? ㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷ [7] d(125.177) 13.03.07 91 0
348292 선배님들 질문좀.. 교수님들이 c언어의 개념을 강조하던데 [7] ㅇㅇ(211.229) 13.03.07 158 0
348290 취업할때 토익말이야.. [8] gd(221.145) 13.03.07 155 0
348288 난 오픈 소스 해놨는데 욕만 처먹었다 [2] 멍청닭(182.211) 13.03.07 107 0
뉴스 빅뱅 대성, 호주 멜버른 콘서트 취소 "기술 관련 문제" 디시트렌드 07.17
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2