Сейчас на форуме: bartolomeo, asfa, _MBK_ (+7 невидимых)

 eXeL@B —› Вопросы новичков —› Распаковка StarForce 4.70 - Пьеса в нескольких действиях
<< . 1 . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 10 . >>
Посл.ответ Сообщение

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

Создано: 27 октября 2011 23:54
· Личное сообщение · #1

Информации об исследовании данной защиты в свободном доступе почти нет,кроме мануала про снятие SF 5.50 с игры King's Bounty. Особого интереса этот мануал не представляет по той причине,что на игру есть нормальные NoDVD.
Идея была такая - снять дамп с запущенного через эмулятор процесса ,затем восстанавливать недостающие процедуры из Protect.dll.
Версия 4.70 очень поганая, запустить её с эмулятором удается с 10-15 раза.
Если в отладчике открывать сам exe-файл ,то после тыкания Shift+F9 выбрасывает в Protect.dll . Никакого EP нет.
Вообщем пусть гуру объяснят как тут надо действовать



Ранг: 10.9 (новичок), 5thx
Активность: 0.060
Статус: Участник

Создано: 30 октября 2011 16:48 · Поправил: ThugboyZ
· Личное сообщение · #2

OEP: 000E716E. Дамп на OEP в атаче. Импорт похерен, но для 3-4 стара это обычно, украдено ~15 фунок из kernel32.dll & user32.dll. Вот тут все exe & dll файлы что нужны для анпака может кому понадобиться: http://multi-up.com/585990

0b8d_30.10.2011_EXELAB.rU.tgz - petr8_dump.rar



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

Создано: 30 октября 2011 17:49 · Поправил: Calypso
· Личное сообщение · #3

ThugboyZ пишет:
OEP: 000E716E. Дамп на OEP в атаче. Импорт похерен, но для 3-4 стара это обычно, украдено ~15 фунок из kernel32.dll & user32.dll

Да у меня тоже самое. Вот для интереса видео как запускается SF 4.0 Pro в Olly,разница как говорится налицо:
http://depositfiles.com/files/mog8knxrt

ThugboyZ пишет:
Вот сделал мини-образ на Петьку8 проверяйте
780d_30.10.2011_EXELAB.rU.tgz - PETKA8_MINI_IMAGE.rar

Не пашет - диск не идентифицирован. Мое нубское мнение - сделать миниобраз на СФ Про невозможно



Ранг: 22.5 (новичок), 18thx
Активность: 0.050
Статус: Участник

Создано: 30 октября 2011 19:16 · Поправил: [Nomad]
· Личное сообщение · #4

SF 4.0 = SF 3.7, потому олькой и не подебажить особо. Перехваты инт 1 и инт 3 окончательно убрали только начиная с 4.70.

Calypso пишет:
Мое нубское мнение - сделать миниобраз на СФ Про невозможно

Пофигу про или не про версия, зависит от опций привязки. Тут включена проверка рандомных секторов на диске, потому мини-образ не проходит проверку.



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

Создано: 30 октября 2011 19:26 · Поправил: Calypso
· Личное сообщение · #5

[Nomad] пишет:
SF 4.0 = SF 3.7, потому олькой и не подебажить особо. Перехваты инт 1 и инт 3 окончательно убрали только начиная с 4.70.

И то под давлением школоты,которая писала на форумах что Старфорс убивает их компы
По версиям у Стара явно деградация идет - 3ю версию с трудом снимают лишь профи RELOADED ,4ю версию Тривиумы со скрипом,а Basic и школьники могут распаковать (типа меня ), 5ю версию даже закейгенили.
6-й Старфорс будет ломаться заменой JE на JMP очевидно...
[Nomad] пишет:
Тут включена проверка рандомных секторов на диске, потому мини-образ не проходит проверку.

Более того,учитывается скорость считывания сектора. Можете сами проверить такая забавная штука:
Петька 007 - образ+топология на DVD диске - запускается, с винта - нет
Петька 8 - образ+топология на DVD диске - не запускается,с винта - да
Вывод: SF 4.0 требует чтобы секторы читались медленно,а 4.70 наоборот быстро



Ранг: 22.5 (новичок), 18thx
Активность: 0.050
Статус: Участник

Создано: 30 октября 2011 19:34
· Личное сообщение · #6

Было 2 ветки развития стара 5.50.х и 5.0.х. Потом от последней отказались.

