Сейчас на форуме: (+9 невидимых)

 eXeL@B —› Протекторы —› VMProtect (Туторы, скрипты, плагины, ...)
<< . 1 . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 10 ... 14 . 15 . >>
Посл.ответ Сообщение


Ранг: 154.2 (ветеран), 66thx
Активность: 0.080
Статус: Участник
REVENGE Crew

Создано: 18 марта 2010 11:56 · Поправил: kioresk
· Личное сообщение · #1

Решил создать отдельную тему по VMProtect'у, чтобы собирать в одном месте информацию по этому проту и обсуждать детали.

Для начала ответ на самый распространенный вопрос.

1. Почему OllyDbg вылетает при запуске программы, защищенной VMProtect'ом?

Потому что VMProtect использует баг с переполнением буфера в старых версиях dbghelp.dll, из-за которого отладчик падает. Чтобы обойти его необходимо исправить баг в dbghelp.dll или положить в папку отладчика новую версию файла dbghelp.dll, который можно взять из комплекта Debugging Tools for Windows:

http://www.microsoft.com/whdc/devtools/debugging/default.mspx

Добавлено

Microsoft включил дистрибутив Debugging Tools в состав пакета Windows SDK (который весит достаточно прилично), поэтому вот альтернативные ссылки на:

1. Дистрибутив Debugging Tools v6.12.2.633 x86 от 26.02.2010 (18,3 Мбайт)

2. Только библиотека dbghelp.dll из дистрибутива Debugging Tools v6.12.2.633 x86 (0,5 Мбайт)




Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 14 ноября 2013 11:39
· Личное сообщение · #2

Djeck, тема инлайна раскрыта на этой базе можно универсальный скрипт налабать, который будет фактически отключать проверку crc. плюсую однозначно!

-----
[nice coder and reverser]




Ранг: 196.0 (ветеран), 72thx
Активность: 0.140.02
Статус: Участник

Создано: 14 ноября 2013 13:04
· Личное сообщение · #3

Hellspawn
Как мне кажется лучше замутить это дело программным путём, а не скриптом. Я начал это дело, даже GUI нарисовал, и сволочи поджали на работе. Теперь хрен знает, когда время будет...
Да и надо решить вопрос со старыми версиями прота. Там проверка немного по другому.




Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 14 ноября 2013 16:47
· Личное сообщение · #4

Djeck как реализовывать не важно) старые это какие? любые меньше 2.12?

-----
[nice coder and reverser]


| Сообщение посчитали полезным: Mishar_Hacker

Ранг: 281.8 (наставник), 272thx
Активность: 0.250.01
Статус: Участник
Destroyer of protectors

Создано: 14 ноября 2013 19:31 · Поправил: MasterSoft
· Личное сообщение · #5

Djeck пишет:
Да и надо решить вопрос со старыми версиями прота. Там проверка немного по другому.

да там лажа ваще, хидер даже в принципе подменить достаточно и усё.

Djeck пишет:
Как мне кажется лучше замутить это дело программным путём, а не скриптом. Я начал это дело, даже GUI нарисовал

делал уже прогу на коленке для патча crc, стали баги вылезать...да и с антидебагом тоже какие-то траблы были, но это можно рипнуть из вамитовского плага да и в паблике инфы есть, но я забил в итоге.

Hellspawn пишет:
старые это какие? любые меньше 2.12?

может и ошибаюсь, но вроде меньше 2.x




Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 14 ноября 2013 19:49
· Личное сообщение · #6

MasterSoft так дебаг апи не юзать и все будет норм длл-ку инжектить в процесс и хукать диспатчер, например. а так вроде достаточно универсально будет, версию бы ещё детектить ветки 2.х в принципе достаточно.

-----
[nice coder and reverser]




Ранг: 196.0 (ветеран), 72thx
Активность: 0.140.02
Статус: Участник

Создано: 14 ноября 2013 20:43
· Личное сообщение · #7

Hellspawn пишет:
старые это какие? любые меньше 2.12

Да, уже на 2.08 файл не мапится в память. Надо ловить CreateFile или GetModuleHandle
MasterSoft пишет:
да там лажа ваще, хидер даже в принципе подменить достаточно и усё.

Это по методу LCF-AT? Если да, то это не инлайн. Держать рядом не патченный файл не кошерно. Да и на 2.08 например не прокатывает.
MasterSoft пишет:
делал уже прогу на коленке для патча crc, стали баги вылезать

