Добро пожаловать, гость ( Вход | Регистрация )
Дата поста: | В теме: | За сообщение: | Спасибо сказали: | ||
---|---|---|---|---|---|
Mar 23 2011, 10:59 | PowerSlave / Exhumed [.PCS] | Первые 4 байта - размер "набора" картинок, (в некотовых файлах встречается более одного набора, но у тебя обрабатывается только первый), потом по 4 байта на размер картинки (ширина*высоту), ширину, высоту, потом сами данные, 4 байта перед палитрой (!!!) - похоже всегда 0x00000001 и потом палитра. Сразу после первого набора (по смещению, прочитанному в первых 4-х байтах +4) может идти второй набор - снова размер набора, и т.д. В пределах одного набора у всех картинок, похоже, одинаковый размер. После графических данных, похоже, идёт один (или несколько) звуков. Для звука заголовок, похоже, такой: 4 байта - размер данных, частота, битность, 4 байта 0xFFFFFFFF. Вообще раз в одном файле и графические данные и звуки, то это походит на анимацию. |
-=CHE@TER=-, | ||
Mar 14 2011, 16:28 | Сжатие LZX / LZSS | по идее в этом блоке CODE While l > 0 Do Begin buff[p] := buff[o]; p:=p + 1; loop[lidx] := buff[o]; lidx:=(lidx + 1) And $fff; o := ((o + 1) And $fff); l:=l - 1; End; вместо buff[o] надо брать байт loop[o] (в обоих местах) CODE While l > 0 Do Begin buff[p] := loop[o]; p:=p + 1; loop[lidx] := loop[o]; lidx:=(lidx + 1) And $fff; o := (o + 1) And $fff; l:=l - 1; End; по идее так дожно быть. для того этот второй буфер и нужен был, потому что смещение 'o' отсчитывается от его начала, а данные в буфере "плавают" - lidx (указатель на байт в который мы сейчас запишем новые распакованные данные) циклически увеличивается. ![]() |
-=CHE@TER=-, Siberian GRemlin, | ||
Mar 13 2011, 22:45 | Сжатие LZX / LZSS | QUOTE(-=CHE@TER=- @ Mar 12 2011, 15:47) [snapback]3075[/snapback] Всё ещё нужна помощь. если я верно понял асм листинг, то там во входном сегменте данных первые 4096 байт выделяются под временный буфер ("окно" в твоей терминологии), потом 4 байта - размер распакованных данных, потом идут запакованные данные. так вот в этот временный буфер заносятся данные по мере распаковки, и как только размер распакованных данных превышает размер буфера (4096 б) - он начинает затираться с начала. иными словами там хранятся последние 4096 распакованных байта. а смещение считается всегда относительно начала буфера. попробуй реализовать через второй буфер (один выходной и один временный), вместо высчитывания смещения в выходном буфере будешь брать данные из временного по прочитанному в word'е смещению. имхо так проще для понимания. |
-=CHE@TER=-, Siberian GRemlin, | ||
Jan 27 2011, 02:15 | InstallShield CAB View | QUOTE(-=CHE@TER=- @ Jan 27 2011, 01:43) [snapback]3063[/snapback] Кстати, вопрос: FileName.ext XOR 0xECCA79F8 FileName.ext же может быть сколь угодно длинным - как его на DWORD-то XOR'ить?.. Что-то я не понял этот момент совсем. Немного некорректно выразился, там не 0xECCA79F8 а массив байт 0xEC, 0xCA, 0x79, 0xF8. Длина имени любая, 5-ый символ в строке xor'ится опять первым байтом массива, 6-й - вторым, и т.д. Если вставить байтики из "Set MEMORY_FILE2 binary "\x55\x89\xE5\x8B\x75\x08..." в ольку, то можно получить примерно следующее: [codebox]CPU Disasm Address Hex dump Command Comments 00401000 /. 55 PUSH EBP 00401001 |. 89E5 MOV EBP,ESP 00401003 |. 8B75 08 MOV ESI,DWORD PTR SS:[EBP+8] 00401006 |. 8B7D 10 MOV EDI,DWORD PTR SS:[EBP+10] 00401009 |. 8B4D 14 MOV ECX,DWORD PTR SS:[EBP+14] 0040100C |. C1E9 02 SHR ECX,2 0040100F |> 36:81348F ECCA79F8 /XOR DWORD PTR SS:[ECX*4+EDI],F879CAEC 00401017 |. 85C9 |TEST ECX,ECX 00401019 |. 74 03 |JE SHORT 0040101E 0040101B |. 49 |DEC ECX 0040101C |.^ EB F1 \JMP SHORT 0040100F 0040101E |> 31D2 XOR EDX,EDX 00401020 |. 31DB XOR EBX,EBX 00401022 |> 8A0431 /MOV AL,BYTE PTR DS:[ESI+ECX] 00401025 |. C0C0 04 |ROL AL,4 00401028 |. 32043A |XOR AL,BYTE PTR DS:[EDI+EDX] 0040102B |. 42 |INC EDX 0040102C |. 3B55 14 |CMP EDX,DWORD PTR SS:[EBP+14] 0040102F |. 75 02 |JNE SHORT 00401033 00401031 |. 31D2 |XOR EDX,EDX 00401033 |> 43 |INC EBX 00401034 |. 3B5D 18 |CMP EBX,DWORD PTR SS:[EBP+18] 00401037 |. 75 04 |JNE SHORT 0040103D 00401039 |. 31DB |XOR EBX,EBX 0040103B |. 31D2 |XOR EDX,EDX 0040103D |> 880431 |MOV BYTE PTR DS:[ESI+ECX],AL 00401040 |. 41 |INC ECX 00401041 |. 3B4D 0C |CMP ECX,DWORD PTR SS:[EBP+0C] 00401044 |.^ 75 DC \JNE SHORT 00401022 00401046 |. 5D POP EBP 00401047 \. C3 RETN [/codebox] Нормального исходника нет, так как писал и сразу отлаживал непосредственно в ольке. ![]() |
-=CHE@TER=-, | ||
Jan 26 2011, 12:17 | InstallShield CAB View | Итак, возвращаясь к теме распаковки InstallShield'а с заголовком, а то моё "чуть позже" и так затянулось... ![]() Давным-давно были версии IS, в которых файлы в оверлее лежали в открытом виде. Потом разработчики сделали шифрование каждого файла в псевдоархиве. Потом они сделали шифрование не целиком всего файла, а блоками по 1024 байта, видимо, чтоб не грузить файл в память целиком. И последнее нововведение - файлы теперь ещё и сжаты перед шифрованием (zlib). Скрипт поддерживает все (вроде) данные типы. Однако, когда я реализовал расшифровку средствами самого BMS, то работало оно жутко медленно - у меня скорость была порядка 1 Мб в секунду, и ждать, например, по полторы-две минуты на расшифровке 100 мегабайтного файла быстро надоело. Поэтому, почитав в очередной раз справку по QuickBMS, я решил переписать функцию расшифровки на асме и вызывать её из скрипта. Быстрее стало в буквальном смысле на порядок, тот же файл распаковался примерно за 10 сек. Собственно рабочая версия скрипта: [codebox]IDString "InstallShield\x00" #Get ASZ ASize Set MEMORY_FILE2 binary "\x55\x89\xE5\x8B\x75\x08\x8B\x7D\x10\x8B\x4D\x14\xC1\xE9\x02\x36\x81\x34\x8F\xEC\xCA\x79\xF8\x85\xC9\x74\x03\x49\xEB\xF1\x31\xD2\x31\xDB\x8A\x04\x31\xC0\xC0\x04\x32\x04\x3A\x42\x3B\x55\x14\x75\x02\x31\xD2\x43\x3B\x5D\x18\x75\x04\x31\xDB\x31\xD2\x88\x04\x31\x41\x3B\x4D\x0C\x75\xDC\x5D\xC3" Get FILES Long GoTo 0x1C 0 SEEK_CUR For i = 0 < FILES GetDString NAME 0x100 Get DUMMY Long Get TYPE Long Get DUMMY Long Get SIZE Long Get DUMMY Long Get DUMMY Long Get COMPRESSED Long GetDString DUMMY2 0x1C SavePos OFFSET If TYPE == 0 Log NAME OFFSET SIZE ElseIf TYPE == 2 Set CHUNKSZ Short 0 CallFunction DecryptFile ElseIf TYPE == 6 Set CHUNKSZ Short 1024 CallFunction DecryptFile Else Print "Unsupported type (%TYPE%) of file %NAME%" EndIf Math OFFSET += SIZE GoTo OFFSET Next i StartFunction DecryptFile Set KEY NAME StrLen KEYSZ NAME Log MEMORY_FILE OFFSET SIZE ################################################################### # IShield.DeCrypt (&Buffer, BufferSize, &Key, KeySize, ChunkSize) # ################################################################### CallDll MEMORY_FILE2 0 cdecl "" MEMORY_FILE SIZE &KEY KEYSZ CHUNKSZ If COMPRESSED == 0 Log NAME 0 SIZE MEMORY_FILE Else ComType zlib CLog NAME 0 SIZE 0x10000000 MEMORY_FILE EndIf EndFunction[/codebox] При расшифровке QuickBMS спросит можно ли вызвать функцию из MEMORY_FILE2 - нужно ему разрешить ![]() Ну и тестовая версия с расшифровкой на самом BMS: [codebox]IDString "InstallShield\x00" #Get ASZ ASize Get FILES Long GoTo 0x1C 0 SEEK_CUR For i = 0 < FILES GetDString NAME 0x100 Get DUMMY Long Get TYPE Long Get DUMMY Long Get SIZE Long Get DUMMY Long Get DUMMY Long Get COMPRESSED Long GetDString DUMMY2 0x1C SavePos OFFSET If TYPE == 0 Log NAME OFFSET SIZE ElseIf TYPE == 2 Set CHUNKSZ Short 0 CallFunction DecryptFile ElseIf TYPE == 6 Set CHUNKSZ Short 1024 CallFunction DecryptFile Else Print "Unsupported type (%TYPE%) of file %NAME%" EndIf Math OFFSET += SIZE GoTo OFFSET Next i StartFunction DecryptFile Set KEY1 NAME Set KEY2 Binary \xEC\xCA\x79\xF8 StrLen KEYSZ NAME Set CO 0 # CHUNK_OFFSET Set KO 0 # KEY_OFFSET String KEY1 ^ KEY2 # Print "New KEY1 is %KEY1%" Log MEMORY_FILE OFFSET SIZE For j = 0 < SIZE GetVarChr TMP1 MEMORY_FILE j # Decrypt stage 1 # Set TMP2 Byte TMP1 Math TMP1 r 4 Math TMP2 l 4 Math TMP1 | TMP2 # Decrypt stage 2 # GetVarChr TMP2 KEY1 KO Math TMP1 ^ TMP2 Math KO += 1 If KO == KEYSZ Math KO = 0 EndIf Math CO += 1 If CO == CHUNKSZ Math CO = 0 Math KO = 0 EndIf PutVarChr MEMORY_FILE j TMP1 Next j If COMPRESSED == 0 Log NAME 0 SIZE MEMORY_FILE Else ComType zlib CLog NAME 0 SIZE 0x10000000 MEMORY_FILE EndIf EndFunction[/codebox] Повторюсь, эта версия довольно медленная и никак не сообщает работает она или же висит. Я пробовал добавить вывод некоего "прогресс-бара", но тогда скрипт работает ещё медленнее. ![]() PS: И сам алгоритм шифрования: DecodedData = ByteSwap(EncodedData) XOR (FileName.ext XOR 0xECCA79F8). ByteSwap - обмен местами младших и старших 4 бит в байте, как в 3Дмарках. FileName.ext - имя сохраняемого файла, используется как ключ, поэтому регистр важен. В EncodedData либо весь файл сразу, либо блоками по 1024 байта - в зависимости от версии IS. |
-=CHE@TER=-, | ||
Dec 14 2010, 21:07 | .DDS DirectX 10 | BC4U открываются, а DX10 - нет. Поиски продолжаются. Попробую ещё утилитки для разработчиков от зелёного производителя видеокарт. Добавлено: И они оказались бесполезны. |
-=CHE@TER=-, | ||
Dec 14 2010, 16:41 | InstallShield CAB View | Мда, странно, тоже проверил на XP SP3 - падает. Проверил версии библиотек - у меня на компе версия mfc90u.dll 9.00.30729.4974, самое свежее что смог найти на сайте microsoft - 9.00.30729.4148 - Microsoft Visual C++ 2008 Service Pack 1 Redistributable Package ATL Security Update Но даже с ней на XP падает. Откуда у меня взялась версия 9.00.30729.4974 - хз. Файлы находятся не в windows\system32\ a в windows\winsxs\..., взял оттуда эту новую версию, положил в папку с IsCabView. Не помогло - программа грузит ту что установлена в системе в winsxs. ![]() Запустил под олькой, падает на адресе 78A608EB, из-за того что EAX=0. CODE CPU Disasm Address Hex dump Command Comments 78A608E4 |. 53 PUSH EBX ; /lParam 78A608E5 |. 57 PUSH EDI ; |wParam 78A608E6 |. 68 66040000 PUSH 466 ; |Msg = WM_USER+102. 78A608EB |. FF70 20 PUSH DWORD PTR DS:[EAX+20] ; |hWnd 78A608EE |. FF15 601A9E78 CALL DWORD PTR DS:[<&USER32.SendMessageW>] ; \USER32.SendMessageW Отправил в стек 0, пропустил эту инструкцию, и программа продолжила работать и распаковала выбранный файл. Найти бы способ заставить IsCabView грузить dll, лежащую рядом с ней - можно было б подсунуть ей пропатченную версию, а то патчить системную в winsxs как-то не хочется. ![]() |
-=CHE@TER=-, | ||
Dec 13 2010, 23:59 | InstallShield CAB View | QUOTE Для работы IsCabView.exe нужно что-то ещё? Та нет вроде. Только что распаковал у себя оба dat файла. Учитывая что она написана на С, то могут понадобиться только библиотеки из vc_redist, скорее всего 2008 версии. (в импорте присутствуют mfc90u.dll, msvcr90.dll, но если бы у тебя их не было, она бы не загрузилась ![]() Обнови, может поможет. http://www.microsoft.com/downloads/en/deta...&displaylang=en |
-=CHE@TER=-, | ||
Dec 13 2010, 21:08 | InstallShield CAB View | Оооо... Версий инсталлшилда великое множество, но глобально их можно поделить на 2 типа. Но раз уж затронули эту тему, то обо всём по порядку: Во-первых как получить сам оверлей для ковыряния оного? Программ довольно много, но наиболее правильно это делает ВНЕЗАПНО 7zip (у меня версия 9.20, за более ранние не ручаюсь, но вроде он давно уже умеет разбирать exe на секции). Правда, он привередлив и распаковывает далеко не все exe, а по-моему только те у которых есть цифровая подпись. Но учитывая что IS платный и пользуются им только крупные разработчики и издатели, то подпись есть на большинстве инсталляторов. Итак, среди распакованных файлов находим файл с загадочным именем "[0]" - это и есть оверлей, он то нам и нужен. Плюс 7zip'а в том, что он, в отличие от других подобных прог, извлекает только то что нам нужно - без отладочной информации, которая в новых инсталляторах идёт после последней секции файла и перед оверлеем, и без самой цифровой подписи, которая идёт после оверлея. (Точнее, всё это сохраняется в отдельных файлах). Оверлеи, как я уже писал, бывают двух типов - с заголовком "InstallShield" и без заголовка вообще. Файлы с заголовком опишу чуть позже, там тоже несколько разновидностей, шифрование, сжатие и т.д и т.п. В 3DMark'ах (не только в 11, но и в предыдущих) используется второй тип - раньше его брала IsXunpack.exe, но теперь имена файлов и здесь в юникоде, так что облом. Я эти файлы распаковываю с помощью скриптов для QuickBMS. Для новой версии понадобилась лишь лёгкая модификация скрипта ![]() Для старых версий (без юникода; действие аналогично IsXunpack): CODE # is_type2.bms get END ASIZE math END -= 8 do get NAME string get FULLNAME string get VERSION string get SIZE string savepos OFFSET log FULLNAME OFFSET SIZE math OFFSET += SIZE goto OFFSET while OFFSET < END Для новых версий (с именами в юникоде): CODE # is_type2u.bms get FILES long # Догадались добавить количество файлов... for I = 0 < FILES get NAME unicode get FULLNAME unicode get VERSION unicode get SIZE unicode savepos OFFSET log FULLNAME OFFSET SIZE math OFFSET += SIZE goto OFFSET next I В принципе ничего сложного, файлы с заголовком опишу чуть позже, там всё несколько хитрее. Но и для них тоже есть скрипт ![]() А то тягать инсталляторы из темпа как-то не по-нашенски ![]() [offtopic] Скорее всего, не переименовались, а продались ![]() Подозреваю, что "All rights raped." - результат деятельности некоего прыщавого юноши в каком-нибудь рестораторе ![]() Тот ISCabView, что я выложил, выдернут из InstallShield'а лично мной, так что тут 100% оригинальные файлы. Если интересует сам IS: http://saturn.installshield.com/product/is...2011premier.exe [/offtopic] |
-=CHE@TER=-, | ||
Dec 13 2010, 00:58 | InstallShield CAB View | В InstallShield'е 2011 изменили формат cab/hdr файлов (навскидку увидел что имена файлов теперь хранятся в unicode, возможно есть и другие изменения), соответственно старые распаковщики не у дел. Слил с оффсайта триал самого InstallShield'а 2011 и достал оттуда ISCabView последней версии, который с новыми файлами умеет работать. Штука весьма неудобная, но до обновления неофициальных утилит думаю может пригодиться: http://ifolder.ru/20772418 PS: да, он распаковывает новый 3DMark11 ![]() |
-=CHE@TER=-, | ||
Aug 22 2010, 22:25 | Кто чего слушает? | Сегодня увидел тизер и трейлеры Deus Ex 3 - очень качественно сделано, а главное - там просто потрясающая музыка. После непродолжительных поисков по инету, оказалось что музыку к игре пишет Майкл МакКанн - композитор Splinter Cell: Double Agent (в которого я так и не играл, но саундтрек мне очень по душе). В трейлере тоже звучит его композиция. Студию-разработчика завалили письмами с вопросами что это за трек и они выложили его для свободного скачивания! Честь и хвала им за это. ![]() Итак, трейлеры и трек, звучащий в них, на официальном сайте игры. Лично мне больше понравился тот что длится 3:18 ![]() |
-=CHE@TER=-, | ||
Aug 12 2010, 09:40 | Aurora Watching: Gorky Zero [.ZAP] | Ох, давно это было, почти 5 лет прошло... Я уже и не помню что видел эту игру. Игра, как я понимаю, в качестве ресурсов поддерживает и zip, правильно? Тогда, возможно, пираты после "локализации" не заморачивались с родным форматом и запихали всё в zip. И ко мне в тот раз попала такая вот пиратка. Это так, лишь предположения... Как бы там ни было в прошлый раз, сейчас глянул демку с ag.ru Трудно искать чёрную кошку в тёмной комнате, особенно, если её там нет... ![]() Это я про шифрование. Его там нет. Обычный deflate, просто без 2-х байт заголовка, STUNS справляется на ура. ДОБАВЛЕНО: Таблица файлов довольно мудрёная, но структуру уже почти полностью разобрал. Если кто-то соберётся писать распаковщик могу подсказать по формату. ДОБАВЛЕНО2: Гугл по запросу "zap unpacker" выдаёт гору ссылок на распаковщик для Infernal, в котором, как оказалось, тот же самый zap. (по крайней мере из демки Aurora Watching всё распаковал). Вроде как страничка автора, ложка дёгтя - он требует горячо любимый .net framework ![]() |
-=CHE@TER=-, | ||
Apr 7 2010, 20:02 | !Вирусы! | ну даже не знаю, попробуй 4-ю версию поставить, для неё базы тоже ещё обновляются, и она не такая прожорливая до ресурсов. с флэшгетом ситуация скорее всего следующая: он качает в файл с временным расширением, а потом переименовывает например в *.exe, вот тут то дрвеб новый файлик и проверяет, а программу, совершившую переименование, на время проверки блокирует. такое поведение антивируса вполне логично - на то он и антивирус ![]() ![]() насколько я помню, download master нормально такие задержки переваривал и продолжал качать другие закачки без разрывов. |
-=CHE@TER=-, | ||
Feb 15 2010, 16:50 | QuickBMS | Уже не в первый раз столкнулся с BMS скриптом для распаковки игровых ресурсов, решил почитать про утилитку, которая эти скрипты выполняет - QuickBMS Оказалось, что это весьма удобный инструмент, с помощью которого можно распаковать как простейшие псевдоархивы, так и довольно хитрые со сжатием и шифрованием. В архиве с программой есть readme с довольно подробным описанием всех скриптовых команд, плюс на сайте автора пачка скриптов-примеров. Я уже набросал для тренировки пару скриптов для простейших псевдоархивов. Как появится что-то стоящее - буду выкладывать ![]() Из особенно понравившихся фишек надо отметить большой список поддерживаемых алгоритмов сжатия/шифрования, а также возможность вызывать в скрипте функции из внешних DLL. ![]() Советую ознакомиться ![]() |
-=CHE@TER=-, | ||
Feb 15 2010, 16:10 | Delphi, Asm, C, WinAPI, PHP, ... | пара ссылок с первой страницы гугла: http://www.delphi.int.ru/articles/43/ http://sqlitebrowser.sourceforge.net/ http://sqlite4delphi.sourceforge.net/ |
-=CHE@TER=-, Siberian GRemlin, | ||
Nov 23 2009, 23:53 | !Вирусы! | Dr.WEB практически не трогает кейгены и 64к интро, хотя бывают и у него ложные срабатывания. я в связи с переходом на Win7 x64 был вынужден дома перейти на ESET Smart Security (ESET AntiVirus + firewall), так как поддержка x64 в drweb'е только начала проходить бета тестирование, а ставить себе "сырой" антивирь как-то не хочется - это всё-таки не муз. проигрыватель, садится в систему глубоко, и его баги могут выливаться в BSOD'ы. так вот ESS (а следовательно и EAV) довольно часто реагирует на пакеры, которыми накрывают кейгены/демки. на распакованные версии молчит как партизан. |
-=CHE@TER=-, | ||
Sep 17 2009, 21:19 | Dreamcast Half-Life [.WAV] | у меня как раз ffdshow отдельно, никакие паки не ставлю по религиозным соображениям (там много ненужных мне вещей) ![]() версия ffd от 26.06.2009, rev3020. QUOTE Плюс можно просто поискать декодеровщик yamaha_adpcm отдельно. там используется декодер из libavcodec, отдельный может и не существовать вовсе |
-=CHE@TER=-, | ||
Sep 14 2009, 12:30 | Dreamcast Half-Life [.WAV] | при установленном ffdshow файлы проигрываются любым проигрывателем с поддержкой DirectShow (WMP, MPC и т.д.) правда мне показалось что они как-то очень быстро проигрываются, хотя тембр голоса вроде нормальный (если бы они проигрывались ускоренно из-за неверно прописанной частоты дискретизации, то и тембр был бы неестественно высокий/низкий). ffdshow показал в информации о файле что кодек там yamaha_adpcm: ![]() |
-=CHE@TER=-, Siberian GRemlin, | ||
Aug 25 2009, 15:02 | MicroOLAP TCPDUMP for Windows | драйвера удаляются из диспетчера устройств диспетчер устройств - вид - показать скрытые устройства затем в списке "драйвера не plug and play" (точное название не помню, у меня в английской винде "non-plug and play drivers") ищешь те самые 2 драйвера. удаляешь, перезагружаешься, удаляешь файлы. |
-=CHE@TER=-, | ||
Aug 24 2009, 19:29 | MicroOLAP TCPDUMP for Windows | QUOTE - не требует установки PCap-драйверов в систему или какого-нибудь похожего шлака Ещё как требует! Загляни в system32\drivers\ после первого запуска. Файлы pssdk42.sys и pssdklbf.sys от неё. Оба. Просто поставила она их сама, без твоего спроса и ведома (меня outpost предупредил хоть, что требуется установка "network-enabled" драйвера). Вообще же после запуска без параметров (для просмотра справки по ключам) мало того что нагадила в систему двумя(!) своими драйверами, так ещё и "сломала мне интернет" - существующие tcp соединения остались (закачки не прервались), но вот новые уже не открывались ни в одной программе. Поэтому я поспешил удалить её драйвера и перезагрузиться. Проверять её работоспособность после перезагрузки уже как-то не хотелось ![]() |
-=CHE@TER=-, | ||
Aug 17 2009, 17:26 | !Вирусы! | чтоб не создавать новую тему напишу сюда QUOTE В интернете появился специфичный для Delphi вирус. Суть его в том, что заражённая программа ищет на диске установленные версии Delphi и, если находит, изменяет файл SysConst.dcu (старая версия сохраняется под именем SysConst.bak), и после этого все программы на Delphi, скомпилированные на этом компьютере, начинают точно так же заражать Delphi на тех компьютерах, где они запускаются. Распространению вируса способствовало то, что некоторые версии популярного мессенджера QIP оказались заражены им (команда разработчиков QIP приносит за это свои извинения). Пока единственный обнаруженный вредный эффект от вируса — это то, что из-за ошибки в его коде при запуске заражённой программы возникает Runtime error 3, если ключ реестра HKEY_LOCAL_MACHINE\SOFTWARE\Borland\Delphi\x.0 (x — от 4 до 7) содержит неправильное значение параметра RootDir (для правильного значения ошибки не происходит). Видимо, просто обкатывалась технология распространения вируса. Проверьте свои версии Delphi и, если найдёте у себя SysConst.bak, выполните следующие действия: 1. Удалите SysConst.dcu 2. Скопируйте SysConst.bak в SysConst.dcu. Важно именно скопировать, а не переименовать, чтобы SysConst.bak тоже остался на диске — это убережёт систему от повторного заражения. спёрто отсюда: http://habrahabr.ru/blogs/virus/66937/ |
-=CHE@TER=-, Siberian GRemlin, | ||
Apr 28 2009, 19:36 | Runaway 2: The Dream of the Turtle | QUOTE(Siberian GRemlin @ Jan 20 2007, 10:44) [snapback]439[/snapback] Может у кого-то есть время и желаение поковырять формат архивов от новой игры Runaway 2... я посмотрел ради интереса - похоже всё пожато, а в начале идёт таблица как я понял смещений и всё. Вот пример (4Мб) Добавлено: Вот распаковщик для первой части, сам пока ещё не смотрел. Возможно пригодится. Попала ко мне в руки эта игрушка, решил глянуть ресурсы. Знаю, теме уже 2 года... ![]() В общем нарыл там 3 типа ресурсов. 1) Видео (предположительно) Файлы в папке DATAV, похоже что это BIK'и с зашифрованным заголовком - первые 0x400h байт зашифрованы, а потом "продолжается" какая-то таблица смещений, похожую структуру можно найти в любом BIK файле, только вот как именно шифруется заголовок пока не понятно. На то что там именно BIK косвенно указывают binkw32.dll и строка "uses RAD video" в титрах игры ![]() 2) Аудио Файл в папке DATAA и некоторые из папки RESOURCE. Структура довольно простая - первые 4 байта количество файлов в архиве, потом идут 9-тибайтовые записи в количестве, равном количеству файлов. Каждая запись - 4 байта смещение, 4 байта размер, 1 байт какой-то флаг, возможно всегда равен 1. Сами файлы - MP3 и WAV (внутри которых мне попадались всё те же MP3). Здесь звуки, музыка, озвучка. Имён файлов нигде не видно. ![]() 3) Всё остальное (background'ы, анимация и т.д.) Структура файлов похожа на файлы с аудио, но есть отличия. Первые 4 байта - размер каждой из 2-ух идущих следом таблиц, в первой смещения файлов, во второй - размеры файлов. Количество файлов = размер таблицы / 4. Сами распакованные файлы никаких известных заголовков не содержат (хотя удалось открыть несколько бэкграундов - там 16-тибитный цвет, без сжатия, без заголовка, высота 600 точек, ширина разная). Как точно определить какие файлы в папке RESOURCE какого типа - хз, походу с аудио файлы *.m0? и *.s0? PS: Siberian GRemlin, если остался конвертер от первой части, залей куда-нибудь. Ссылка в твоём посте умерла. |
-=CHE@TER=-, Siberian GRemlin, | ||
Sep 30 2008, 11:52 | Портирование озвучки с PS2/XBOX | QUOTE(-=CHE@TER=- @ Sep 26 2008, 19:19) [snapback]2294[/snapback] Чума-а-а! Ты тоже с магнитными лентами работал? (*улыбается*) Кстати, я такого выражения не слышал - как оно полностью звучит (просто интересно)? [offtopic] не, с лентами работать не довелось, у меня батя так часто говорит, когда оказывается что неисправность/ошибку искали "не там". вообще это призказка автомобилистов, полностью вроде звучит так, хотя я слышал и иные интерпритации "И машина как машина И бензина полный бак И искра, как горошина, Не заводится никак. Дело было не в бобине, Идиот сидел в кабине" ЗЫ: никоим образом никого не хотел обидеть этой фразой ![]() [/offtopic] |
-=CHE@TER=-, | ||
Sep 24 2008, 14:31 | Портирование озвучки с PS2/XBOX | Возможно проблема в том, что в PCM WAV поле fmt может быть длиной 16 или 18 байт. Некоторые программы (и игры) начинают выделываться, если им подсунуть "неправильный", с их точки зрения, заголовок. Например, игра писалась с расчётом на поле fmt 16 байт, а ты ей подсовываешь файлы, у которых оно 18 байт. Или наоборот. Пробуй другими прогами звук конвертить. ЗЫ: если выложишь 2 коротких звука - один нормальный и один, который не играется - я скажу тебе точно в этом проблема или нет. |
-=CHE@TER=-, | ||
Aug 19 2008, 20:28 | PSX STR/ZXA | файлик посмотрел, но совсем забыл отписаться на форуме. итак, вот некоторые наблюдения (смещения и размеры в hex, если не указано обратное): файл разбит на блоки по 0х4000 байт, причём данных только на 0х3000, остальное забито нулями. зачем так сделано - непонятно, возможно блок потом в памяти разжимается "сам в себя" и становится 0х4000 байт, как бы там нибыло, файл благодаря такому ходу разработчиков сразу "распух" на треть. далее, блок можно разделить на ещё более мелкие кусочки - назовём их фреймами. размер фрейма - 0х80 байт, причём у каждого фрейма есть что-то вроде заголовка - первые 0х10 байт, они меняются от фрейма к фрейму, но в то же время выделяются на фоне остальных байт. например в файле есть так называемые "пустые фреймы" - заголовок из 0х10 байт 0х0C и 0х70 нулевых байт. вообще, сжатие похоже на разновидность adpcm, так что, возможно в этом заголовке начальные значения для данных сжатых в теле фрейма (см. доки по adpcm). ещё встречаются фреймы у которых первые 8 байт заголовка равны 0х0С а остальные 8 байт - отличаются (или наоборот). тело такого фрейма состоит из чередующихся word'ов нечётные - нулевые, четные - ненулевые (например по смещению 0x0d4800 в выложенном файле). это напоминает разделение каналов. в данном случае в левом - тишина, в правом - есть звук (ну или наоборот, в зависимости от фантазии разработчиков). можно попробовать убрать все большие последовательности нулей (от 0х800 байт и более) и ещё раз послушать как pcm, затем можно попробовать убрать эти самые 16 байт заголовка фрейма и оставить только сжатый поток и попробовать воспроизвести его. если посторонние шумы останутся - то это скорее всего разновидность adpcm, ну очень на то похоже. зы: да, параметры для pcm ставь стерео, 16 бит, а вот частоту подбором искать придётся. пока это всё что выяснил по формату. |
-=CHE@TER=-, | ||
Упрощённая версия | Сейчас: 20th September 2024 - 03:21 |