Насчет деградации - посмотри бейсик версию начиная с 5.50

По теме - дамп ВМ - единственный вариант.

З.Ы. Все скатилось в оффтоп, пора хоронить очередную тему со старом.



Ранг: 10.9 (новичок), 5thx
Активность: 0.060
Статус: Участник

Создано: 30 октября 2011 19:40 · Поправил: ThugboyZ
· Личное сообщение · #7

Calypso пишет:
у Стара явно деградация идет

3.xx-4.xx до 4.70, используется ring0 поэтому олька его и не берёт, начиная с 4.70 можно смело анпакать в ольке, насчёт того, что 5ый стар чем то хуже 4ого не сказал бы всё просто как раньше, кроме более сильной вм и, иногда, погаженого импорта. Насчёт того что 5ую разобрали, а 3-4 нет это глупо судить учитывая, что rld снимали всё подряд и с 3им старом и с 4-5, а вот твм появились когда уже была 5я версия стара, хотя много взломов и было 3-4 версии. Закейгенили потому как есть ОА, в 3-4 версиях её небыло (до 4.50), ну и плюс там сам алго ключей диска и HWID простецкий был, недавно правда начали эксперементировать с SHA-1, но повторюсь вся мощь стара в его вм.



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

Создано: 30 октября 2011 19:42 · Поправил: Veliant
· Личное сообщение · #8

Погодь хоронить. Пол дня трейса немного дали представление о формате ВМ. Распарсил несколько команд вроде mov, add, sub, cmp, jmp. Вроде и таблицу переходов нашел. Одно плохо - несколько разных опкодов ведут на один обработчик, есть предположение, что эти опкоды будут отличаться от семпла к семплу. Т.е. таблицу адресов VM все равно придется сохранять



Ранг: 10.9 (новичок), 5thx
Активность: 0.060
Статус: Участник

Создано: 30 октября 2011 19:56 · Поправил: ThugboyZ
· Личное сообщение · #9

del



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

Создано: 30 октября 2011 19:57 · Поправил: Calypso
· Личное сообщение · #10

Зачем закрывать,может спецы что подскажут. По Старфорсу и так информации ноль, уже 1000 просмотров темы за пару дней
[Nomad] пишет:
По теме - дамп ВМ - единственный вариант.

Это уже стало ясно 2 страницы назад, у вас есть мануал где написано как это сделать? Нет. Вот и у меня нет
Можно конечно забить на всё и использовать эмуляторы,но если уж поставлена цель вычистить авгиевы конюшни типа protect.dll то надо довести дело до конца



Ранг: 22.5 (новичок), 18thx
Активность: 0.050
Статус: Участник

Создано: 30 октября 2011 20:00 · Поправил: [Nomad]
· Личное сообщение · #11

Ну если проследить тенденцию всех предыдущих тем по стару то приватная инфа все равно не всплывет, максимум советы. Потому топики превращаются в оффтоп.

ThugboyZ пишет:
Закейгенили потому как есть ОА, в 3-4 версиях её небыло (до 4.50)

ОА у стара была всю жизнь. На версии 3.7 уже была точно



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

Создано: 30 октября 2011 20:04 · Поправил: Calypso
· Личное сообщение · #12

[Nomad] пишет:
Ну если проследить тенденцию всех предыдущих тем по стару то приватная инфа все равно не всплывет, максимум советы. Потому топики превращаются в оффтоп.

Потому что каждый раз приходят паникеры в тему и начинают гундеть - мол забей,всё равно не сломаешь, бла бла бла.Всё приватное, секретное и т.д.
Чувак,который делал тутор по распаковке King Bounty обещал сделать статью по разбору виртуальной машины,но потом отказался как раз из-зы того что тупая школота загнобила статейку
Так что предлагаю закончить оффтоп и писать по теме , как сделать дамп виртуальной машины SF 4.70 на примере сабжа



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

Создано: 30 октября 2011 20:15
· Личное сообщение · #13

ThugboyZ пишет:
а вот как бы к sffs подойти мб кто подскажет?

Можно попробовать извращенный метод с перехватом создания файла, а зная имя сффс сам тебе его выдаст.



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

Создано: 30 октября 2011 20:18
· Личное сообщение · #14

ThugboyZ пишет:
к sffs подойти мб кто подскажет?