Да какие там баги могут вылезать? Немного проблемно это место найти из-за мусора,но и это не огромная проблема.По анти-отладке вамит уже давал исчерпывающую информацию. А в последних версиях вообще халява: peb запатчить, железки спрятать и захучить Zw* функи. Единственное, так и не понял, как вмпрот палит мемори бряки на секции кода.
Hellspawn пишет:
версию бы ещё детектить

Да, это бы самому было интересно узнать. И вообще у меня складывается впечатление, что ты агрессивно настроен к проту Может быть CRC-патчер?



Ранг: 281.8 (наставник), 272thx
Активность: 0.250.01
Статус: Участник
Destroyer of protectors

Создано: 14 ноября 2013 21:21 · Поправил: MasterSoft
· Личное сообщение · #8

Djeck пишет:
Это по методу LCF-AT? Если да, то это не инлайн. Держать рядом не патченный файл не кошерно.

не знаю чего там LCF-AT придумала, и зачем держать не патченый файл рядом...я говорю про патч хидера на оригинальный в памяти.
вот пример тебе грузанул:http://www.sendspace.com/file/5v74ik
там оригинал и патченный файл. просто хидер туда целиком запихнул, можно было обойтись патчем нескольких байт, но это я для наглядности.

Djeck пишет:
Да какие там баги могут вылезать?

ну я вообще как кодер не очень=) накодишь - молодец, может хоть прот обновят наконец, а то уныло уже.

Djeck пишет:
Немного проблемно это место найти из-за мусора,но и это не огромная проблема.

это как раз совсем не проблема, пару бряков и прикрутить дисасм как бы не сложно.

да проблемы вообще никакой нет в реализации, когда начал писать вроде было сначала всё няшно, даже работало=) а потом лень меня одолела и понял, что для себя и так сойдёт.



Ранг: 196.0 (ветеран), 72thx
Активность: 0.140.02
Статус: Участник

Создано: 14 ноября 2013 21:56
· Личное сообщение · #9

MasterSoft пишет:
может хоть прот обновят наконец, а то уныло уже.

Да не не надо обновлять, и так хорошо
MasterSoft пишет:
да проблемы вообще никакой нет в реализации, когда начал писать вроде было сначала всё няшно, даже работало=) а потом лень меня одолела и понял, что для себя и так сойдёт.

Но это у всех так Вроде работает, да и ладно.



Ранг: 196.0 (ветеран), 72thx
Активность: 0.140.02
Статус: Участник

Создано: 15 ноября 2013 00:25 · Поправил: Djeck
· Личное сообщение · #10

Вообщем посмотрел, что творится со старыми версиями. Функция расчёта почти такая же, как и в новых. Различается не намного. Например для версии 1.70:

Code:
  1. MOV EDX, DWORD PTR [EBP]
  2. ADD EBP, 4
  3. XOR EAX, EAX
  4.  
  5. Loop:
  6. MOVZX ECX, BYTE PTR [EDX]
  7. SHL EAX, 4
  8. ADD EAX, ECX
  9. INC EDX
  10. DEC DWORD PTR [EBP]
  11. JUMP to Loop
  12.  
  13. mov dword ptr [ebp], eax <---------- сохранение хешей


Единственное в версиях меньше 2.12 файл не размещается в памяти, но место сохранения можно найти вообще не запуская файл. Скрипт нужно немного доработать, а то в старых версиях файл запускается.
P.S. Пока не понял как читается файл с диска. CreateFile\ReadFile и т.д. не срабатывают.




Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 15 ноября 2013 12:03
· Личное сообщение · #11

Djeck в младших версиях проверяется заголовок и какие-то критичные куски самого прота, ловить просто, мемори бряк на хидер

например, так это выглядит в файле от MasterSoft.

Code:
  1. 009A9301     883C24               MOV BYTE PTR SS:[ESP],BH
  2. 009A9304     8945 00              MOV DWORD PTR SS:[EBP],EAX ; <- save hash
  3. 009A9307     52                   PUSH EDX


-----
[nice coder and reverser]




Ранг: 37.9 (посетитель), 7thx
Активность: 0.030
Статус: Участник

Создано: 15 ноября 2013 12:43
· Личное сообщение · #12

Спасибо тебе, волшебник.
А тем временем на форуме вмп уже --> выложили<-- ссылку на этот тред, в добавок практически готова версия 3.00.




Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 15 ноября 2013 12:53
· Личное сообщение · #13

