Трассировка vmprotect.....

eway

Зарегистрированный
Сообщения
7
Реакции
0
ребят, нужно срочно восстановить импорт файла защищенного vmprotect, засунул в x64dbg и попытался запустить трассировку до первого "очевидного" api (CreateForm), но почему то трассировка выполняется уж очень долго... это нормально или протектор как то "дэтэктит" попытку трассировки и отправляет по кругу?
 

mak

Соломенные сандалии
Администратор
Сообщения
861
Реакции
654

eway

Зарегистрированный
Сообщения
7
Реакции
0
Привет eway,

x64dbg имеет очень тормозную трассировку, VMP протектор премиум класса, срочно и без опыта никак, читай темы здесь - VMProtect (Туторы, скрипты, плагины, ...) и VMProtect Windows API Address Decoder (IDA Pro - Python) или https://github.com/0xnobody/vmpdump
какой отладчик вы порекомендуете? Можно ведь как то зафиксировать все шаги от точки останова vmprotect до вызова "первой очевидной" api? ну а потом проанализировать листинг и восстановить последовательность инструкций
 

_MBK_

Новичок
Сообщения
264
Реакции
65
Он еще и тайминг отслеживает (машинные такты) поэтому сильно долго так не потрассируешь
 

plutos

_Вечный_Студент_
Мудрец
Сообщения
162
Реакции
647
какой отладчик вы порекомендуете? Можно ведь как то зафиксировать все шаги от точки останова vmprotect до вызова "первой очевидной" api? ну а потом проанализировать листинг и восстановить последовательность инструкций
дело тут не в отладчике.
в теории - просто, а возмешься - мудрено.
Потому Мак тебе и рекомендует курить матчасть.
 
Последнее редактирование:

eway

Зарегистрированный
Сообщения
7
Реакции
0
Он еще и тайминг отслеживает (машинные такты) поэтому сильно долго так не потрассируешь
я это понимаю, поэтому и спрашиваю, как обойти такую защиту, чтобы спокойно "потрассировать"
 

mak

Соломенные сандалии
Администратор
Сообщения
861
Реакции
654
@eway, не знаю отладчика, который имеет хорошую трассировку, да и сама трассировка это особый подход, обычно это скриптами делают, вручную, частично код исполняется в отладчике, трассируется через точки останова в скрипте, скрипты для 2-ой версии есть, например - VMProtect API Turbo Tracer 1.2.

Есть три варианта
1. Отладчик и скрипты
2. Своё автоматическое решение - Статический и динамический трасировщик
3. DBI - Dynamic Binary Instrumentation Frameworks (трассировка через эмуляцию) из топа по ссылкам выше это - Деобфускация VMProtect в IDA Pro используя Qiling Framework и Анализ VMProtect c Triton (dynamic binary analysis (DBA) framework), кто-то делает свой вариант, почитайте посты Bronco на сайте, он использует Unicorn в x64dbg, используя как раз выборочную трассировку, не весь код под трассировкой, кроме этого всю инструментацию Вы должны писать вручную.

В каждом случае ИМХО Вы должны точно знать, что вы делаете, дальше разбирать вручную. Тайминги будут в любом случае, кроме статик варианта и этим отдельно нужно заниматься, т.к. просадка через DBI по моему последнему знанию будет примерно в 40 раз как минимум.

Есть вариант с WinDbg Preview, там есть запись полной трассы (у меня он зависает намертво) - Time Travel Debugging - Sample App Walkthrough - Windows.

Альтернативно можно использовать другие фреймворки, как PIN - The PIN Tracer module - Hex Rays (The PIN tracer is a remote debugger plugin used to record execution traces. It allows to record traces on Linux and Windows (x86 and x86_64))

Все эти решения потребуют вклада времени и работы. Если вы заглядывали в тему, то там есть некоторые решения по АПИ, для примера этого вполне достаточно. Трассировку можно использовать для разных целей, но в основном это анализ -
masm:
00007FF6CDFCC5E3 0F B6 06       movzx eax, byte ptr [rsi]
00007FF6CDFCC5E6 49 0F BF CA    movsx rcx, r10w
00007FF6CDFCC5EA D2 CD          ror ch, cl
00007FF6CDFCC5EC 48 81 C6 01 00 add rsi, 1
00007FF6CDFCC5F3 32 C3          xor al, bl
00007FF6CDFCC5F5 48 0F BF CC    movsx rcx, sp
00007FF6CDFCC5F9 D0 C0          rol al, 1
00007FF6CDFCC5FB E9 00 00 00 00 jmp 0x7ff6cdfcc600
00007FF6CDFCC600 34 49          xor al, 0x49
00007FF6CDFCC602 66 41 8B CF    mov cx, r15w
00007FF6CDFCC606 66 87 C9       xchg cx, cx
00007FF6CDFCC609 66 0F C9       bswap cx
00007FF6CDFCC60C D0 C8          ror al, 1
00007FF6CDFCC60E E9 00 00 00 00 jmp 0x7ff6cdfcc613
00007FF6CDFCC613 FE C8          dec al
00007FF6CDFCC615 32 D8          xor bl, al
00007FF6CDFCC617 48 0F C9       bswap rcx
00007FF6CDFCC61A 12 E8          adc ch, al
00007FF6CDFCC61C 48 8B 4C 25 00 mov rcx, qword ptr [rbp]
00007FF6CDFCC621 48 81 C5 08 00 add rbp, 8
00007FF6CDFCC628 F5             cmc
00007FF6CDFCC629 E9 00 00 00 00 jmp 0x7ff6cdfcc62e
00007FF6CDFCC62E 48 89 0C 04    mov qword ptr [rsp + rax], rcx
00007FF6CDFCC632 48 90          nop
00007FF6CDFCC634 F5             cmc
00007FF6CDFCC635 41 12 C4       adc al, r12b
00007FF6CDFCC638 8B 06          mov eax, dword ptr [rsi]
00007FF6CDFCC63A 48 81 C6 04 00 add rsi, 4
00007FF6CDFCC641 33 C3          xor eax, ebx
00007FF6CDFCC643 E9 01 00 00 00 jmp 0x7ff6cdfcc649
00007FF6CDFCC649 2D 86 7A AF 10 sub eax, 0x10af7a86
00007FF6CDFCC64E F8             clc
00007FF6CDFCC64F E9 00 00 00 00 jmp 0x7ff6cdfcc654
00007FF6CDFCC654 F7 D0          not eax
00007FF6CDFCC656 F8             clc
00007FF6CDFCC657 E9 00 00 00 00 jmp 0x7ff6cdfcc65c
00007FF6CDFCC65C C1 C8 02       ror eax, 2
00007FF6CDFCC65F E9 00 00 00 00 jmp 0x7ff6cdfcc664
00007FF6CDFCC664 FF C0          inc eax
00007FF6CDFCC666 F9             stc
00007FF6CDFCC667 40 F6 C4 D1    test spl, 0xd1
00007FF6CDFCC66B F5             cmc
00007FF6CDFCC66C 53             push rbx
00007FF6CDFCC66D 66 81 D3 0E 0E adc bx, 0xe0e
00007FF6CDFCC672 86 FF          xchg bh, bh
00007FF6CDFCC674 31 04 24       xor dword ptr [rsp], eax
00007FF6CDFCC677 66 44 0F BB F3 btc bx, r14w
00007FF6CDFCC67C 49 0F 42 DB    cmovb rbx, r11
00007FF6CDFCC680 5B             pop rbx
00007FF6CDFCC681 48 63 C0       movsxd rax, eax
00007FF6CDFCC684 45 3A D3       cmp r10b, r11b
00007FF6CDFCC687 66 F7 C2 58 7D test dx, 0x7d58
00007FF6CDFCC68C 48 03 F8       add rdi, rax
00007FF6CDFCC68F FF E7          jmp rdi
--- FINISHED TRACING HANDLER --

00007FF6CDFCC691 0F B6 06       movzx eax, byte ptr [rsi]
00007FF6CDFCC694 66 81 E9 65 1E sub cx, 0x1e65
00007FF6CDFCC699 66 41 23 C9    and cx, r9w
00007FF6CDFCC69D C0 D1 56       rcl cl, 0x56
00007FF6CDFCC6A0 48 81 C6 01 00 add rsi, 1
00007FF6CDFCC6A7 48 0F BB C9    btc rcx, rcx
00007FF6CDFCC6AB 44 0F B3 C9    btr ecx, r9d
00007FF6CDFCC6AF 32 C3          xor al, bl
00007FF6CDFCC6B1 D0 C0          rol al, 1
00007FF6CDFCC6B3 D3 D9          rcr ecx, cl
00007FF6CDFCC6B5 34 49          xor al, 0x49
00007FF6CDFCC6B7 D0 C8          ror al, 1
00007FF6CDFCC6B9 49 0F BF C9    movsx rcx, r9w
00007FF6CDFCC6BD 0F 93 C1       setae cl
00007FF6CDFCC6C0 66 40 0F BE CE movsx cx, sil
00007FF6CDFCC6C5 FE C8          dec al
00007FF6CDFCC6C7 32 D8          xor bl, al
00007FF6CDFCC6C9 48 8B 4C 25 00 mov rcx, qword ptr [rbp]
00007FF6CDFCC6CE F9             stc
00007FF6CDFCC6CF 48 81 C5 08 00 add rbp, 8
00007FF6CDFCC6D6 48 89 0C 04    mov qword ptr [rsp + rax], rcx
00007FF6CDFCC6DA 8B 06          mov eax, dword ptr [rsi]
00007FF6CDFCC6DC 48 81 C6 04 00 add rsi, 4
00007FF6CDFCC6E3 40 80 FC D8    cmp spl, 0xd8
00007FF6CDFCC6E7 F8             clc
00007FF6CDFCC6E8 33 C3          xor eax, ebx
00007FF6CDFCC6EA 66 81 FE E1 2E cmp si, 0x2ee1
00007FF6CDFCC6EF 2D 86 7A AF 10 sub eax, 0x10af7a86
00007FF6CDFCC6F4 F7 D0          not eax
00007FF6CDFCC6F6 F9             stc
00007FF6CDFCC6F7 C1 C8 02       ror eax, 2
00007FF6CDFCC6FA E9 00 00 00 00 jmp 0x7ff6cdfcc6ff
00007FF6CDFCC6FF FF C0          inc eax
00007FF6CDFCC701 F9             stc
00007FF6CDFCC702 48 3B D4       cmp rdx, rsp
00007FF6CDFCC705 53             push rbx
00007FF6CDFCC706 40 80 FE 4D    cmp sil, 0x4d
00007FF6CDFCC70A 41 02 DE       add bl, r14b
00007FF6CDFCC70D 31 04 24       xor dword ptr [rsp], eax
00007FF6CDFCC710 5B             pop rbx
00007FF6CDFCC711 40 84 E5       test spl, bpl
00007FF6CDFCC714 48 63 C0       movsxd rax, eax
00007FF6CDFCC717 F9             stc
00007FF6CDFCC718 48 03 F8       add rdi, rax
00007FF6CDFCC71B E9 00 00 00 00 jmp 0x7ff6cdfcc720
00007FF6CDFCC720 FF E7          jmp rdi
--- FINISHED TRACING HANDLER --
Поэтому код берут порциями, для каждого конкретного случая и потом пишут "инструментацию". Примерно как здесь - https://github.com/nblog/Vm2Import
 

eway

Зарегистрированный
Сообщения
7
Реакции
0
@eway, не знаю отладчика, который имеет хорошую трассировку, да и сама трассировка это особый подход, обычно это скриптами делают, вручную, частично код исполняется в отладчике, трассируется через точки останова в скрипте, скрипты для 2-ой версии есть, например - VMProtect API Turbo Tracer 1.2.

Есть три варианта
1. Отладчик и скрипты
2. Своё автоматическое решение - Статический и динамический трасировщик
3. DBI - Dynamic Binary Instrumentation Frameworks (трассировка через эмуляцию) из топа по ссылкам выше это - Деобфускация VMProtect в IDA Pro используя Qiling Framework и Анализ VMProtect c Triton (dynamic binary analysis (DBA) framework), кто-то делает свой вариант, почитайте посты Bronco на сайте, он использует Unicorn в x64dbg, используя как раз выборочную трассировку, не весь код под трассировкой, кроме этого всю инструментацию Вы должны писать вручную.

В каждом случае ИМХО Вы должны точно знать, что вы делаете, дальше разбирать вручную. Тайминги будут в любом случае, кроме статик варианта и этим отдельно нужно заниматься, т.к. просадка через DBI по моему последнему знанию будет примерно в 40 раз как минимум.

Есть вариант с WinDbg Preview, там есть запись полной трассы (у меня он зависает намертво) - Time Travel Debugging - Sample App Walkthrough - Windows.

Альтернативно можно использовать другие фреймворки, как PIN - The PIN Tracer module - Hex Rays (The PIN tracer is a remote debugger plugin used to record execution traces. It allows to record traces on Linux and Windows (x86 and x86_64))

Все эти решения потребуют вклада времени и работы. Если вы заглядывали в тему, то там есть некоторые решения по АПИ, для примера этого вполне достаточно. Трассировку можно использовать для разных целей, но в основном это анализ -
masm:
00007FF6CDFCC5E3 0F B6 06       movzx eax, byte ptr [rsi]
00007FF6CDFCC5E6 49 0F BF CA    movsx rcx, r10w
00007FF6CDFCC5EA D2 CD          ror ch, cl
00007FF6CDFCC5EC 48 81 C6 01 00 add rsi, 1
00007FF6CDFCC5F3 32 C3          xor al, bl
00007FF6CDFCC5F5 48 0F BF CC    movsx rcx, sp
00007FF6CDFCC5F9 D0 C0          rol al, 1
00007FF6CDFCC5FB E9 00 00 00 00 jmp 0x7ff6cdfcc600
00007FF6CDFCC600 34 49          xor al, 0x49
00007FF6CDFCC602 66 41 8B CF    mov cx, r15w
00007FF6CDFCC606 66 87 C9       xchg cx, cx
00007FF6CDFCC609 66 0F C9       bswap cx
00007FF6CDFCC60C D0 C8          ror al, 1
00007FF6CDFCC60E E9 00 00 00 00 jmp 0x7ff6cdfcc613
00007FF6CDFCC613 FE C8          dec al
00007FF6CDFCC615 32 D8          xor bl, al
00007FF6CDFCC617 48 0F C9       bswap rcx
00007FF6CDFCC61A 12 E8          adc ch, al
00007FF6CDFCC61C 48 8B 4C 25 00 mov rcx, qword ptr [rbp]
00007FF6CDFCC621 48 81 C5 08 00 add rbp, 8
00007FF6CDFCC628 F5             cmc
00007FF6CDFCC629 E9 00 00 00 00 jmp 0x7ff6cdfcc62e
00007FF6CDFCC62E 48 89 0C 04    mov qword ptr [rsp + rax], rcx
00007FF6CDFCC632 48 90          nop
00007FF6CDFCC634 F5             cmc
00007FF6CDFCC635 41 12 C4       adc al, r12b
00007FF6CDFCC638 8B 06          mov eax, dword ptr [rsi]
00007FF6CDFCC63A 48 81 C6 04 00 add rsi, 4
00007FF6CDFCC641 33 C3          xor eax, ebx
00007FF6CDFCC643 E9 01 00 00 00 jmp 0x7ff6cdfcc649
00007FF6CDFCC649 2D 86 7A AF 10 sub eax, 0x10af7a86
00007FF6CDFCC64E F8             clc
00007FF6CDFCC64F E9 00 00 00 00 jmp 0x7ff6cdfcc654
00007FF6CDFCC654 F7 D0          not eax
00007FF6CDFCC656 F8             clc
00007FF6CDFCC657 E9 00 00 00 00 jmp 0x7ff6cdfcc65c
00007FF6CDFCC65C C1 C8 02       ror eax, 2
00007FF6CDFCC65F E9 00 00 00 00 jmp 0x7ff6cdfcc664
00007FF6CDFCC664 FF C0          inc eax
00007FF6CDFCC666 F9             stc
00007FF6CDFCC667 40 F6 C4 D1    test spl, 0xd1
00007FF6CDFCC66B F5             cmc
00007FF6CDFCC66C 53             push rbx
00007FF6CDFCC66D 66 81 D3 0E 0E adc bx, 0xe0e
00007FF6CDFCC672 86 FF          xchg bh, bh
00007FF6CDFCC674 31 04 24       xor dword ptr [rsp], eax
00007FF6CDFCC677 66 44 0F BB F3 btc bx, r14w
00007FF6CDFCC67C 49 0F 42 DB    cmovb rbx, r11
00007FF6CDFCC680 5B             pop rbx
00007FF6CDFCC681 48 63 C0       movsxd rax, eax
00007FF6CDFCC684 45 3A D3       cmp r10b, r11b
00007FF6CDFCC687 66 F7 C2 58 7D test dx, 0x7d58
00007FF6CDFCC68C 48 03 F8       add rdi, rax
00007FF6CDFCC68F FF E7          jmp rdi
--- FINISHED TRACING HANDLER --

00007FF6CDFCC691 0F B6 06       movzx eax, byte ptr [rsi]
00007FF6CDFCC694 66 81 E9 65 1E sub cx, 0x1e65
00007FF6CDFCC699 66 41 23 C9    and cx, r9w
00007FF6CDFCC69D C0 D1 56       rcl cl, 0x56
00007FF6CDFCC6A0 48 81 C6 01 00 add rsi, 1
00007FF6CDFCC6A7 48 0F BB C9    btc rcx, rcx
00007FF6CDFCC6AB 44 0F B3 C9    btr ecx, r9d
00007FF6CDFCC6AF 32 C3          xor al, bl
00007FF6CDFCC6B1 D0 C0          rol al, 1
00007FF6CDFCC6B3 D3 D9          rcr ecx, cl
00007FF6CDFCC6B5 34 49          xor al, 0x49
00007FF6CDFCC6B7 D0 C8          ror al, 1
00007FF6CDFCC6B9 49 0F BF C9    movsx rcx, r9w
00007FF6CDFCC6BD 0F 93 C1       setae cl
00007FF6CDFCC6C0 66 40 0F BE CE movsx cx, sil
00007FF6CDFCC6C5 FE C8          dec al
00007FF6CDFCC6C7 32 D8          xor bl, al
00007FF6CDFCC6C9 48 8B 4C 25 00 mov rcx, qword ptr [rbp]
00007FF6CDFCC6CE F9             stc
00007FF6CDFCC6CF 48 81 C5 08 00 add rbp, 8
00007FF6CDFCC6D6 48 89 0C 04    mov qword ptr [rsp + rax], rcx
00007FF6CDFCC6DA 8B 06          mov eax, dword ptr [rsi]
00007FF6CDFCC6DC 48 81 C6 04 00 add rsi, 4
00007FF6CDFCC6E3 40 80 FC D8    cmp spl, 0xd8
00007FF6CDFCC6E7 F8             clc
00007FF6CDFCC6E8 33 C3          xor eax, ebx
00007FF6CDFCC6EA 66 81 FE E1 2E cmp si, 0x2ee1
00007FF6CDFCC6EF 2D 86 7A AF 10 sub eax, 0x10af7a86
00007FF6CDFCC6F4 F7 D0          not eax
00007FF6CDFCC6F6 F9             stc
00007FF6CDFCC6F7 C1 C8 02       ror eax, 2
00007FF6CDFCC6FA E9 00 00 00 00 jmp 0x7ff6cdfcc6ff
00007FF6CDFCC6FF FF C0          inc eax
00007FF6CDFCC701 F9             stc
00007FF6CDFCC702 48 3B D4       cmp rdx, rsp
00007FF6CDFCC705 53             push rbx
00007FF6CDFCC706 40 80 FE 4D    cmp sil, 0x4d
00007FF6CDFCC70A 41 02 DE       add bl, r14b
00007FF6CDFCC70D 31 04 24       xor dword ptr [rsp], eax
00007FF6CDFCC710 5B             pop rbx
00007FF6CDFCC711 40 84 E5       test spl, bpl
00007FF6CDFCC714 48 63 C0       movsxd rax, eax
00007FF6CDFCC717 F9             stc
00007FF6CDFCC718 48 03 F8       add rdi, rax
00007FF6CDFCC71B E9 00 00 00 00 jmp 0x7ff6cdfcc720
00007FF6CDFCC720 FF E7          jmp rdi
--- FINISHED TRACING HANDLER --
Поэтому код берут порциями, для каждого конкретного случая и потом пишут "инструментацию". Примерно как здесь - https://github.com/nblog/Vm2Import
Спасибо за большой и развернутый ответ. А как в антивирусных компаниях борются с такими защитными механизмами? антивирус вряд ли может динамически на машине пользователя проанализировать протектор...
 

_MBK_

Новичок
Сообщения
264
Реакции
65
Спасибо за большой и развернутый ответ. А как в антивирусных компаниях борются с такими защитными механизмами? антивирус вряд ли может динамически на машине пользователя проанализировать протектор...
А вы как думаете, от чего подавляющее большинство кейгенов/кряков/патчеров детектируются как вирусы? Вовсе не потому, что злобные хакеры норовят туда троянов засадить (хотя и это есть) Чаще всего хитрые хакеры из соображений гордыни накрывают их каким нибудь взломанным протектом. А антивирусы - они тупые, как роскомнадзор, бьют по площадям: если реальный троян накрыт вмпротом (а такое тоже частенько) то, за нежеланием влезть ему под капот, в базу , не мудрствуя лукаво, вносится сигнатура вмпрота.
 

eway

Зарегистрированный
Сообщения
7
Реакции
0
f ne
А вы как думаете, от чего подавляющее большинство кейгенов/кряков/патчеров детектируются как вирусы? Вовсе не потому, что злобные хакеры норовят туда троянов засадить (хотя и это есть) Чаще всего хитрые хакеры из соображений гордыни накрывают их каким нибудь взломанным протектом. А антивирусы - они тупые, как роскомнадзор, бьют по площадям: если реальный троян накрыт вмпротом (а такое тоже частенько) то, за нежеланием влезть ему под капот, в базу , не мудрствуя лукаво, вносится сигнатура вмпрота.
а тут на форуме есть кто то из антивирусной компании? у них вроде бы есть методы борьбы с протекторами... или это все слухи? скажем, та же лаборатория касперского
 

plutos

_Вечный_Студент_
Мудрец
Сообщения
162
Реакции
647
@eway, a tini_tracer не пробовал?
Я им не пользовался, но знающие люди говорят, что самое оно. ;)
 
  • Понравилось
Реакции: mak

ARCHANGEL

Мудрец
Сообщения
50
Реакции
469
Зачем? Они ж, вроде, с вирусами должны бороться, а не с протекторами :D
Ну всё немного не так. Эмулятор будет пытаться проходить код, плюс поведенческий анализ. Там куча нечёткой логики, чтобы было сложно понять, как ав анализирует без детального разбора кода, плюс всякие машинные обучения, эвристики, деревья решений.
 

eway

Зарегистрированный
Сообщения
7
Реакции
0
@eway, не знаю отладчика, который имеет хорошую трассировку, да и сама трассировка это особый подход, обычно это скриптами делают, вручную, частично код исполняется в отладчике, трассируется через точки останова в скрипте, скрипты для 2-ой версии есть, например - VMProtect API Turbo Tracer 1.2.

Есть три варианта
1. Отладчик и скрипты
2. Своё автоматическое решение - Статический и динамический трасировщик
3. DBI - Dynamic Binary Instrumentation Frameworks (трассировка через эмуляцию) из топа по ссылкам выше это - Деобфускация VMProtect в IDA Pro используя Qiling Framework и Анализ VMProtect c Triton (dynamic binary analysis (DBA) framework), кто-то делает свой вариант, почитайте посты Bronco на сайте, он использует Unicorn в x64dbg, используя как раз выборочную трассировку, не весь код под трассировкой, кроме этого всю инструментацию Вы должны писать вручную.

В каждом случае ИМХО Вы должны точно знать, что вы делаете, дальше разбирать вручную. Тайминги будут в любом случае, кроме статик варианта и этим отдельно нужно заниматься, т.к. просадка через DBI по моему последнему знанию будет примерно в 40 раз как минимум.

Есть вариант с WinDbg Preview, там есть запись полной трассы (у меня он зависает намертво) - Time Travel Debugging - Sample App Walkthrough - Windows.

Альтернативно можно использовать другие фреймворки, как PIN - The PIN Tracer module - Hex Rays (The PIN tracer is a remote debugger plugin used to record execution traces. It allows to record traces on Linux and Windows (x86 and x86_64))

Все эти решения потребуют вклада времени и работы. Если вы заглядывали в тему, то там есть некоторые решения по АПИ, для примера этого вполне достаточно. Трассировку можно использовать для разных целей, но в основном это анализ -
masm:
00007FF6CDFCC5E3 0F B6 06       movzx eax, byte ptr [rsi]
00007FF6CDFCC5E6 49 0F BF CA    movsx rcx, r10w
00007FF6CDFCC5EA D2 CD          ror ch, cl
00007FF6CDFCC5EC 48 81 C6 01 00 add rsi, 1
00007FF6CDFCC5F3 32 C3          xor al, bl
00007FF6CDFCC5F5 48 0F BF CC    movsx rcx, sp
00007FF6CDFCC5F9 D0 C0          rol al, 1
00007FF6CDFCC5FB E9 00 00 00 00 jmp 0x7ff6cdfcc600
00007FF6CDFCC600 34 49          xor al, 0x49
00007FF6CDFCC602 66 41 8B CF    mov cx, r15w
00007FF6CDFCC606 66 87 C9       xchg cx, cx
00007FF6CDFCC609 66 0F C9       bswap cx
00007FF6CDFCC60C D0 C8          ror al, 1
00007FF6CDFCC60E E9 00 00 00 00 jmp 0x7ff6cdfcc613
00007FF6CDFCC613 FE C8          dec al
00007FF6CDFCC615 32 D8          xor bl, al
00007FF6CDFCC617 48 0F C9       bswap rcx
00007FF6CDFCC61A 12 E8          adc ch, al
00007FF6CDFCC61C 48 8B 4C 25 00 mov rcx, qword ptr [rbp]
00007FF6CDFCC621 48 81 C5 08 00 add rbp, 8
00007FF6CDFCC628 F5             cmc
00007FF6CDFCC629 E9 00 00 00 00 jmp 0x7ff6cdfcc62e
00007FF6CDFCC62E 48 89 0C 04    mov qword ptr [rsp + rax], rcx
00007FF6CDFCC632 48 90          nop
00007FF6CDFCC634 F5             cmc
00007FF6CDFCC635 41 12 C4       adc al, r12b
00007FF6CDFCC638 8B 06          mov eax, dword ptr [rsi]
00007FF6CDFCC63A 48 81 C6 04 00 add rsi, 4
00007FF6CDFCC641 33 C3          xor eax, ebx
00007FF6CDFCC643 E9 01 00 00 00 jmp 0x7ff6cdfcc649
00007FF6CDFCC649 2D 86 7A AF 10 sub eax, 0x10af7a86
00007FF6CDFCC64E F8             clc
00007FF6CDFCC64F E9 00 00 00 00 jmp 0x7ff6cdfcc654
00007FF6CDFCC654 F7 D0          not eax
00007FF6CDFCC656 F8             clc
00007FF6CDFCC657 E9 00 00 00 00 jmp 0x7ff6cdfcc65c
00007FF6CDFCC65C C1 C8 02       ror eax, 2
00007FF6CDFCC65F E9 00 00 00 00 jmp 0x7ff6cdfcc664
00007FF6CDFCC664 FF C0          inc eax
00007FF6CDFCC666 F9             stc
00007FF6CDFCC667 40 F6 C4 D1    test spl, 0xd1
00007FF6CDFCC66B F5             cmc
00007FF6CDFCC66C 53             push rbx
00007FF6CDFCC66D 66 81 D3 0E 0E adc bx, 0xe0e
00007FF6CDFCC672 86 FF          xchg bh, bh
00007FF6CDFCC674 31 04 24       xor dword ptr [rsp], eax
00007FF6CDFCC677 66 44 0F BB F3 btc bx, r14w
00007FF6CDFCC67C 49 0F 42 DB    cmovb rbx, r11
00007FF6CDFCC680 5B             pop rbx
00007FF6CDFCC681 48 63 C0       movsxd rax, eax
00007FF6CDFCC684 45 3A D3       cmp r10b, r11b
00007FF6CDFCC687 66 F7 C2 58 7D test dx, 0x7d58
00007FF6CDFCC68C 48 03 F8       add rdi, rax
00007FF6CDFCC68F FF E7          jmp rdi
--- FINISHED TRACING HANDLER --

00007FF6CDFCC691 0F B6 06       movzx eax, byte ptr [rsi]
00007FF6CDFCC694 66 81 E9 65 1E sub cx, 0x1e65
00007FF6CDFCC699 66 41 23 C9    and cx, r9w
00007FF6CDFCC69D C0 D1 56       rcl cl, 0x56
00007FF6CDFCC6A0 48 81 C6 01 00 add rsi, 1
00007FF6CDFCC6A7 48 0F BB C9    btc rcx, rcx
00007FF6CDFCC6AB 44 0F B3 C9    btr ecx, r9d
00007FF6CDFCC6AF 32 C3          xor al, bl
00007FF6CDFCC6B1 D0 C0          rol al, 1
00007FF6CDFCC6B3 D3 D9          rcr ecx, cl
00007FF6CDFCC6B5 34 49          xor al, 0x49
00007FF6CDFCC6B7 D0 C8          ror al, 1
00007FF6CDFCC6B9 49 0F BF C9    movsx rcx, r9w
00007FF6CDFCC6BD 0F 93 C1       setae cl
00007FF6CDFCC6C0 66 40 0F BE CE movsx cx, sil
00007FF6CDFCC6C5 FE C8          dec al
00007FF6CDFCC6C7 32 D8          xor bl, al
00007FF6CDFCC6C9 48 8B 4C 25 00 mov rcx, qword ptr [rbp]
00007FF6CDFCC6CE F9             stc
00007FF6CDFCC6CF 48 81 C5 08 00 add rbp, 8
00007FF6CDFCC6D6 48 89 0C 04    mov qword ptr [rsp + rax], rcx
00007FF6CDFCC6DA 8B 06          mov eax, dword ptr [rsi]
00007FF6CDFCC6DC 48 81 C6 04 00 add rsi, 4
00007FF6CDFCC6E3 40 80 FC D8    cmp spl, 0xd8
00007FF6CDFCC6E7 F8             clc
00007FF6CDFCC6E8 33 C3          xor eax, ebx
00007FF6CDFCC6EA 66 81 FE E1 2E cmp si, 0x2ee1
00007FF6CDFCC6EF 2D 86 7A AF 10 sub eax, 0x10af7a86
00007FF6CDFCC6F4 F7 D0          not eax
00007FF6CDFCC6F6 F9             stc
00007FF6CDFCC6F7 C1 C8 02       ror eax, 2
00007FF6CDFCC6FA E9 00 00 00 00 jmp 0x7ff6cdfcc6ff
00007FF6CDFCC6FF FF C0          inc eax
00007FF6CDFCC701 F9             stc
00007FF6CDFCC702 48 3B D4       cmp rdx, rsp
00007FF6CDFCC705 53             push rbx
00007FF6CDFCC706 40 80 FE 4D    cmp sil, 0x4d
00007FF6CDFCC70A 41 02 DE       add bl, r14b
00007FF6CDFCC70D 31 04 24       xor dword ptr [rsp], eax
00007FF6CDFCC710 5B             pop rbx
00007FF6CDFCC711 40 84 E5       test spl, bpl
00007FF6CDFCC714 48 63 C0       movsxd rax, eax
00007FF6CDFCC717 F9             stc
00007FF6CDFCC718 48 03 F8       add rdi, rax
00007FF6CDFCC71B E9 00 00 00 00 jmp 0x7ff6cdfcc720
00007FF6CDFCC720 FF E7          jmp rdi
--- FINISHED TRACING HANDLER --
Поэтому код берут порциями, для каждого конкретного случая и потом пишут "инструментацию". Примерно как здесь - https://github.com/nblog/Vm2Import
не сочтите за грубость..., а тут есть те кто реально снимал такую защиту сам?
 

mak

Соломенные сандалии
Администратор
Сообщения
861
Реакции
654
@eway, ну конечно же есть, с полной девиртуализацией не знаю, а вот трещину сделать очень много, если уклон "кто может сделать", то Вам уже сюда - Поиск специалистов
 

_MBK_

Новичок
Сообщения
264
Реакции
65
По счастью, для взлома программы полное снятие защиты почти никогда не требуется ;)
 

eway

Зарегистрированный
Сообщения
7
Реакции
0
По счастью, для взлома программы полное снятие защиты почти никогда не требуется ;)
Вышла хорошая статья на хабре от GroupIB "Вскрытие покажет...", сделал дамп драйвера, но IDA просто "сошла с ума"... кто то знает как с таким бороться? + в x64dbg вообще файл отказался открываться как .exe (естественное заголовок драйвера переделал с native на GUI)
 

Прикрепленные файлы:

ARCHANGEL

Мудрец
Сообщения
50
Реакции
469
Так и не понял, "как с таким борооться" - бороться с чем? С чем "таким"? И почему красным выделен виртуальный адрес какого-то фрагмента, который сейчас анализируется?
 
Верх Низ