Привет. Пытаюсь отладить программу которая очень хорошо упакована, по этому распаковывать вручную займет пару лет. Думал, что если запустить на удаленной машине через windbg то можно будет найти реальный entry point, но все равно не запускается. Подскажите, можно ли сделать что-бы windbg не детектился процессом?
Для начала узнайте, чем именно запакован софт - как вариант DiE подскажет. А использовать WinDBG для этих целей - идея так себе.
Если верить die. То софт упакован vmprotect. В софте куча провероки, не только isDebuggerPresent, CheckRemoteDebuggerPresent или NtQueryInformationProcess, ну и на виртуалке он не запускается, и ругается на включенную виртуализацию и на флаги типа testsigning off. Размер .exe - 33мб При запуске .exe запускает свой подписаный драйвер ядра, который (могу ошибаться, я только учусь) модифицирует EPROCESS так что память процесса не получается прочитать обычными утилитами, так - же как и не получается присоеденится отладчиком. Дебаггер IDA пишет что процесс завершен или не хватает прав, а x64dbg его просто не видит. Единственный способ как у меня получалось читать память уже запущенного процесса, так это через ядерный драйвер (кастомная сборка драйвера от cheat engine). Я подумал, что если подключится к удаленной машине через windbg то так процесс не поймет что под отладкой, и можно будет пройти защиту и по отлаживать защитный драйвер, посмотреть что он там такого делает чтобы защитить свой процесс и пропатчить проверку софта на запуск этого драйвера. Но софт даже не запускает драйвер из за того что ругается на дебаггер
Тогда пробуйте дамперы процессов - их много, может какой-нибудь справится. ProcessExproler, ProcessHacker, PeTools, и далее по списку. Надеюсь в x64Dbg имеется плагин "ScyllaHide" ?
Спасибо за ответ, пробовал уже всеми утилитами. ProcessExplorer пишет - invalid handle, ProcessHacker ( System Informer ) - вообще не видит процесса в списке. PETools тоже не может сдампить. Ну и ScyllaHide тоже не может приконнектится. По этому и думал, что с помощью windbg можно обойти проверки, залезть в драйвер, посмотреть что там за магия происходит. Точно сказано! Ощущается прямо как на поход Еверест в резиновых шлепанцах
Если и правда дела так плохи, то остаётся вырезать блок из бинаря экзе, а парсить его отдельно. Можно целиком всю секцию ".vmp0" (или как она там называется), или-же сразу на точке-входа (не оеп), найти которую помогут сигнатуры протектора vmp - вагон и целая тележка их валяется в папке DiE "db\pe\..". Осознав всю серьёзность ситуации, в следующий раз уже вряд ли возьмётесь за это дело без соответствующих навыков. С другой стороны, если вас интересует только драйвер, то через WinDBG + LiveKd можно сдампить память sys не подключаясь к процессу. Например вот дизасм листинг драйвера "ProcessHacker/Informer", который так и называется "kProcessHacker3.sys": Код (Text): 0: kd> !drvobj kProcessHacker3 7 Driver object fffffa800401aa30 is for: \Driver\KProcessHacker3 DevObj list: fffffa800401c7c0 DriverEntry: fffff880035c7064 kprocesshacker DriverStartIo: 00000000 DriverUnload: fffff880035c30ec kprocesshacker AddDevice: 00000000 Dispatch routines: [00] IRP_MJ_CREATE fffff880035bf008 kprocesshacker+0x1008 [01] IRP_MJ_CREATE_NAMED_PIPE fffff80002a35408 nt!IopInvalidDeviceRequest [02] IRP_MJ_CLOSE fffff880035bf14c kprocesshacker+0x114c [03] IRP_MJ_READ fffff80002a35408 nt!IopInvalidDeviceRequest [04] IRP_MJ_WRITE fffff80002a35408 nt!IopInvalidDeviceRequest [05] IRP_MJ_QUERY_INFORMATION fffff80002a35408 nt!IopInvalidDeviceRequest [06] IRP_MJ_SET_INFORMATION fffff80002a35408 nt!IopInvalidDeviceRequest [07] IRP_MJ_QUERY_EA fffff80002a35408 nt!IopInvalidDeviceRequest [08] IRP_MJ_SET_EA fffff80002a35408 nt!IopInvalidDeviceRequest [09] IRP_MJ_FLUSH_BUFFERS fffff80002a35408 nt!IopInvalidDeviceRequest [0a] IRP_MJ_QUERY_VOLUME_INFORMATION fffff80002a35408 nt!IopInvalidDeviceRequest [0b] IRP_MJ_SET_VOLUME_INFORMATION fffff80002a35408 nt!IopInvalidDeviceRequest [0c] IRP_MJ_DIRECTORY_CONTROL fffff80002a35408 nt!IopInvalidDeviceRequest [0d] IRP_MJ_FILE_SYSTEM_CONTROL fffff80002a35408 nt!IopInvalidDeviceRequest [0e] IRP_MJ_DEVICE_CONTROL fffff880035bf198 kprocesshacker+0x1198 [0f] IRP_MJ_INTERNAL_DEVICE_CONTROL fffff80002a35408 nt!IopInvalidDeviceRequest [10] IRP_MJ_SHUTDOWN fffff80002a35408 nt!IopInvalidDeviceRequest [11] IRP_MJ_LOCK_CONTROL fffff80002a35408 nt!IopInvalidDeviceRequest [12] IRP_MJ_CLEANUP fffff80002a35408 nt!IopInvalidDeviceRequest [13] IRP_MJ_CREATE_MAILSLOT fffff80002a35408 nt!IopInvalidDeviceRequest [14] IRP_MJ_QUERY_SECURITY fffff80002a35408 nt!IopInvalidDeviceRequest [15] IRP_MJ_SET_SECURITY fffff80002a35408 nt!IopInvalidDeviceRequest [16] IRP_MJ_POWER fffff80002a35408 nt!IopInvalidDeviceRequest [17] IRP_MJ_SYSTEM_CONTROL fffff80002a35408 nt!IopInvalidDeviceRequest [18] IRP_MJ_DEVICE_CHANGE fffff80002a35408 nt!IopInvalidDeviceRequest [19] IRP_MJ_QUERY_QUOTA fffff80002a35408 nt!IopInvalidDeviceRequest [1a] IRP_MJ_SET_QUOTA fffff80002a35408 nt!IopInvalidDeviceRequest [1b] IRP_MJ_PNP fffff80002a35408 nt!IopInvalidDeviceRequest ;//------ Листинг процедуры "IRP_MJ_CREATE" драйвера 0: kd> uf /i fffff880035bf008 81 instructions scanned kprocesshacker+0x1008: fffff880`035bf008 48895c2408 mov qword ptr [rsp+8],rbx fffff880`035bf00d 48896c2418 mov qword ptr [rsp+18h],rbp fffff880`035bf012 56 push rsi fffff880`035bf013 57 push rdi fffff880`035bf014 4155 push r13 fffff880`035bf016 4883ec40 sub rsp,40h fffff880`035bf01a 488b05df200000 mov rax,qword ptr [kprocesshacker+0x3100 (fffff880`035c1100)] fffff880`035bf021 4833c4 xor rax,rsp fffff880`035bf024 4889442438 mov qword ptr [rsp+38h],rax fffff880`035bf029 488b82b8000000 mov rax,qword ptr [rdx+0B8h] fffff880`035bf030 488bfa mov rdi,rdx fffff880`035bf033 33db xor ebx,ebx fffff880`035bf035 488b6830 mov rbp,qword ptr [rax+30h] fffff880`035bf039 488b7008 mov rsi,qword ptr [rax+8] fffff880`035bf03d ff15fd110000 call qword ptr [kprocesshacker+0x2240 (fffff880`035c0240)] fffff880`035bf043 448b1d82220000 mov r11d,dword ptr [kprocesshacker+0x32cc (fffff880`035c12cc)] fffff880`035bf04a 448d6b01 lea r13d,[rbx+1] fffff880`035bf04e 453bdd cmp r11d,r13d fffff880`035bf051 7406 je kprocesshacker+0x1059 (fffff880`035bf059) kprocesshacker+0x1053: fffff880`035bf053 4183fb03 cmp r11d,3 fffff880`035bf057 7542 jne kprocesshacker+0x109b (fffff880`035bf09b) kprocesshacker+0x1059: fffff880`035bf059 488b5608 mov rdx,qword ptr [rsi+8] fffff880`035bf05d 448a4740 mov r8b,byte ptr [rdi+40h] fffff880`035bf061 215c242c and dword ptr [rsp+2Ch],ebx fffff880`035bf065 215c2430 and dword ptr [rsp+30h],ebx fffff880`035bf069 488d4c2420 lea rcx,[rsp+20h] fffff880`035bf06e 4883c220 add rdx,20h fffff880`035bf072 44896c2420 mov dword ptr [rsp+20h],r13d fffff880`035bf077 44896c2424 mov dword ptr [rsp+24h],r13d fffff880`035bf07c c74424281400 mov dword ptr [rsp+28h],14h fffff880`035bf084 ff15ce0f0000 call qword ptr [kprocesshacker+0x2058 (fffff880`035c0058)] fffff880`035bf08a 84c0 test al,al fffff880`035bf08c 750d jne kprocesshacker+0x109b (fffff880`035bf09b) kprocesshacker+0x108e: fffff880`035bf08e bb610000c0 mov ebx,0C0000061h fffff880`035bf093 ff15a7110000 call qword ptr [kprocesshacker+0x2240 (fffff880`035c0240)] fffff880`035bf099 eb76 jmp kprocesshacker+0x1111 (fffff880`035bf111) kprocesshacker+0x109b: fffff880`035bf09b baa8000000 mov edx,0A8h fffff880`035bf0a0 41b84b706843 mov r8d,4368704Bh fffff880`035bf0a6 418bcd mov ecx,r13d fffff880`035bf0a9 ff15e1110000 call qword ptr [kprocesshacker+0x2290 (fffff880`035c0290)] fffff880`035bf0af 488bf0 mov rsi,rax fffff880`035bf0b2 4885c0 test rax,rax fffff880`035bf0b5 744f je kprocesshacker+0x1106 (fffff880`035bf106) kprocesshacker+0x10b7: fffff880`035bf0b7 33d2 xor edx,edx fffff880`035bf0b9 41b8a8000000 mov r8d,0A8h fffff880`035bf0bf 488bc8 mov rcx,rax fffff880`035bf0c2 e8e90d0000 call kprocesshacker+0x1eb0 (fffff880`035bfeb0) fffff880`035bf0c7 48215e10 and qword ptr [rsi+10h],rbx fffff880`035bf0cb 215e18 and dword ptr [rsi+18h],ebx fffff880`035bf0ce 44896e08 mov dword ptr [rsi+8],r13d fffff880`035bf0d2 488d4e20 lea rcx,[rsi+20h] fffff880`035bf0d6 4533c0 xor r8d,r8d fffff880`035bf0d9 418bd5 mov edx,r13d fffff880`035bf0dc ff157e110000 call qword ptr [kprocesshacker+0x2260 (fffff880`035c0260)] fffff880`035bf0e2 48215e70 and qword ptr [rsi+70h],rbx fffff880`035bf0e6 215e78 and dword ptr [rsi+78h],ebx fffff880`035bf0e9 488d8e80000000 lea rcx,[rsi+80h] fffff880`035bf0f0 4533c0 xor r8d,r8d fffff880`035bf0f3 418bd5 mov edx,r13d fffff880`035bf0f6 44896e68 mov dword ptr [rsi+68h],r13d fffff880`035bf0fa ff1560110000 call qword ptr [kprocesshacker+0x2260 (fffff880`035c0260)] fffff880`035bf100 48897518 mov qword ptr [rbp+18h],rsi fffff880`035bf104 eb0b jmp kprocesshacker+0x1111 (fffff880`035bf111) kprocesshacker+0x1106: fffff880`035bf106 ff1534110000 call qword ptr [kprocesshacker+0x2240 (fffff880`035c0240)] fffff880`035bf10c bb9a0000c0 mov ebx,0C000009Ah kprocesshacker+0x1111: fffff880`035bf111 4883673800 and qword ptr [rdi+38h],0 fffff880`035bf116 33d2 xor edx,edx fffff880`035bf118 488bcf mov rcx,rdi fffff880`035bf11b 895f30 mov dword ptr [rdi+30h],ebx fffff880`035bf11e ff1524110000 call qword ptr [kprocesshacker+0x2248 (fffff880`035c0248)] fffff880`035bf124 8bc3 mov eax,ebx fffff880`035bf126 488b4c2438 mov rcx,qword ptr [rsp+38h] fffff880`035bf12b 4833cc xor rcx,rsp fffff880`035bf12e e81d080000 call kprocesshacker+0x1950 (fffff880`035bf950) fffff880`035bf133 488b5c2460 mov rbx,qword ptr [rsp+60h] fffff880`035bf138 488b6c2470 mov rbp,qword ptr [rsp+70h] fffff880`035bf13d 4883c440 add rsp,40h fffff880`035bf141 415d pop r13 fffff880`035bf143 5f pop rdi fffff880`035bf144 5e pop rsi fffff880`035bf145 c3 ret 0: kd> Аналогично можно посмотреть, и что делает более интересный обработчик "IRP_MJ_DEVICE_CONTROL".
Удалось заглянуть в драйвер, который весом в 10мб, там дела примерно так-же обстоят как и в самом .exe в плане обфускации. А вообще не так уж сильно и хотелось на этот ваш Еверест, говорят на высоте и сердце может остановиться А на вас только гавкнуть хочется