Carpe DiEm пускай читают, нам не жалко

Djeck как находить место без запуска? сигнатуры + дизасм?

-----
[nice coder and reverser]




Ранг: 196.0 (ветеран), 72thx
Активность: 0.140.02
Статус: Участник

Создано: 15 ноября 2013 14:55
· Личное сообщение · #14

Hellspawn пишет:
как находить место без запуска? сигнатуры + дизасм?

вообщем да. Искать mov dword ptr [ebp], eax. Найдётся несколько мест, но только в нашем после команды сохранения почти всегда стоит pushad.
Или ещё можно попробовать найти сдвиг SHL EAX, 4. Я находил только одну команду (нашу). Только в версиях до 2.xx, константа = 7, а поменьше от 4 до 7.
Carpe DiEm пишет:
А тем временем на форуме вмп уже --> выложили<-- ссылку на этот тред

Интересно, что чувак стуканул, но так и не понял как происходит патч хешей. Жалуется, что патчат пиб+ перехватывают Zw* функции Да и кстати, что-то ему пока не ответили.
P.S. интересно прот кодит до сих пор дерьмотолог?




Ранг: 88.2 (постоянный), 111thx
Активность: 0.070.01
Статус: Участник

Создано: 15 ноября 2013 15:11
· Личное сообщение · #15

Чем больше наворотов у протектора, тем меньше ими пользуются шароварщики



Ранг: 4.9 (гость), 1thx
Активность: 0.010
Статус: Участник

Создано: 15 ноября 2013 15:56
· Личное сообщение · #16

>Hellspawn
мемори бряк на хидер например, так это выглядит в файле от MasterSoft

нифига ,палит дебаггер




Ранг: 748.2 (! !), 390thx
Активность: 0.370
Статус: Участник
bytecode!

Создано: 15 ноября 2013 16:10
· Личное сообщение · #17

Carpe DiEm пишет:
А тем временем на форуме вмп уже --> выложили<-- ссылку на этот тред

Djeck пишет:
чувак стуканул

Я более, чем уверен, что автор прота и без того чувака в курсе про этот тред ;)

Airenikus пишет:
Чем больше наворотов у протектора, тем меньше ими пользуются шароварщики

Большинство предпочитает простое и эффективное решение, это да, но те кто любит выжать максимум из купленного продукта не поленятся во всем разобраться, такие тоже встречаются.

-----
Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску.




Ранг: 35.4 (посетитель), 15thx
Активность: 0.020
Статус: Участник

Создано: 15 ноября 2013 16:53
· Личное сообщение · #18

Поглядел краем глаза тутор, почему-то не упоминается что существует проверка кода самого примитива CRC. Или же я не особо внимательно читал.




Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 15 ноября 2013 17:29
· Личное сообщение · #19

neprovad ну так если мы хеши подмениваем то какая разница? или там отдельный код проверки?

newbie_cracker у меня ниче не палит.

-----
[nice coder and reverser]




Ранг: 196.0 (ветеран), 72thx
Активность: 0.140.02
Статус: Участник

Создано: 15 ноября 2013 18:38 · Поправил: Djeck
· Личное сообщение · #20

neprovad пишет:
Поглядел краем глаза тутор, почему-то не упоминается что существует проверка кода самого примитива CRC

Вот чтобы не задавать таких вопросов, надо глядеть не краем глаза, а обоими глазами .
Во-первых нам без разницы, что он там проверяет, мы меняем любые хеши. Пускай он хоть обосрётся проверять их.
Во-вторых сам примитив никто и не трогает, как мы можем не пройти проверку?
Hellspawn пишет:
у меня ниче не палит

палит, я уже об этом говорил. А как вообще оля ставит мемори бряки? Какие способы их запалить.

| Сообщение посчитали полезным: neprovad


Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 15 ноября 2013 18:45
· Личное сообщение · #21

Djeck VirtualProtect как же ещё.
запалить проверив атрибуты у памяти. На хеадер если ставить, то брякаемся как раз на проверке сразу, потом чуть потрейсить и вуаля:
Code:
  1. 0078AE13    /E9 AF130000          JMP Unpackme.0078C1C7
  2. 0078AE18    |9C                   PUSHFD
  3. 0078AE19    |8945 00              MOV DWORD PTR SS:[EBP],EAX ; <- save
  4. 0078AE1C    |60                   PUSHAD
  5. 0078AE1D    |FF3424               PUSH DWORD PTR SS:[ESP]
  6. 0078AE20    |54                   PUSH ESP
  7. 0078AE21    |FF3424               PUSH DWORD PTR SS:[ESP]
  8. 0078AE24    |8D6424 38            LEA ESP,DWORD PTR SS:[ESP+38]
  9. 0078AE28   ^|E9 AFFFFFFF          JMP Unpackme.0078ADDC


