Сейчас на форуме: vsv1, NIKOLA, r0lka, johnniewalker (+4 невидимых)

 eXeL@B —› Крэки, обсуждения —› Распаковка последних InstallShield'ов
<< . 1 . 2 .
Посл.ответ Сообщение

Ранг: 18.6 (новичок)
Активность: 0.010
Статус: Участник

Создано: 28 мая 2011 06:20
· Личное сообщение · #1

Забавно, по теме распаковки последних версией IS - тишина. Есть ли автоматические решения? isXunpacker - слишком стар, ровно как и его аналоги для 5-6-7 версии. Как народ решает проблемы с 11 и новее?



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

Создано: 27 августа 2014 21:14
· Личное сообщение · #2

он неудобным стал с 17-й версии - поэтому я остановился на кабвьювере 16 и дальше только длл обновляю



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

Создано: 27 августа 2014 21:42 · Поправил: vodek
· Личное сообщение · #3

alexey-ka пишет:
понимает 17 версию --> http://deioncube.in/files/cw2k/isd6/isd_beta16.7z <--


InstallShield Decompiler можно скачать здесь



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

Создано: 07 ноября 2014 23:32
· Личное сообщение · #4

подскажите, можно чем-то заменить пару файлов в cab`е, не пересобирая инсталятор?



Ранг: 29.8 (посетитель), 9thx
Активность: 0.020
Статус: Участник

Создано: 08 ноября 2014 02:02
· Личное сообщение · #5

zds
Mscab плагин для фара тебе в помощь.

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

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

Создано: 08 ноября 2014 10:27
· Личное сообщение · #6

забыл добавить: у меня InstallShield 18 ID - 49 53 63 28 08 07 00 04
три файла data1.cab, data2cab, data1.hdr



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

Создано: 03 февраля 2015 03:59 · Поправил: Alofa
· Личное сообщение · #7

Ну и ладно



Ранг: 16.5 (новичок), 5thx
Активность: 0.01=0.01
Статус: Участник
iOS expert

Создано: 31 января 2016 11:51
· Личное сообщение · #8

А за что отвечает dbd файл?



Ранг: 47.8 (посетитель), 16thx
Активность: 0.020.01
Статус: Участник

Создано: 29 августа 2016 13:03
· Личное сообщение · #9

Может кто-то всё таки знает как заменить файл в data2.cab от InstallShield 18 ?
сигнатура 49 53 63 28 08 07 00 04
data1.hdr и data1.cab вынул из папки Temp
data2.cab винхексом из самого инсталлятора (exe).
data2.hdr просто не существует.
data1.hdr содержит список файлов как первого каба, так и второго.
Пробовал все что можно - не пашет ничего.
С data1.cab проблем нет. Нужно именно заменить файл, а не извлечь.



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

Создано: 27 мая 2017 00:10 · Поправил: TheDrive
· Личное сообщение · #10

SaniaNET пишет:
1. вынимаем оверлей из исходного sfx exe, например програмулей Exeinfo PE 0.0.3.2
2. скриптом is_type2u.bms отсюда http://www.forum.ctpax-x.ru/s=c76c6fd10152abf21afd24d577660def&showtopic=239&view=findpost&p=3026 распаковываем оверлей и получаем заветный data2.cab
3. Ну тут уже или IsCabView.exe или другими утилитами выдергиваем из архивов все что нужно

Форум CTPAX переехал на новый домен.
Соотв топик с обсуждением скриптов QuickBMS переехал тоже. Новый URL:
http://www.forum.ctpax-x.org/showtopic=239&st=0&p=3026&#

Сам QuickBMS by Luigi Auriemma, документацию и кучу ресурсов к нему можно скачать тут:
http://aluigi.altervista.org/quickbms.htm

Цитирую скрипты с описанием целиком (Бывает форумы целиком закрывают, тогда как подобная информация оказывает востребованной и актуальной иногда через десятки лет, потому, плз, без обид).
Автор - Axsis
Axsis:
Версий инсталлшилда великое множество, но глобально их можно поделить на 2 типа. Но раз уж затронули эту тему, то обо всём по порядку:
Во-первых как получить сам оверлей для ковыряния оного? Программ довольно много, но наиболее правильно это делает ВНЕЗАПНО 7zip (у меня версия 9.20, за более ранние не ручаюсь, но вроде он давно уже умеет разбирать exe на секции). Правда, он привередлив и распаковывает далеко не все exe, а по-моему только те у которых есть цифровая подпись. Но учитывая что IS платный и пользуются им только крупные разработчики и издатели, то подпись есть на большинстве инсталляторов. Итак, среди распакованных файлов находим файл с загадочным именем "[0]" - это и есть оверлей, он то нам и нужен. Плюс 7zip'а в том, что он, в отличие от других подобных прог, извлекает только то что нам нужно - без отладочной информации, которая в новых инсталляторах идёт после последней секции файла и перед оверлеем, и без самой цифровой подписи, которая идёт после оверлея. (Точнее, всё это сохраняется в отдельных файлах).

Оверлеи, как я уже писал, бывают двух типов - с заголовком "InstallShield" и без заголовка вообще. Файлы с заголовком опишу чуть позже, там тоже несколько разновидностей, шифрование, сжатие и т.д и т.п. В 3DMark'ах (не только в 11, но и в предыдущих) используется второй тип - раньше его брала IsXunpack.exe, но теперь имена файлов и здесь в юникоде, так что облом.
Я эти файлы распаковываю с помощью скриптов для QuickBMS. Для новой версии понадобилась лишь лёгкая модификация скрипта

Для старых версий (без юникода; действие аналогично IsXunpack):
Code:
  1. # is_type2.bms
  2. get END ASIZE
  3. math END -= 8
  4. do
  5.   get NAME string
  6.   get FULLNAME string
  7.   get VERSION string
  8.   get SIZE string
  9.   savepos OFFSET
  10.   log FULLNAME OFFSET SIZE
  11.   math OFFSET += SIZE
  12.   goto OFFSET
  13. while OFFSET < END


Для новых версий (с именами в юникоде):
Code:
  1. # is_type2u.bms
  2. get FILES long # Догадались добавить количество файлов...
  3. for I = 0 < FILES
  4.   get NAME unicode
  5.   get FULLNAME unicode
  6.   get VERSION unicode
  7.   get SIZE unicode
  8.   savepos OFFSET
  9.   log FULLNAME OFFSET SIZE
  10.   math OFFSET += SIZE
  11.   goto OFFSET
  12. next I

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

Для справки, у меня 7zip - консольный, GUI, в составе Far->ArcLite, версий 9.20, 9.34, 200-метровый exe-инсталлятор от Qualcomm просто игнорирует (Can not open file as archive). Подписей на инсталляторе НЕТ.

Вторая часть:
Axsis:
Итак, возвращаясь к теме распаковки InstallShield'а с заголовком, а то моё "чуть позже" и так затянулось... rolleyes.gif
Давным-давно были версии IS, в которых файлы в оверлее лежали в открытом виде.
Потом разработчики сделали шифрование каждого файла в псевдоархиве. Потом они сделали шифрование не целиком всего файла, а блоками по 1024 байта, видимо, чтоб не грузить файл в память целиком.
И последнее нововведение - файлы теперь ещё и сжаты перед шифрованием (zlib).
Скрипт поддерживает все (вроде) данные типы. Однако, когда я реализовал расшифровку средствами самого BMS, то работало оно жутко медленно - у меня скорость была порядка 1 Мб в секунду, и ждать, например, по полторы-две минуты на расшифровке 100 мегабайтного файла быстро надоело. Поэтому, почитав в очередной раз справку по QuickBMS, я решил переписать функцию расшифровки на асме и вызывать её из скрипта. Быстрее стало в буквальном смысле на порядок, тот же файл распаковался примерно за 10 сек.
Собственно рабочая версия скрипта:
Code:
  1. IDString "InstallShield\x00"
  2. #Get ASZ ASize
  3. 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"
  4. Get FILES Long
  5. GoTo 0x1C 0 SEEK_CUR
  6. For i = 0 < FILES
  7.  GetDString NAME 0x100
  8.  Get DUMMY Long
  9.  Get TYPE Long
  10.  Get DUMMY Long
  11.  Get SIZE Long
  12.  Get DUMMY Long
  13.  Get DUMMY Long
  14.  Get COMPRESSED Long
  15.  GetDString DUMMY2 0x1C
  16.  SavePos OFFSET
  17.  If TYPE == 0
  18.   Log NAME OFFSET SIZE
  19.  ElseIf TYPE == 2
  20.   Set CHUNKSZ Short 0
  21.   CallFunction DecryptFile
  22.  ElseIf TYPE == 6
  23.   Set CHUNKSZ Short 1024
  24.   CallFunction DecryptFile
  25.  Else
  26.   Print "Unsupported type (%TYPE%) of file %NAME%"
  27.  EndIf
  28.  Math OFFSET += SIZE
  29.  GoTo OFFSET
  30. Next i
  31.  
  32. StartFunction DecryptFile
  33.  Set KEY NAME
  34.  StrLen KEYSZ NAME
  35.  Log MEMORY_FILE OFFSET SIZE
  36.  
  37.  ###################################################################
  38.  # IShield.DeCrypt (&Buffer, BufferSize, &Key, KeySize, ChunkSize) #
  39.  ###################################################################
  40.  CallDll MEMORY_FILE2 0 cdecl "" MEMORY_FILE SIZE &KEY KEYSZ CHUNKSZ
  41.  
  42.  If COMPRESSED == 0
  43.   Log NAME 0 SIZE MEMORY_FILE
  44.  Else
  45.   ComType zlib
  46.   CLog NAME 0 SIZE 0x10000000 MEMORY_FILE
  47.  EndIf
  48. EndFunction

При расшифровке QuickBMS спросит можно ли вызвать функцию из MEMORY_FILE2 - нужно ему разрешить.

Ну и тестовая версия с расшифровкой на самом BMS:
Code:
  1. IDString "InstallShield\x00"
  2. #Get ASZ ASize
  3. Get FILES Long
  4. GoTo 0x1C 0 SEEK_CUR
  5. For i = 0 < FILES
  6.  GetDString NAME 0x100
  7.  Get DUMMY Long
  8.  Get TYPE Long
  9.  Get DUMMY Long
  10.  Get SIZE Long
  11.  Get DUMMY Long
  12.  Get DUMMY Long
  13.  Get COMPRESSED Long
  14.  GetDString DUMMY2 0x1C
  15.  SavePos OFFSET
  16.  If TYPE == 0
  17.   Log NAME OFFSET SIZE
  18.  ElseIf TYPE == 2
  19.   Set CHUNKSZ Short 0
  20.   CallFunction DecryptFile
  21.  ElseIf TYPE == 6
  22.   Set CHUNKSZ Short 1024
  23.   CallFunction DecryptFile
  24.  Else
  25.   Print "Unsupported type (%TYPE%) of file %NAME%"
  26.  EndIf
  27.  Math OFFSET += SIZE
  28.  GoTo OFFSET
  29. Next i
  30.  
  31. StartFunction DecryptFile
  32.  Set KEY1 NAME
  33.  Set KEY2 Binary \xEC\xCA\x79\xF8
  34.  StrLen KEYSZ NAME
  35.  Set CO 0   # CHUNK_OFFSET
  36.  Set KO 0   # KEY_OFFSET
  37.  String KEY1 ^ KEY2
  38. # Print "New KEY1 is %KEY1%"
  39.  Log MEMORY_FILE OFFSET SIZE
  40.  For j = 0 < SIZE
  41.   GetVarChr TMP1 MEMORY_FILE j
  42.  
  43. # Decrypt stage 1 #
  44.   Set TMP2 Byte TMP1
  45.   Math TMP1 r 4
  46.   Math TMP2 l 4
  47.   Math TMP1 | TMP2
  48.  
  49. # Decrypt stage 2 #
  50.   GetVarChr TMP2 KEY1 KO
  51.   Math TMP1 ^ TMP2
  52.   Math KO += 1
  53.   If KO == KEYSZ
  54.    Math KO = 0
  55.   EndIf
  56.   Math CO += 1
  57.   If CO == CHUNKSZ
  58.    Math CO = 0
  59.    Math KO = 0
  60.   EndIf
  61.   PutVarChr MEMORY_FILE j TMP1
  62.  Next j
  63.  If COMPRESSED == 0
  64.   Log NAME 0 SIZE MEMORY_FILE
  65.  Else
  66.   ComType zlib
  67.   CLog NAME 0 SIZE 0x10000000 MEMORY_FILE
  68.  EndIf
  69. EndFunction

Повторюсь, эта версия довольно медленная и никак не сообщает работает она или же висит. Я пробовал добавить вывод некоего "прогресс-бара", но тогда скрипт работает ещё медленнее. Так что запускайте его на небольших файлах или наберитесь терпения.

PS: И сам алгоритм шифрования: DecodedData = ByteSwap(EncodedData) XOR (FileName.ext XOR 0xECCA79F8).
ByteSwap - обмен местами младших и старших 4 бит в байте, как в 3Дмарках. FileName.ext - имя сохраняемого файла, используется как ключ, поэтому регистр важен. В EncodedData либо весь файл сразу, либо блоками по 1024 байта - в зависимости от версии IS.
Немного некорректно выразился, там не 0xECCA79F8 а массив байт 0xEC, 0xCA, 0x79, 0xF8. Длина имени любая, 5-ый символ в строке xor'ится опять первым байтом массива, 6-й - вторым, и т.д.


В том же топике обсуждается модификации I6comp (i6compx и i6comp2x с попыткой частичной интеграции поддержки unicode версий, есть исходники) за авторством -=CHE@TER=- с участием Axsis. Архив с i6compx/i6comp2x аттачу для истории.
-=CHE@TER=-
Unicode, правда, не поддерживается (тупо переводится в ANSI с заменой на "_" левых символов), но главное, что оно всё правильно распаковывает. Флаг 0x04000000 я поставил от балды, т.к. не знаю какой там должен быть правильный, чтобы по нему определить наличие отсутствия Unicode.
http://www.ctpax-x.org/uploads/i6compx.zip
http://www.ctpax-x.org/uploads/i6comp2x.zip

Подробности см. в том топике. Обсуждение за декабрь 2010 и март 2013г. Не доделали.

gazlan пишет:
вынимаем оверлей из исходного sfx exe, например програмулей Exeinfo PE 0.0.3.2
h**p://gazlan.freetzi.com/pe/splitters/ovr.rar

Сайт почил, что за программа скрывалась за "словом из 3 букв" не известно. Найти такой архив с "тематическим" содержимым не удалось. Даже archive.org знает лишь то, что такой сайт когда-то был...

Вообще, изменения в форматах архивов за все годы после IS 3.x носят весьма косметический характер. Слегка меняются форматы хранения sfx и cab-ов, все больше с целью "чтоб не распаковывали". Было бы отлично, если бы кто-то взялся за написание универсального инструмента по IS "всех версий", дабы не плодить бесконечные "патчи" и "латки". Пример подобного статического распаковщика - Inno Unpacker для Inno Setup. Автор долгие годы добавляет новые версии по одной даже после мелких изменений формата, равно как и некоторые популярные "кастомизации". Зато, если версия поддерживается, она распаковывается корректно, без проблем и танцев с бубном. Распаковку sfx.exe и cab можно было бы объединить в рамках одного инструмента либо разнести в разные. Главное чтобы поддерживалось и корректно распаковывало.


P.S. форум не желает прикладывать аттач

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

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

Создано: 27 мая 2017 01:21 · Поправил: TheDrive
· Личное сообщение · #11

P.S. форум не желает прикладывать аттач, хоть убейся ап стену. Что ему не нравится, он не сообщает, потому что это сИкрет!
В аттаче были файлы i6compx.zip и i6comp2x.zip, скачанные по ссылкам, приведенным выше и упакованные в один "большой" i6compx_ctpax.zip, общим весом аж 121КБ, и то, только по той веской причине, что "ближе к середине 21 века" к форуму, все еще, ну никак, нельзя добавить 2 аттача - только один и только не более 500КБ. Так мы и растеряем все "важные вехи большого пути", постепенно...

При попытке редактировать с добавлением аттача по новой - сразу же добавляет, только не аттач........ а говно, которое Вы видите строкой ниже:
<img src="img/attach.gif
C'est la vie.

Форум не желал добавлять аттач, оказывается, потому, что мое "маленькое скромное сообщение" не умещалось в какие-то там сИкретные рамки, однако даже знать об этом мне было не дано, только догадываться по разным "знакам" и "полунамекам".
e023_27.05.2017_EXELAB.rU.tgz - i6compx_ctpax.zip




Ранг: 170.1 (ветеран), 96thx
Активность: 0.090.01
Статус: Участник

Создано: 28 мая 2017 08:45
· Личное сообщение · #12

TheDrive пишет:
что за программа скрывалась за "словом из 3 букв"

h**p://gazlan.narod.ru/pe/splitters/ovr.rar



Ранг: 3.2 (гость), 3thx
Активность: 0.01=0.01
Статус: Участник

Создано: 11 сентября 2019 12:57
· Личное сообщение · #13

Утилита для распаковки InstallShield. Серийный номер находится в файле "reg-num".


<< . 1 . 2 .
 eXeL@B —› Крэки, обсуждения —› Распаковка последних InstallShield'ов
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати