Нашел игры в которых соперники(фото девушек) зашифрованы в файлы *.sgdt частичное описание которого я нашел и даже смог реализавать доставание двух НЕзашифрованых изображений. Возможно ли по двум программам(дампы из Олли, снят протектор "ASPack 2.12 -> Alexey Solodovnikov") найти код отвечающий за дешифрование файла и загрузки картинок в память? Помогите кто может, могу выслать сами игры: запакованные(19 штук) и/или распакованные(2 штуки). Прикрепил сам файл соперника. Вот и частичное описание: Формат SGDT: 4 байта сигнатуры 4 байта - длина маленькой картинки N байт - маленькaя картинка (обычный JPEG) 4 байта - длина первой большой картинки N байт - первая большая картинка (тоже обычный JPEG) далее идёт контрольная сумма (что-то нестандартное, типа суммы по модулю 9) первой половины файла и оставшиеся картинки в ЗАШИФРОВАННОМ виде. Шифрование по таблице длинной 176 байт с участием первой половины файла в качестве ключа (если я правильно понял, так как на асме это всё довольно запутано выглядит), так что без хорошего знания ассемблера там делать нечего. ACDSEE и прочие "хорошие" просмоторщики показывают первую картинку, так как умеют открывать файлы у которых JPEG начинается не с самого начала (они ищут первые FF D8).
и весь этот геммор из за фото девушек? Да вы батенька бооольной... идите на порносает и подрочите уже наконец!
дело не в голом теле, а в возможности создания самому таих соперников))) и просто алгоритм интересен. если уж на то пошло, то получить фото можно и играя.
Для загрузки, наверняка, какая-нибудь стандартная библиотека использована, а JPG-файлы, скорее всего созданы одним и тем же редактором, что должно дать приличный кусок plain text'a. Ключ шифрования, скорее всего, тоже один для всех изображений. И алго шифрования должно быть либо простым, либо стандартным, ибо явно не приоритетная для автора задача. Ну, и линк на закачку помог бы нетелепатам заценить ваши файлы. А вообще, такого хлама в сети немеряно и если вы каждый будете дешифровывать, то поиграть вам уже не придется
прикрепил пример файла. из даного в первом посте описании видно что вторая часть(после первых двух картинок) неплохо так зашифрована.
Угу. Так я и думал. Возьмите еще девочек: http://www.multiupload.com/3GWO7O6K67 ASPack, Borland C++ Builder, никакого стандартного крипто на беглый взгляд не просматривается. DeDe в помощь. Там есть парочка классов для работы с JPEG: TJPEGData (004834AC, 0048348C, 0048349C, 004834C4) и TJPEGImage (00483660 итд - offsets даны для рапакованного файла по ссылке). Я бы начал с них. Учтите, что JPEG - это потоковый формат, файлы, наверняка, читаются через TFileStream (или его наследников) и либо там переопределен метод, осуществляюший дешифровку, либо он вставлен между ним и методом обработки изображений. Программа, к слову, выглядит немыслимым убожеством - и по замыслу, и по исполнению. И да, самое важное: свои изображения там можно загружать совершенно легально, через меню, без всякой криптографии Upd1: Картинки, таки разнятся по заголовкам, поди из разных мест воровали. Upd2: Заглянул в ресурсы - там хранятся маски, накладываемые на изображение. Совершенно не знаком с Delphi, но уверен, что их можно либо сделать прозрачными, либо пропатчить так, чтобы не накладывались Кстати, при клике по иконке (100*100, первый файл в SGDT), приходим сюда: 00406C40 / procedure TMainForm.IntroClick() Начальное чтение SGDT-файлов идет здесь (00404098 LoadIcons(), длинная процедура, грузит в цикле все файлы из директории fsg_), как и ожидалось, через TFileStream (0040457C). Думаю, стоит вдумчиво пройти в отладчике всю эту процедуру 00406C40 TMainForm.IntroClick(), похоже, что разбор идет там. Кстати, попалось одно странное место (проверка каких-то сигнатур) - 00403FD4. Здесь, на всякий случай, map file от IDA: http://www.multiupload.com/OVDAXMGGKI
Наверняка, пара констант поменялась. Уверен, что основное ядро осталось тем же. Да и, собственно, цена вопроса - добросовестно пройти в отладчике 2 функции - начальной загрузки (там где создается TFileStream) и отработку клика по иконке. В одной из них спрятана дешифровка, дальше уже работает компонент TJPEGImage. В карте памяти куча "говорящих" имен функций. Расставьте брэйки, будет понятен ход выполнения. Судя по крайне примитивному формату файла, шифрование там тоже должно быть "на уровне" TIP: я посмотрел на оф.сайте - там куча этих игр и картинок, начинка у всех должна быть одинакова. Возьмите самую маленькую по размеру игру - будет и быстрее, и проще. + Поиграйтесь в старом редакторе с заменой _одной_ картинки (третьей, четвертой ...) будет понятно, как строится заголовок, вряд ли он сильно поменялся. Попортьте _одну_ картинку - без изменения размера - станет яснее, где там (раньше была) контрольная сумма (если вообще есть - не верьте чужим описаниям, верьте своим глазам). Кроме того, на какой-нибудь помойке может заваляться и старая версия одной из игр, для которой сгодится старый конструктор - посмотрите, для начала, по этому же линку. Если найдете - будет полный учебный комплект. Потренируетесь, займетесь новой версией Upd: вот здесь сборник (почти) всех старых версий, в том числе и под этот конструктор: http://www.swdeluxe.narod.ru/games/erotic/sga/pagesga.htm
Судя по отсутствию новых картинок, с отладчиком у TS еще хуже, чем с девушками :-( Выдалось время, погонял в отладчике. Смотрел и плакал... Если Delphi - это диагноз, то BCPPB - видимо, диагноз в квадрате. Какое-то бессмысленное ерзанье по файлу, десятки раз выполняются одни и те же (ненужные) действия, на всем печать быдлокодерства... Только один пример - дешифровка. Два вложенных цикла. Во внутреннем вызывается API получения размера файла - который НИ РАЗУ не меняется. Для среднего размера файла, внутренний цикл выполняется, примерно, ~1,000 раз. Во внешнем цикле тоже есть бессмысленные вызовы, но это уже не имеет значения. Формат примитивен до ужаса, внутри файлов куча какого-то мусора (обфускация такая?), первые две картинки лежат открыто, остальные зашифрованы (вместе с мусором) "одним куском" примитивным самодельным криптором (гамма выбирается по некоторому смещению из ~2K блока мусорных данных, какие-то перестановки байт, даже вникать не стал... хлам. Программа работает _только_ с новым форматом и _только_ на дешифровку: http://www.multiupload.com/EBVAIAGBXO Для интересующихся, псевдокод дешифратора (HR 1.1) Код (Text): int __cdecl Decryptor_401BE0(BYTE *pSrc, BYTE *pDst) { DWORD dwSize; // eax@1 int v3; // ST00_4@1 int v4; // eax@1 BYTE *iBufPos; // ecx@2 BYTE *pData; // ebx@2 int iPos; // edi@2 int iIdx; // esi@2 int dwDstSize; // eax@2 WORD wTemp; // ST12_2@3 signed int dwDstSize2; // ST00_4@3 signed int iVar1; // eax@3 int iReminder; // eax@3 BYTE iVar2; // ST11_1@3 BYTE *v15; // ebx@8 int v16; // esi@8 int v17; // eax@8 int v18; // ecx@8 signed int iCnt; // [sp+10h] [bp-8h]@1 BYTE *pTempArr; // [sp+14h] [bp-4h]@1 dwSize = TStream_GetSize(pDst); pTempArr = (BYTE *)operator new__(dwSize); TStream_SetPosition(pDst, 0, v3); v4 = TStream_GetSize(pDst); // TMemoryStream@SetSize_4538F0 (*(void (__fastcall **)(BYTE *, BYTE *, int))(*(_DWORD *)pDst + 4))(pDst, pTempArr, v4); iCnt = 0; do { iPos = TStream_GetSize(pDst) - 1; dwDstSize = TStream_GetSize(pDst); iBufPos = (BYTE *)176; iIdx = (dwDstSize - 1) % 176 - 1; pData = &pTempArr[iPos - 1]; while ( iPos > 0 && pSrc ) { LOBYTE(wTemp) = pSrc[iIdx]; HIBYTE(wTemp) = *pData; dwDstSize2 = TStream_GetSize(pDst); iVar1 = iPos-- + wTemp; iReminder = iVar1 % dwDstSize2; iVar2 = pData[1]; pData[1] = pTempArr[iReminder]; iBufPos = pTempArr; pTempArr[iReminder] = iVar2; LOBYTE(iBufPos) = pSrc[iIdx--]; (pData--)[1] -= (unsigned __int8)iBufPos; if ( iIdx < 0 ) iIdx = 175; } ++iCnt; } while ( iCnt < 5 ); TStream_SetPosition(pDst, 0, iBufPos); v17 = TStream_GetSize(pDst); // TMemoryStream@SetCapacity_456DA4 (*(void (__fastcall **)(BYTE *, BYTE *, int))(*(_DWORD *)pDst + 8))(pDst, pTempArr, v17); TStream_SetPosition(pDst, 0, v18); v16 = 0; v15 = pTempArr; while ( v16 < TStream_GetSize(pDst) ) { *v15 = 0; ++v16; ++v15; } return _close((int)pTempArr); }
Кому лень искать дешифраторы и всякую фигню, вот готовые файлы изображений соперников http://depositfiles.com/files/r0ltt07x2
А есть у кого-нибудь как пример любой файл с фото , который качают из "https://freesweetgames.ru/shop.php" ?