-----
[nice coder and reverser]




Ранг: 315.1 (мудрец), 631thx
Активность: 0.30.33
Статус: Модератор
CrackLab

Создано: 15 ноября 2013 18:46
· Личное сообщение · #22

Djeck пишет:
А как вообще оля ставит мемори бряки?

VirtualProtectEx (.... PAGE_GUARD) наверное...




Ранг: 328.7 (мудрец), 73thx
Активность: 0.170.01
Статус: Участник

Создано: 15 ноября 2013 18:56
· Личное сообщение · #23

Djeck пишет:
существует проверка кода самого примитива CRC

что-нибудь типа
mov eax,[eax]

и хеши идут лесом



Ранг: 4.9 (гость), 1thx
Активность: 0.010
Статус: Участник

Создано: 15 ноября 2013 20:09 · Поправил: newbie_cracker
· Личное сообщение · #24

>Djeck

палево как то обошол меняя настройки фантика и стронга

>Hellspawn

бряк на хидер
минуту в нтдлл запускал
потом сюда
Code:
  1. 009A74B0                 3202                  XOR AL,BYTE PTR DS:[EDX]
  2. 009A74B2                 9C                    PUSHFD
  3. 009A74B3                 8D6424 14             LEA ESP,DWORD PTR SS:[ESP+0x14]
  4. 009A74B7                 0F84 101D0000         JE 009A91CD
  5. 009A91CD                 E8 3CE1FFFF           CALL 009A730E

минуты две по запускал ,только после этого выпал на хэши




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 16 ноября 2013 12:09
· Личное сообщение · #25

Мельком поглядел тутор, пока время было. Коль уж я в гритсах, придётся отрабатывать

в принципе, чувствуется, что редактора не было, местами грамматика хромает, запятые выставлены рандомно и есть очепятки типа API LOGER или VMProect

в противном случае указываем правильный в RVA-формате (т.е. как Вы видите его в отладчике)
лично мне в первую очередь из отладчика приходят в голову адреса в CPU, а там ВА, а не РВА

на мой взгляд, в патче лучше сверять адреса с учётом плавающей базы через дельта-смещение, иначе может быть коллизия, нежели последнюю часть адреса и часть хеша

И последнее нужно найти свободное место в качестве переменной. Сюда система запишет старое значение. Я указал место чуть ниже нашего патча
когда патч отожрётся и забудется эта вольность, она доставит много приятных моментов отладки, когда вызов апи паразапишет часть патча. лучше сделай push reg; push esp и не трогай область кода

«фиктивную» процедуру получения хешей
она нерелокабельна

насколько мне известно, LCF-AT - это она, а не он

что прота обновление не за горами, в принципе уже сказали, так что запасаемся поп-корном

И напоследок, с чем ты так и не разобрался, почему оно падает. Внутри ВМ на входе есть проверка и ветвление. Если проверка не проходит, оно уходит на плохую ветку и крашится. В проверке участвуют некоторые дворды из кода и выделенной памяти, TF из флагов. Конкретно в данном случае фейлится проверка на адрес 0x469e57 и лежащий в ней шифрованный адрес выделенной памяти, откуда берётся второй дворд. Второй дворд конкретно берётся из адреса 0xf70050, это было, видимо, перенаправлено с выделенной памяти скриптом. Полагаю, что это скорее всего косяк скрипта, но не разбирался, как он работает.



Ранг: 488.1 (мудрец), 272thx
Активность: 0.350
Статус: Участник

Создано: 16 ноября 2013 13:21
· Личное сообщение · #26

Ребят. просмотрел тоже краем глаза.. ВАМита на вас нету.. я на эту граблину года 2 назад наступил, тоже пытался ЦРЦ править, создавая плаг для ольки, просчитывая ЦРЦ из бинаря с винта.. к сожалению данная технология не всегда работает. Беда в том, что в некоторых прогах идет самомодификация кода, и црц.. к моменту расчета, должна считаться уже модифицированного кода. В моем случае было гдето 1.5к црц проверок.. я подменил гдето 98 проц. изза селф модифи. Эта техника имеет право на существование, но не является поноцеей 100 проц.

-----
Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме....




Ранг: 196.0 (ветеран), 72thx
Активность: 0.140.02
Статус: Участник

Создано: 16 ноября 2013 16:26 · Поправил: Djeck
· Личное сообщение · #27

Archer пишет:
в принципе, чувствуется, что редактора не было, местами грамматика хромает, запятые выставлены рандомно

Как нету? Word рулит
Archer пишет:
лично мне в первую очередь из отладчика приходят в голову адреса в CPU, а там ВА, а не РВА

Да конечно, это очепятка
Archer пишет:
она нерелокабельна

Да с этим полностью согласен. Каждый этот момент может поправить сам, я дописывал статью на последнем издыхании и сильно спешил, поэтому упустил этот момент
Archer пишет:
насколько мне известно, LCF-AT - это она, а не он

Ну значит ядрённая баба
Archer пишет:
И напоследок, с чем ты так и не разобрался, почему оно падает. Внутри ВМ на входе есть проверка и ветвление. Если проверка не проходит, оно уходит на плохую ветку и крашится

Хм.. интересно почему на xp всё ок, а на семерке фолт. Даже если снимать на 7, всё равно проверку не проходим. Причём тестил на разных компах, практически везде всё ок. Причём я это место видел и понял о чём ты говоришь, но не проверил точно, поэтому будучи не уверенным в своих мыслях не стал об этом говорить. Кстати, в процедуре расчёта хеша есть идентичная проверка. Стоит прыжок, и если не прыгнет идём на идентичный кусок расчёта. Хеш получится тот же самый, поэтому для меня осталось загадкой, зачем две одинаковые процедуры расчёта.
VodoleY пишет:
Ребят. просмотрел тоже краем глаза.. ВАМита на вас нету.. я на эту граблину года 2 назад наступил, тоже пытался ЦРЦ править, создавая плаг для ольки, просчитывая ЦРЦ из бинаря с винта..

Ты о чём? Нет я вправду не понял... Мы ничего не рассчитываем, всё делает сам прот. Зачем считать что-то с диска? Мы всего-лишь в месте сохранения подменяем сам хеш, ничего не меняя в функции расчёта.
VodoleY пишет:
Беда в том, что в некоторых прогах идет самомодификация кода, и црц.. к моменту расчета, должна считаться уже модифицированного кода

Как это может мешать нам? Ну пусть VMProt и считает, мы то здесь пр чём. Если есть возможность дай посмотреть прогу, что бы понять о чём ты говоришь




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 16 ноября 2013 17:20
· Личное сообщение · #28

Djeck пишет:
интересно почему на xp всё ок, а на семерке фолт

Лично у меня крашился анпаканый что на ХР, что на 7. Почему именно у тебя работает, не знаю. Можно, конечно, и всю проверку вытащить, а не частями, что я описал, но мне как-то ленно было.




Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 16 ноября 2013 17:40
· Личное сообщение · #29

у меня пашет и на 7-ке и на хп но проверку надо ковырять в любом случае, а то не красиво.

-----
[nice coder and reverser]




Ранг: 196.0 (ветеран), 72thx
Активность: 0.140.02
Статус: Участник

Создано: 16 ноября 2013 18:55
· Личное сообщение · #30

На счёт проверки, тоже прихожу к мнению, что и Арчи - видать где-то косячит скрипт. Снимал руками, вроде всё ок. Сначало думал, что это опция прота, которая проверяет целостность объектов вм, но даже на минимальных опциях (с выключенной опцией) происходит ошибка.
P.S. Вообщем, по статье сделаю вывод такой: она конечно же не лишена недостатков, но основная тема раскрыта, где и что патчить найдено, а как патчить пускай каждый выбирает свой способ.В любом случае хуже от того, что я написал этот туториал не будет.

| Сообщение посчитали полезным: Jaa


Ранг: 337.6 (мудрец), 224thx
Активность: 0.210.1
Статус: Участник
born to be evil

Создано: 17 ноября 2013 14:28
· Личное сообщение · #31

по уму надо творить анпакер. просто

-----
От многой мудрости много скорби, и умножающий знание умножает печаль



<< . 1 . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 10 ... 14 . 15 . >>
 eXeL@B —› Протекторы —› VMProtect (Туторы, скрипты, плагины, ...)
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати