IPB

Добро пожаловать, гость ( Вход | Регистрация )

История благодарностей участнику Axsis ::: Спасибо сказали: 149 раз(а)
Дата поста: В теме: За сообщение: Спасибо сказали:
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 (указатель на байт в который мы сейчас запишем новые распакованные данные) циклически увеличивается. unsure.gif
-=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]
Нормального исходника нет, так как писал и сразу отлаживал непосредственно в ольке. smile.gif
-=CHE@TER=-,
Jan 26 2011, 12:17 InstallShield CAB View
Итак, возвращаясь к теме распаковки InstallShield'а с заголовком, а то моё "чуть позже" и так затянулось... rolleyes.gif
Давным-давно были версии 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 - нужно ему разрешить wink.gif

Ну и тестовая версия с расшифровкой на самом 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]
Повторюсь, эта версия довольно медленная и никак не сообщает работает она или же висит. Я пробовал добавить вывод некоего "прогресс-бара", но тогда скрипт работает ещё медленнее. sad.gif Так что запускайте его на небольших файлах или наберитесь терпения.

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. mad.gif
Запустил под олькой, падает на адресе 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 как-то не хочется. unsure.gif
-=CHE@TER=-,
Dec 13 2010, 23:59 InstallShield CAB View
QUOTE
Для работы IsCabView.exe нужно что-то ещё?

Та нет вроде. Только что распаковал у себя оба dat файла. Учитывая что она написана на С, то могут понадобиться только библиотеки из vc_redist, скорее всего 2008 версии. (в импорте присутствуют mfc90u.dll, msvcr90.dll, но если бы у тебя их не было, она бы не загрузилась mellow.gif )
Обнови, может поможет. 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. Для новой версии понадобилась лишь лёгкая модификация скрипта smile.gif

Для старых версий (без юникода; действие аналогично 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


В принципе ничего сложного, файлы с заголовком опишу чуть позже, там всё несколько хитрее. Но и для них тоже есть скрипт wink.gif
А то тягать инсталляторы из темпа как-то не по-нашенски biggrin.gif

[offtopic]
Скорее всего, не переименовались, а продались wink.gif
Подозреваю, что "All rights raped." - результат деятельности некоего прыщавого юноши в каком-нибудь рестораторе biggrin.gif
Тот 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 wink.gif
-=CHE@TER=-,
Aug 22 2010, 22:25 Кто чего слушает?
Сегодня увидел тизер и трейлеры Deus Ex 3 - очень качественно сделано, а главное - там просто потрясающая музыка. После непродолжительных поисков по инету, оказалось что музыку к игре пишет Майкл МакКанн - композитор Splinter Cell: Double Agent (в которого я так и не играл, но саундтрек мне очень по душе). В трейлере тоже звучит его композиция.
Студию-разработчика завалили письмами с вопросами что это за трек и они выложили его для свободного скачивания! Честь и хвала им за это. smile.gif
Итак, трейлеры и трек, звучащий в них, на официальном сайте игры. Лично мне больше понравился тот что длится 3:18 wink.gif
-=CHE@TER=-,
Aug 12 2010, 09:40 Aurora Watching: Gorky Zero [.ZAP]
Ох, давно это было, почти 5 лет прошло...
Я уже и не помню что видел эту игру.
Игра, как я понимаю, в качестве ресурсов поддерживает и zip, правильно? Тогда, возможно, пираты после "локализации" не заморачивались с родным форматом и запихали всё в zip. И ко мне в тот раз попала такая вот пиратка. Это так, лишь предположения...
Как бы там ни было в прошлый раз, сейчас глянул демку с ag.ru
Трудно искать чёрную кошку в тёмной комнате, особенно, если её там нет... wink.gif
Это я про шифрование. Его там нет. Обычный deflate, просто без 2-х байт заголовка, STUNS справляется на ура.

ДОБАВЛЕНО: Таблица файлов довольно мудрёная, но структуру уже почти полностью разобрал. Если кто-то соберётся писать распаковщик могу подсказать по формату.
ДОБАВЛЕНО2: Гугл по запросу "zap unpacker" выдаёт гору ссылок на распаковщик для Infernal, в котором, как оказалось, тот же самый zap. (по крайней мере из демки Aurora Watching всё распаковал).
Вроде как страничка автора, ложка дёгтя - он требует горячо любимый .net framework smile.gif
-=CHE@TER=-,
Apr 7 2010, 20:02 !Вирусы!
ну даже не знаю, попробуй 4-ю версию поставить, для неё базы тоже ещё обновляются, и она не такая прожорливая до ресурсов.
с флэшгетом ситуация скорее всего следующая: он качает в файл с временным расширением, а потом переименовывает например в *.exe, вот тут то дрвеб новый файлик и проверяет, а программу, совершившую переименование, на время проверки блокирует. такое поведение антивируса вполне логично - на то он и антивирус wink.gif как реагирует флэшгет на подобные "издеветельства" - трудности самого флэшгета (с точки зрения разрабов дрвеба smile.gif)
насколько я помню, download master нормально такие задержки переваривал и продолжал качать другие закачки без разрывов.
-=CHE@TER=-,
Feb 15 2010, 16:50 QuickBMS
Уже не в первый раз столкнулся с BMS скриптом для распаковки игровых ресурсов, решил почитать про утилитку, которая эти скрипты выполняет - QuickBMS
Оказалось, что это весьма удобный инструмент, с помощью которого можно распаковать как простейшие псевдоархивы, так и довольно хитрые со сжатием и шифрованием.
В архиве с программой есть readme с довольно подробным описанием всех скриптовых команд, плюс на сайте автора пачка скриптов-примеров.
Я уже набросал для тренировки пару скриптов для простейших псевдоархивов. Как появится что-то стоящее - буду выкладывать smile.gif
Из особенно понравившихся фишек надо отметить большой список поддерживаемых алгоритмов сжатия/шифрования, а также возможность вызывать в скрипте функции из внешних DLL. rolleyes.gif
Советую ознакомиться wink.gif
-=CHE@TER=-,
Feb 15 2010, 16:10 Delphi, Asm, C, WinAPI, PHP, ... -=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 отдельно, никакие паки не ставлю по религиозным соображениям (там много ненужных мне вещей) smile.gif
версия 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 соединения остались (закачки не прервались), но вот новые уже не открывались ни в одной программе. Поэтому я поспешил удалить её драйвера и перезагрузиться. Проверять её работоспособность после перезагрузки уже как-то не хотелось smile.gif
-=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 года...rolleyes.gif
В общем нарыл там 3 типа ресурсов.
1) Видео (предположительно)
Файлы в папке DATAV, похоже что это BIK'и с зашифрованным заголовком - первые 0x400h байт зашифрованы, а потом "продолжается" какая-то таблица смещений, похожую структуру можно найти в любом BIK файле, только вот как именно шифруется заголовок пока не понятно. На то что там именно BIK косвенно указывают binkw32.dll и строка "uses RAD video" в титрах игры wink.gif
2) Аудио
Файл в папке DATAA и некоторые из папки RESOURCE. Структура довольно простая - первые 4 байта количество файлов в архиве, потом идут 9-тибайтовые записи в количестве, равном количеству файлов. Каждая запись - 4 байта смещение, 4 байта размер, 1 байт какой-то флаг, возможно всегда равен 1.
Сами файлы - MP3 и WAV (внутри которых мне попадались всё те же MP3). Здесь звуки, музыка, озвучка. Имён файлов нигде не видно. sad.gif
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]
не, с лентами работать не довелось, у меня батя так часто говорит, когда оказывается что неисправность/ошибку искали "не там".
вообще это призказка автомобилистов, полностью вроде звучит так, хотя я слышал и иные интерпритации

"И машина как машина
И бензина полный бак
И искра, как горошина,
Не заводится никак.

Дело было не в бобине,
Идиот сидел в кабине"

ЗЫ: никоим образом никого не хотел обидеть этой фразой rolleyes.gif
[/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=-,

3 Страниц V < 1 2 3 >
Упрощённая версия Сейчас: 28th March 2024 - 23:05