в релизе STARFORCE.RE.TOOLS.READNFO-RELOADED были какие-то исходники работы с SFFS




Ранг: 283.6 (наставник), 56thx
Активность: 0.130
Статус: Участник
Author of GeTaOEP

Создано: 30 октября 2011 20:39
· Личное сообщение · #15

Calypso пишет:
Ну да я попробовал,находит OEP 4E716E , вроде похоже но 100% нельзя проверить. По ptr адресу все равно прыжка нет,там MOV EAX, бла бла бла

ThugboyZ пишет:
OEP: 000E716E

...вам товарищ в пору матчасть разучивать, а не гнуть тут пальцы, рассказывая про какую-то школоту.

-----
the Power of Reversing team





Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 30 октября 2011 20:40 · Поправил: ARCHANGEL
· Личное сообщение · #16

Товарищи, объясните мне, в чём проблема? Насколько я понимаю, я попытаюсь сейчас изложить ситуацию на языке, для всех понятном, а вы, Calypso, меня поправите, если что не так, ок? Поехали.
1. Есть игра, защищённая старфорсом версии 4.70, есть образ, который при условии, что мы его монтируем в алкоголь, позволяет запустить игру, и она нормально работает.
2. Данная версия старфорса не препятствует его отладке в олли, т.е. мы можем спокойно его запустить в олли при смонтированном в алкоголь образе и играть в игру под отладчиком.
3. Мы знаем ОЕР.
4. Мы можем восстановить таблицу импорта.
5. У нас есть ВМ, мы можем определить все входы в ВМ.
6. Мы знаем, какие модули имеют входы в ВМ (вытекает из утверждения 5).
7. Нам не нужно декомпилить ВМ, мы хотим только лишь получить nocd.

Ну так берём Pe Tools, дампим (все имеющие входы в ВМ - может, их несколько) модули в момент, когда ВМ инициализирована. Дампим непосредственно ВМ. Теперь наша задача - заставить ВМ грузиться по фиксированным адресам. Прекрасно - VirtualAlloc с параметром, указывающим на нужный участок виртуальной памяти, потом RtlMoveMemory (можно любой другой аналог) для перемещения кода ВМ в эту область.

Ясное дело, что дампы модулей нужно будет подкорректировать, т.е. восстановить релоки, если нужно, импорт восстановить и т.д.

-----
Stuck to the plan, always think that we would stand up, never ran.




Ранг: 22.5 (новичок), 18thx
Активность: 0.050
Статус: Участник

Создано: 30 октября 2011 21:06
· Личное сообщение · #17

ARCHANGEL все верно описал. Проблемой на пути к желаемому будут антидампы в ВМ.




Ранг: 241.9 (наставник), 107thx
Активность: 0.140.01
Статус: Участник

Создано: 30 октября 2011 21:08 · Поправил: Nightshade
· Личное сообщение · #18

Проще крутить вм к файлу, а не аллочить вм. Дампиться там все должно прекрасно. Cpuid намного сложнее исправить. Там есть 2 пути - делать эмулятор команды и убивать все проверки крк кода или добавлять код, который будет исправлять закриптованные значения cpuid текущей машины. Ломали игры через оба способа.
Если сильно интересно могу в подпол кинуть статью по дампу вм.




Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 30 октября 2011 21:09
· Личное сообщение · #19

[Nomad]
Можно подробнее - что из себя представляют антидампы старфорса? Желательно с листингами кода дизассемблера.

-----
Stuck to the plan, always think that we would stand up, never ran.




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

Создано: 30 октября 2011 21:15 · Поправил: Calypso
· Личное сообщение · #20

ARCHANGEL
Начиная с пункта 5 нужны дополнительные пояснения на языке понятном дебилам начинающим спецам по Старфорсу
Я пока только прошарил как найти ОЕР,сделать дамп и восстановить импорт. Про ВМ вообще не в курсе
DillerInc
Про ImageBase=400000 я в курсе,не надо придираться к словам. В ImpRec я ввожу E716E
Ещё раз подчеркиваю - нужно сделать рабочий nodvd ,никаких пикодов и виртуальных машин никто разбирать не собирается .



Ранг: 10.9 (новичок), 5thx
Активность: 0.060
Статус: Участник

Создано: 30 октября 2011 21:31
· Личное сообщение · #21

Nightshade пишет:
в подпол

кидай, почитаемс



