Сейчас на форуме: (+8 невидимых) |
![]() |
eXeL@B —› Протекторы —› SfLetter |
Посл.ответ | Сообщение |
|
Создано: 08 июля 2014 16:36 · Поправил: Nightshade · Личное сообщение · #1 СтарФорс запустили бесплатный сервис электронной почты. Суть в том, что при отправке письма, оно конвертируется в пдф. Пдфка накрывается какой-то дрянью типа SFFS. При получении письма приходит ссыль на просмоторщик. Это FoxitReader накрытый старом. И ссылка на само письмо. Представляет из себя пдф в sffs или чем то подобном. При открытии письмо как-то само активируется. И ты получаешь возможность его просмотреть. Пока сервис в стадии бета теста, можно поглядеть на последний стар и новую файловую систему бесплатно. Все кому интересно могут топать ![]() |
![]() Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг" |
Создано: 08 июля 2014 16:45 · Личное сообщение · #2 не знают уже, где бабла нарубить, сцуки! цитатаосновным отличием сервиса StarForce является ограничение на использование полученного сообщения: защищенное письмо нельзя переслать, сделать Print Screen, ... типа Print Screen старовский драйвер будет контролить?! бле, если оно на экран выводится, то делается это банально с помощью камеры телефона, смысл принтскрин блочить, вот же кретины законченные. ![]() |
|
Создано: 08 июля 2014 18:00 · Личное сообщение · #3 |
![]() Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг" |
Создано: 08 июля 2014 18:33 · Личное сообщение · #4 |
|
Создано: 08 июля 2014 23:00 · Поправил: sivorog · Личное сообщение · #5 |
|
Создано: 09 июля 2014 07:03 · Личное сообщение · #6 |
![]() Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг" |
Создано: 09 июля 2014 11:16 · Личное сообщение · #7 распакованные sfcore.dll и FoxitReader.exe: http://rghost.ru/56799504 (или нормальный там, правда, допилить(в плане инициализации) sfcore.dll требуется, чтобы ексешник штатно запустился (из последнего, как обычно тянутся вызовы в * FoxitReader.exe OEP: 0x004C7F85 Code:
* ребилдер импорта из sfcore.dll(0x0DF2000) и ее лоадлибрару я прилепил на скорую руку сам(через petools долго сидеть, искать и править импорт). косо - криво, но на винд с aslr работать наверно должно ![]() * проверки CRC и процессснабшот в sfcore.dll "пофикшены" ![]() ![]() |
|
Создано: 09 июля 2014 11:36 · Поправил: vden · Личное сообщение · #8 |
|
Создано: 09 июля 2014 12:33 · Поправил: Nightshade · Личное сообщение · #9 |
|
Создано: 09 июля 2014 12:35 · Личное сообщение · #10 |
|
Создано: 09 июля 2014 12:44 · Личное сообщение · #11 |
![]() Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг" |
Создано: 09 июля 2014 13:18 · Поправил: ELF_7719116 · Личное сообщение · #12 Nightshade пишет: Релоков нет да, сори, за релоки забыл. но, с другой стороны, на 2к3 оно меня не сильно колышило, ибо адрес один и тот-же всегда ![]() Nightshade пишет: Длл распаковывается обычным упх. мне впадлу было. ![]() да и ексешник(за длл молчу) по сравнению с секуромом, до точки входа дойти и сдампить - так, нечего делать! уныло и просто. защита в вм, эт да - пойду покопаю. там кстати еще пайп(pipe) создается... Nightshade пишет: 0047DEB0 004BDB40 00893DA6 Тут код под вм. там по-моему дохрена где его. add: а есть готовый просмоторщик(viewer) регистров вм (по типу моего ![]() |
|
Создано: 09 июля 2014 14:08 · Личное сообщение · #13 |
![]() Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг" |
Создано: 09 июля 2014 14:16 · Личное сообщение · #14 |
|
Создано: 09 июля 2014 14:44 · Поправил: Nightshade · Личное сообщение · #15 Esi вроде база вм. Адрес начала секции вм. Используется для прыжков по вм. Типа еsi+смещение. Сделай в окне дампа тип отображения long и перейди на edi и будет красиво. Только вот регистры 64 bit Code:
Так начинается вход в вм [EDI], [EDI+0x8], [EDI+0x10], [EDI+0x18] - это 4 "eip" вм. По этим 4 адресам берутся 4 qworda и ксорятся друг с другом. Так колучается лента байткода для вм. 3 адреса обычно указывают на реальный код и 1 на настоящую ленту. Поскольку при компиляции код им известен они пишут по последнему адресу "правильные" значения для ксора. В результате изменишь код - запорешь ленту вм байткода. Регистр "настоящего" байткода выбирается от балды и может меняться в любой момент между обработчиками вм. Добавлено спустя 34 минуты Начало любого хендлера вм 1)Берем значения по нашим 4 "vmeip" Code:
Ксорим и заносим в [EDI+0x20] Code:
2)Берем значения старшей части qword vmeip Code:
Ксорим и заносим в [EDI+0x24] Code:
2)Увеличиваем vmeip на длину ленты байткода текущей инструкции Code:
3)Раскодированную ленту ксорим с [EDI+0x38] - там лежит служебная переменная для раскодировки байткода. Она меняется при выполнении любого хендлера. Code:
4)Заносим в [EDI+0x38] новую переменную расшифровки байткода Code:
Мусор ![]() Code:
5)Дальше идет разбор ленты на флаги и эмулирование асм кода. Code:
![]() |
|
Создано: 09 июля 2014 15:41 · Личное сообщение · #16 |
|
Создано: 09 июля 2014 15:51 · Поправил: Nightshade · Личное сообщение · #17 Пример разбора Это предыдущая инструкция сохранения переменной расшифровки байткода (для наглядности) 6491F9C4 0947 38 OR DWORD PTR DS:[EDI+0x38],EAX Получаем номер регистра вм Code:
Получаем номер второго регистра вм Code:
Получаем размер опкода(byte, word, dword, qword) Code:
Прыгаем на "нужный размер" Code:
Размер byte Code:
word Code:
dword Code:
qword Code:
Получаем адрес следующей инструкции вм Code:
Это была виртуализованная mov vmreg, vmreg ![]() |
|
Создано: 09 июля 2014 15:56 · Поправил: Veliant · Личное сообщение · #18 Nightshade пишет: mov vmreg, vmreg Айнане. Это MOV R1, [EDI+OFFSET] Code:
для регистров маска 0x1F как у первого Nightshade пишет: edi+offset - еще не известно чем считать. Переменные вм или регистры. Согласен, но все же чистые регистры это R0-R31 которые с оффсетами 0-F8, что выше адресуется оффсетом ![]() |
|
Создано: 09 июля 2014 16:00 · Поправил: Nightshade · Личное сообщение · #19 VeliantМожет это и расписывалось, но пусть будет описание для общего представления о вм. Вон эльфу интересно. Может тоже поковыряет вм. edi+offset - еще неизвестно чем считать. Переменные вм или регистры. Добавлено спустя 13 минут В вм часто встречаются такие куски. Code:
Если считать всё, что больше edi+7f переменными вм. То это код, который выполняется на "переменных" вм без ленты байткода и хендлеров. Я считаю, что это "сильно обфусцированный код", но уже не вм. ![]() |
![]() Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг" |
Создано: 09 июля 2014 16:25 · Поправил: ELF_7719116 · Личное сообщение · #20 Господа, вы еще про одну, немного интересную, вещь забываете: мы выбираем область для хранения регистров(хранилище): Code:
куда складываем по смещению: +0 указатель на новое хранилище, если это заблокированно (имхо: жалкое и костыльное подобие многопоточной вм. видимо, автор самой вм давно свалил из конторы, а дописывал ее к новым версиям защиты какой-то нуб. по факту вм - single thread). результат работы VirtualAlloc внизу. +4 lock dword, аналогично секуромоскому(+0x24) блочим текущее хранилище с регистрами Code:
из последнего можно найти конец работы вм (хотя я предполагаю, это ни для кого не секрет). первое значение, из-за дэбильности построения вм(в сравнии с секуромовской)никакой полезной нагрузки не несет. Code:
а привязка по CPUID есть? ![]() |
|
Создано: 09 июля 2014 20:58 · Поправил: Nightshade · Личное сообщение · #21 Привязка идет по Cpuid, pid, версии винды. (6.1, 6.2 и тд) Pid и версия винды читается из всяких fs:0 GetSystemDirectoryA GetVolumeInformationA VolumeSerial GlobalMemoryStatusEx ProductId из реестра При инициализации вм, эти значения кодируются рандомным алго и полученное значение хранится в секции вм. Потом в некоторых функах оно сравнивается и, если не соответствует, вм идет по неправильной ветке и почти всегда вылетает с ошибкой доступа к памяти. ![]() |
|
Создано: 10 июля 2014 10:12 · Поправил: sivorog · Личное сообщение · #22 Nightshade не совсем по теме, но всё же: где ещё Вы встречали реализацию SFFS без драйверов? т.е., там, если я правильно понял, CreateFileA/W и другие функции заменены на ring-3 переходники если файл есть на диске, то вызывается системная API если нет, то вызывается SF API ...просто я щас ковыряю одну игру под Molebox'ом, начал понимать, как это работает в принципе ![]() З.Ы. Product Guid - это ж вот это? Code:
![]() |
|
Создано: 10 июля 2014 10:38 · Личное сообщение · #23 |
![]() Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг" |
Создано: 17 июля 2014 18:54 · Личное сообщение · #24 Так Nightshade пишет: При открытии письмо как-то само активируется. Типа, как SecuROM PA чтоли - отсылаем реквест код с HWID на сервер, а в ответ ключик, которым расшифровывает смс? И кол-во таких запросов ограничено? И закреплено одной машиной? С другой стороны, чем хуже запхнуть файлы в архив с заранее оговоренным паролем в ~16-20 символов и отправить по почте? выгода очевидна - платить этим козлам ничего не надо(имеется ввиду решения для бизнеса). ![]() |
|
Создано: 01 сентября 2014 05:28 · Поправил: Admintools · Личное сообщение · #25 |
|
Создано: 10 мая 2015 23:23 · Личное сообщение · #26 |
|
Создано: 11 мая 2015 00:24 · Личное сообщение · #27 |
![]() |
eXeL@B —› Протекторы —› SfLetter |