Сейчас на форуме: morgot, sashalogout, -Sanchez- (+3 невидимых) |
eXeL@B —› Софт, инструменты —› Themida Risc decoder |
Посл.ответ | Сообщение |
|
Создано: 20 сентября 2011 03:24 · Поправил: Johnny Mnemonic · Личное сообщение · #1 |
|
Создано: 20 сентября 2011 09:14 · Личное сообщение · #2 |
|
Создано: 20 сентября 2011 09:50 · Личное сообщение · #3 |
|
Создано: 20 сентября 2011 10:51 · Личное сообщение · #4 Откуда поделка?? Гугл кроме этого топа о ней ничего не знает. Опробовал на всех Фимках имеющихся в колекции (1.8.0.0-2.1.1.0) не на одной не взлетело. Везде "VM Risc non Trovata o Versione non supportata", что в переводе гугла на славянский означает VM Risc не найдена или версия не поддерживается. ----- 127.0.0.1, sweet 127.0.0.1 |
|
Создано: 20 сентября 2011 10:55 · Поправил: Nightshade · Личное сообщение · #5 |
|
Создано: 20 сентября 2011 10:58 · Личное сообщение · #6 |
|
Создано: 20 сентября 2011 10:59 · Поправил: OKOB · Личное сообщение · #7 |
|
Создано: 20 сентября 2011 13:00 · Личное сообщение · #8 |
|
Создано: 20 сентября 2011 14:06 · Личное сообщение · #9 Nightshade пишет: Посмотри видео Посмотрел, действительно да. Вопрос в том где взять рабочий дамп. На тутси автор выложил своего подопытного. Пытаюсь повторить и осмыслить действия показаные в киношке. - после нахождения стаба ВМ, находится хэндлер 00-00 и из его кода извлекаются "плавающие" смещения в контексте ВМ для полей контекста NextOpCode1 и NextOpCode2. При этом опирается на команды shl eax, 2 shl eсx, 2 как элементы не подвергшиеся обфускации в блоке хэндлера GoNext_Code. В оригинале (не обфусцированный в теле Фимы) этот код выглядит так SLrisc64_GoNext_Code: add esp, 8 mov eax, [edi+id_NextOpCode1] shl eax, 2 mov ebx, [edi+id_NextOpCode2] shl ebx, 2 mov esi, [edi+id_2nd_Bytes_OpcodeTable] add esi, eax mov esi, [esi] add esi, ebx mov esi, [esi] jmp esi где id_NextOpCode2 = 7FFFFFD3h id_NextOpCode1 = 7FFFFFD5h Как видно при обфускации во второй команде произошла замена EBX-->ECX. Дальше имея эти смещения можно извлекать последовательность обработки команд имея доступ к чистым значениям опкодов ОП1 и ОП2. ----- 127.0.0.1, sweet 127.0.0.1 |
|
Создано: 20 сентября 2011 14:13 · Личное сообщение · #10 |
|
Создано: 20 сентября 2011 17:42 · Поправил: OKOB · Личное сообщение · #11 Nightshade пишет: знать размер каждого опкода из ленты для риски размер команды фиксированный и в старых версиях был 14 байт в новых 15. Например в хэндлере 00__ из рассматриваемого случая команда 00D2AEAF: imul ebx, ebx, f как раз и отвечает за гранулярность пикода. Если посмотреть на столбец с адресами пикода, то разница между любыми двумя адресами будет кратна 15ти. Nightshade пишет: Почему не сделано распознавание не понятно Такое распознавание (опкод - хэндлер) и есть половина декомпиляции. Автором сделано достаточно много. На автомате распознается тип хэндлера 1/2/3, аргументы и параметры. Для большинства приведенного кода операцию можно легко указать по самой последовательности команд (типовые конструкции). А для двух "значимых" команд в конце ролика продемонстрировано определение типа операции - ручками. Для хэндлеров, кстати, приведен не дизассемблированный код, а трасса при конкретных параметрах. В этом можно убедиться сравнив приведенный код для хэндлеров с одним и тем-же опкодом (могут встречаться по несколько раз). Не понятен этап оптимизации кода хэндлера. Попытка деобфускации на одной трассе? (Безусловные переходы которыми изобилует спагетти-код хэндлеров сразу опущены). ----- 127.0.0.1, sweet 127.0.0.1 |
|
Создано: 10 ноября 2017 03:59 · Поправил: Kuzya69 · Личное сообщение · #12 |
eXeL@B —› Софт, инструменты —› Themida Risc decoder |