Ранг: 10.9 (новичок), 5thx
Активность: 0.060
Статус: Участник

Создано: 30 октября 2011 21:33 · Поправил: ThugboyZ
· Личное сообщение · #22

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

Вы меня поражаете. Как можно сделать nodvd не вникнув в вм? Пожалуй можешь взять мой дамп и прикрутить чистый импорт, но он не будет работать ибо вм. Что такое вм? Для тебя это то место, после EP, когда нажмёшь Enter и перейдёшь в PROTECT.DLL с кучей мусора Тебе в принципе никто не говорит что разбирать пикод единственный выход, лучший для тебя - дамп, сейчас мы его и разбираем всем форумом



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

Создано: 30 октября 2011 21:39
· Личное сообщение · #23

Дамп без ВМ может сделать любой,запустив игру,потом ALT+TAB и через плагин OllyDbg .
Если б была Basic версия и демка не была защищена Старфорсом,я бы давно передрал оттуда все функции,прикрутил к дампу и получил рабочий файл. Логично?



Ранг: 10.9 (новичок), 5thx
Активность: 0.060
Статус: Участник

Создано: 30 октября 2011 21:41 · Поправил: ThugboyZ
· Личное сообщение · #24

Calypso
4.7-5.7 стар basic версии по мне анпакается легче, чем upx вручную конечно. Тот же антидебаг в секуроме на порядка 3 выше. Единственное, что ещё более менее трудно это изредка порча импорта и эксепшены.



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

Создано: 30 октября 2011 21:55 · Поправил: Veliant
· Личное сообщение · #25

Итак у нас два лагеря - одни предлагают просто выдрать всю вм, и прикрутить к дампу - способ простой(по сравнению с вторым), и если цель просто поиграть без диска - сойдет
Вторые (я в их числе) предлагают разобрать VM стара и возможно сделать транслятор в нативный x86/x64. На порядок сложней первого способа, но "правильней" с точки зрения распаковки.

Если делаете дампы своих семплов - делайте так же дамп protect.dll в этом процессе и дамп секции с переходниками на API, и указывайте адрес загрузки для оных. Тогда этот дамп можно хоть как-то анализировать, т.к будет представлять полную картину

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

P.S. и хватит мерятся писками по уровню снятия basic версии - он не на много сложней upx

Upd:
Я тут че подумал - VM будет не так и сложно заставить выдавать чистый код - все адреса обработчиков инструкций лежат в одном массиве. Если подменить все адреса, на наши переходники, которые будут дампить чистые инструкции, то стар нам сам все расшифрует, ну или придется в ручную каждую завиртуаленную функцию выполнять

Этот топик поднимает мне настроение
Видать у старфорса такая карма на нашем форуме, что в темах о нем отписываются, как правило, те люди, которые его не снимали, а те кто снимали, если повезет, дают пару полезных советов на 10стр текста ни о чем




Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 30 октября 2011 21:58
· Личное сообщение · #26

Calypso пишет:
Дамп без ВМ может сделать любой,запустив игру,потом ALT+TAB и через плагин OllyDbg

Этот топик поднимает мне настроение )) (с) Pe_Kill

-----
Stuck to the plan, always think that we would stand up, never ran.





Ранг: 241.9 (наставник), 107thx
Активность: 0.140.01
Статус: Участник

Создано: 30 октября 2011 22:17
· Личное сообщение · #27

После восстановления кода из вм ты покручишь ехе без протектора. Какие могут быть заморочки? Иногда требуется ребилд ресурсов и склеика секций. Про вм. Регистры вм 64 битные. Регистров вроде 64.(может 128- давно смотрел код). Плюс вм создает кучу переменных внутри себя. Таблиц примитивов несколько и они разбросаны по вм. Лента пикода ксорится по 4 указателям. 3 обычно указывают на реальный код, а 1 на данные. Это защита кода. Изменим код - изменим ленту. В старых вм антидампа почти нет. В новых есть описание в вики. Еще есть циклы проверки кусков кода. Основаны на сложении байт от смещения определенного размера. Потом сумма проверяется. Не помню как в старых вм, а в новых есть еще переменная для расшифровки пкода. Т е исполнился примитив - изменилась переменная. Не зная кода который выполнялся до этого- не сможем расшифровать дальше. Вм состоит из 2 частей. Одна часть выполняется на пкоде и регистрах вм, вторая просто сильно обфусцированный код. Но этот код может использовать регистры и переменные вм, но не использует ленту пкода. Перед каждым входом в регистровую вм идет установка 4 указателей на пкод.

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

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

Создано: 30 октября 2011 22:29 · Поправил: Veliant
· Личное сообщение · #28

Вот за такое описание человеческое спасибо, хоть половину этого уже сам раскопал)
Формат фрейма регистров я уже более менее понял. И почему 64-битные думаю знаю.
Таблицу примитивов нашел только одну, или они меняются в зависимости от входного параметра. Я пока только зашел в одну эмулируемую функцию и еще не выходил.
Nightshade пишет:
есть еще переменная для расшифровки пкода

Там не совсем для расшифровки. В каждой команде есть 3 или 4 4битных флагов и 1 бит атрибута, от которых зависит как изменится эта переменная, ну и еще немного изменяется сам опкод. Я посчитал что это внутренний регистр флагов VM
Nightshade пишет:
Не зная кода который выполнялся до этого- не сможем расшифровать дальше.

Это собственно не проблема. Если не делать статического анпакера, а девиртуализировать инжектом либы, то исходные данные стар сам нам подготовит.
Upd. Все, понял о чем ты. Да - выборка команды производится не по ее опкоду, а 7-битам из предыдущей. То есть за одинт "такт" VM читает данные от предыдущей команды в которых находится опкод следующей. Но это положение в данных не фиксировано.


Если скажем у 4.50 и 4.70 виртуальные машины разные
Сомневаюсь что они сильно отличаться должны - максимум перестановкой индексов опкодов или порядком бит. Можно сделать изменение по маске. Потрудиться конечно придется, просмотрев формат новых, но база уже будет. Да и у меня нет цели писать статический анпакер

Примерный формат регистров таков:
Code:
  1. +0       dq eip1   \
  2. +8       dq eip2   | Xor от содержимого этих 4 массивов
  3. +10      dq eip3   | дает байт-код
  4. +18      dq eip4   /
  5. +20      2*dq opcode Сюда копируется вся команда после XOR
  6. ...
  7. +38      dd flags  Переменная для расшифровки/либо внутренний регистр флагов
  8. +40      dd flags  Сюда сохраняются флаги после сравнений,сложений,вычитаний при помощи PUSHFD
  9. ... остальные регистры

все регистры адресуются с 0, маска у них 0x1F, т.к. первый десяток занят служебными, то реальное число регистров около 20. Но есть еще команды вида MOV reg, [addr], где адрес 16-битное число, и к нему прибавляется база регистров. Следовательно за 0x1f регистрами общего назначения располагается что-то вроде области данных

Тк делаю анализ команд не по таблице, а по мере их появления на входе VM, распарсил пока следующие команды:
movzx; jmp; mov reg,reg; mov [reg], reg; mov reg, [reg]; add reg, reg; sub reg, reg; xchg reg, reg; tst reg,reg; mov [addr+regbase], reg; mov reg, [addr+regbase]; ror reg, reg; rol reg, reg

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

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

Создано: 30 октября 2011 22:30 · Поправил: Calypso
· Личное сообщение · #29

Veliant пишет:
предлагают разобрать VM стара и возможно сделать транслятор в нативный x86/x64

Эта затея имеет смысл если VM у всех версий общая или хотя бы похожа, т.е. насколько я понимаю можно сделать нечто вроде универсального распаковщика SF. Если скажем у 4.50 и 4.70 виртуальные машины разные,то тогда для каждой игры писать отдельный транслятор чрезвычайно трудоемко имхо
Я предлагаю начать с простого способа,а дальше видно будет



Ранг: 10.9 (новичок), 5thx
Активность: 0.060
Статус: Участник

Создано: 30 октября 2011 22:38 · Поправил: ThugboyZ
· Личное сообщение · #30

думаю в привате есть деобфускатор вм старки




Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 30 октября 2011 22:46
· Личное сообщение · #31

ThugboyZ
Деморфер или декомпилятор? Или оба? Та при чём тут приват, когда интерес всегда был в том, чтоб разработать самостоятельно. Veliant, давай, я верю в тебя.

-----
Stuck to the plan, always think that we would stand up, never ran.



<< . 1 . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 10 . >>
 eXeL@B —› Вопросы новичков —› Распаковка StarForce 4.70 - Пьеса в нескольких действиях
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати