Что такое код unpack


Руководство пользователя: Операционная система и устройства

Для распаковки сжатых файлов предназначены команды uncompress и unpack .

Команда uncompress восстанавливает исходные версии файлов, сжатых командой compress . Все файлы, указанные в параметре Файл , будут удалены и заменены развернутыми версиями. Развернутый файл имеет то же имя, что и сжатая версия, но без расширения .Z Развернутый файл сохраняет владельца, режимы доступа и время последнего чтения и записи исходного файла. Если файлы не указаны, стандартный ввод будет развертываться в стандартный вывод.

Схожая с командой uncompress команда zcat всегда записывает результат развертывания файла в стандартный вывод.

Например, для развертывания файла с именем foo введите:

Полный синтаксис приведен в описании команды uncompress в книге AIX 5L Version 5.1 Commands Reference .

Команда unpack развертывает файлы, созданные командой pack . Для каждого из указанных имен файлов команда unpack ищет файл Имя_файла .z . Если сжатый файл с таким именем существует, команда unpack заменяет его развернутой версией. Затем команда unpack переименовывает новый файл, удаляя суффикс .z . Развернутый файл сохраняет режимы доступа, дату последнего чтения и записи, а также владельца исходного сжатого файла.

Команда unpack работает только с файлами, заканчивающимися на .z . Если вы укажете имя файла без суффикса .z , команда unpack сама добавит этот суффикс при поиске файла в каталоге.

Код возврата команды unpack содержит число файлов, которые ей не удалось развернуть. Файл может быть не развернут по одной из следующих причин:

  • Длина имени файла (без суффикса .z ) превышает 253 байта.
  • Файл не может быть открыт.
  • Указан не сжатый файл.
  • Развернутый файл уже существует.
  • Развернутый файл не может быть создан.

Примечание: Команда unpack записывает предупреждения в стандартное устройство ошибок. При развертывании файла ему присваивается новый номер i-node. Все остальные файлы, связанные с номером i-node сжатого файла, останутся сжатыми.

Например, для развертывания сжатых файлов chap1.z и chap2.z введите:

Файлы chap1.z и chap2.z будут развернуты и заменены файлами с именами chap1 и chap2 . Заметьте, что в команде unpack можно указывать имена как с суффиксом .z , так и без него.

Полный синтаксис приведен в описании команды unpack в книге AIX 5L Version 5.1 Commands Reference .

Функции pack и unpack. Работа с бинарными данными.

Вероятно большинство веб-программистов никогда не работали напрямую с бинарными данными из php.

И так получилось не только потому, что, чаще всего бинарную обработку берут на себя разнообразные расширения или библиотеки. Часто это связано ещё и с тем, что информации в интернете не очень много, а та что есть — сложна для восприятия и далека от потребностей конкретного разработчика.

Для чтения и записи бинарных данных в php есть две полезные функции:

unpack — распаковка бинарных данных в массив

Итак, если вы прошли по сссылкам и ознакомились с тем что делают эти функции, но ничего не поняли, поясняю:

Функция pack запаковывает данные в требуемом формате, по нашей маске, и на выходе отдаёт строку в бинарном формате.
Функция unpack выполняет обратное преобразование. Она на входе ожидает строку в бинарном формате и на выходе отдаёт массив с данными в привычном нам формате.

Для понимания того, как упаковываются данные, нужно прочитать про то как хранятся данные в памяти. Например из курса языка программирования C.

Преимущество бинарных данных

Допустим: Нам нужно записать в файл числа от нуля до 256. Важно что бы файл легко читался программами на других языках и что бы по размеру он занимал минимум места.

Записываем данные

Традиционным способом мы бы записывали примерно так:

Запаковывая каждый байт по отдельности, мы сделали бы так:

Теперь сравним размеры получившихся файлов:

Т.е. файл где мы упаковали все значения меньше в байт, почти в три раза меньше чем файл где мы все значения записывали в виде строки.

Что бы понять как именно были сохранены файлы, давайте рассмотрим их в HEX редакторе.

Так выглядит файл сохранённый обычным способом:

А в этом файле значения были упакованы в char:

Внимательный разработчик сразу заметит причину такого разбухания файла.

Это конечно же символ 0A, используемый в качестве разделителя значений (0x0A = 10 = символ новой строки), и то, что каждый из знаков в переменной сохраняется в своём байте. Например, когда требуется сохранить число 248, записываются 3 байта 32 34 38.

Считываем данные

Теперь при попытке прочитать данные из файлов могут возникнуть проблемы при чтении запакованных данных. Что бы их обойти считываем данные так:

Подробнее о функциях pack и unpack

Как вы уже могли заметить, функция pack принимает обязательных два аргумента: форматную строку и значение, или несколько значений которые необходимо запаковать.

Для того что бы оценить гибкость запаковывания данных давайте попробуем решить такую задачу.

Нам необходимо реализовать обмен данными между программами написанными на разных языках.

Итак, запаковываем массив содержащий числа и строки. Обратите внимание на то, что если для чисел мы знаем размер, хотя бы предполагаем что число обязано уместится в тип char, т.е. от 0 до 256. То строка может содержать любое количество символов.

Для простоты будем считать что строка тоже должна уместиться в 256 символов, тогда мы можем количество символов строки записать в переменную типа char.


Вот так выглядит сохранённый файл

Попробуем теперь прочитать файл

И на выходе мы получим такой массив:

Как видите, всё просто, даже сложные бинарные структуры достаточно просто разобрать на php.

Спасибо за прочтение статьи и просмотр портянки шестнадцетеричных кодов :-)

Полезный сайт

Award BIOS 6.0: полная загрузка

Данная таблица содержит POST-коды, которые отображаются при полной процедуре POST.

CF Определяется тип процессора и тестируется чтение/запись CMOS
C0 Предварительно инициализируется чипсет и L1-, L2-кэш, программируется
контроллер прерываний, DMA, таймер
C1 Детектируется тип и объем оперативной памяти
C3 Код BIOS распаковывается во временную область оперативной памяти
0С Проверяются контрольные суммы BIOS
C5 Код BIOS копируется в теневую память и управление передается модулю Boot Block
01 Модуль XGROUP распаковывается по физическому адресу 1000:0000h
02 Инициализация процессора. Устанавливаются регистры CR и MSR
03 Определяются ресурсы ввода/вывода (Super I/O)
05 Очищается экран и флаг состояния CMOS
06 Проверяется сопроцессор
07 Определяется и тестируется контроллер клавиатуры
08 Определяется интерфейс клавиатуры
09 Инициализация контроллера Serial ATA
OA Определяется клавиатура и мышь, которые подключены к портам PS/2
0B Устанавливаются ресурсы звукового контроллера AC97
OE Тестируется сегмент памяти F000h
10 Определяется тип flash-памяти
12 Тестируется CMOS
14 Устанавливаются значения для регистров чипсета
16 Первично инициализируется тактовый генератор
18 Определяется тип процессора, его параметры и объемы кэша L1 и L2
1B Инициализируется таблица векторов прерываний
1С Проверяются контрольные суммы CMOS и напряжение питания аккумулятора
1D Определяется система управления питанием Power Management
1F Загружается матрица клавиатуры (для ноутбуков)
21 Инициализируется система Hardware Power Management (для ноутбуков)
23 Тестируется математический сопроцессор, дисковод, инициализация чипсета
24 Обновляется микрокод процессора. Создается карта распределения ресурсов
устройств Plug and Play
25 Начальная инициализация PCI: перечисляются устройства, поиск адаптера
VGA, запись VGA BIOS по адресу C000:0
26 Устанавливается тактовая частота по CMOS Setup. Отключается синхронизация
неиспользуемых слотов DIMM и PCI. Инициализируется система мониторинга
(H/W Monitor)
27 Разрешается прерывание INT 09h. Снова инициализируется контроллер клавиатуры
29 Программируются регистры MTRR, инициализируется APIC. Программируется контроллер
IDE. Измеряется частота процессора. Вызывается расширение BIOS видеосистемы
2B Поиск BIOS видеоадаптера
2D Отображается заставка Award, информация о типе процессора и его скорости
33 Сбрасывается клавиатура
35 Тестируется первый канал DMA
37 Тестируется второй канал DMA
39 Тестируются страничные регистры DMA
3C Настраивается контроллер 8254 (таймер)
3E Проверка контроллера прерываний 8259
43 Проверяется контроллер прерываний
47 Тестируются шины ISA/EISA
49 Вычисляется объем оперативной памяти. Настраиваются регистры для процессора
AMD K5
4E Программируются регистры MTRR для процессоров Syrix. Инициализируются кэш L2
и APIC
50 Определяется шина USB
52 Тестируется ОЗУ с отображением результатов. Очищается расширенная память
53 Если выполнена очистка CMOS, то сбрасывается пароль на вход в систему
55 Отображается количество процессоров (для многопроцессорных платформ)
57 Отображается логотип EPA. Начальная инициализация устройств ISA PnP
59 Определяется система защиты от вирусов
5B Вывод подсказки для запуска обновления BIOS с дискеты
5D Запускается контроллер Super I/O и интегрированный аудиоконтроллер
60 Вход в CMOS Setup, если была нажата клавиша Delete
65 Инициализируется мышь PS/2
69 Включается кэш L2
6B Настраиваются регистры чипсета согласно BIOS Setup
6D Назначаются ресурсы для устройств ISA PnP и COM-порты для интегрированных
устройств
6F Инициализируется и настраивается контроллер гибких дисков
75 Детектируются и устанавливаются IDE-устройства: жесткие диски,
CD/DVD, LS-120, ZIP и др.
76 Выводится информация об обнаруженных IDE-устройствах
77 Инициализируются последовательные и параллельные порты
7A Сбрасывается и готовится к работе математический сопроцессор
7C Определяется защита от несанкционированной записи на жесткие диски
7F При наличии ошибок выводится сообщение и ожидается нажатие клавиш Delete и F1
82 Выделяется память для управления питанием и заносятся изменения в таблицу ESCD.
Убирается заставка с логотипом EPA. Запрашивается пароль, если нужен
83 Все данные сохраняются из временного стека в CMOS
84 Вывод на экран сообщения Initializing Plug and Play Cards
85 Завершается инициализация USB
87 Создаются таблицы SYSID в области DMI
89 Устанавливаются таблицы ACPI. Назначаются прерывания для PCI-устройств
8B Вызывается BIOS дополнительных ISA- или PCI-контроллеров, за исключением
видеоадаптера
8D Устанавливаются параметры контроля четности ОЗУ по CMOS Setup. Инициализируется
APM
8F IRQ 12 разрешается для «горячего» подключения мыши PS/2
94 Завершение инициализации чипсета. Отображение таблицы распределения ресурсов.
Включение кэша L2. Установка режима перехода на летнее/зимнее время
95 Устанавливается частота автоповтора клавиатуры и состояния Num Lock
96 Для многопроцессорных систем настраиваются регистры (для процессоров Cyrix).
Создается таблица ESCD. Устанавливается таймер DOS Time по показаниям часов
RTC CMOS.
Сохраняются разделы загрузочных устройств для использования встроенным
антивирусом.
Динамик оповещает об окончании POST. Создается таблица MSIRQ
FF Выполняется прерывание BIOS INT 19h. Поиск загрузчика в первом секторе
загрузочного устройства

Award BIOS 6.0: сокращенная загрузка

Сокращенная процедура выполняется при установке в BIOS параметра Quick Power On Self Test.

65 Сбрасывается видеоадаптер. Инициализируются звуковой контроллер, устройства
ввода/вывода,тестируется клавиатура и мышь. Проверяется целостность BIOS
66 Инициализируется кэш-память. Создается таблица векторов прерываний.
Инициализируется система управления питанием
67 Проверяется контрольная сумма CMOS и тестируется батарейка питания.
Настраивается чипсет на основе параметров CMOS
68 Инициализируется видеоадаптер
69 Настраивается контроллер прерываний
6A Тестируется оперативная память (ускоренно)
6B Отображается логотип EPA, результаты тестов процессора и памяти
70 Отображается подсказка для входа в BIOS Setup. Инициализируется мышь,
подключенная к PS/2 или USB
71 Инициализируется контроллер кэш-памяти
72 Настраиваются регистры чипсета. Создается список устройств Plug and Play.
Инициализируется контроллер дисковода
73 Инициализируется контроллер жестких дисков
74 Инициализируется сопроцессор
75 Если нужно, жесткий диск защищается от записи
77 Если нужно, запрашивается пароль и выводятся сообщения Press F1 to continue,
DEL to enter Setup
78 Инициализируются платы расширения с собственной BIOS
79 Инициализируются ресурсы платформы
7A Генерируются корневая таблица RSDT, таблицы устройств DSDT, FADT и т. п.
7D Собирается информациия о разделах загрузочных устройств
7E BIOS готовится к загрузке операционной системы
7F Состояние индикатора NumLock устанавливается в соответствии с настройками
BIOS Setup
80 Вызывается INT 19 и запускается операционная система
FF Загрузка операционной системы

AMIBIOS 8.0

D0 Инициализация процессора и чипсета. Проверка контрольных сумм загрузочного блока
BIOS
D1 Начальная инициализация портов ввода/вывода. Контроллеру клавиатуры
передается команда для самотестирования BAT
D2 Запрет кэш-памяти L1/L2. Определяется объем установленной ОЗУ
D3 Настраиваются схемы регенерации памяти. Разрешается использовать кэш-память
D4 Тест 512 Кбайт памяти. Устанавливается стек и назначается протокол обмена
с кэш-памятью
D5 Код BIOS распаковывается и копируется в теневую память
D6 Проверяются контрольные суммы BIOS и нажатие клавиш Ctrl+Home
(восстановление BIOS)
D7 Управление передается интерфейсному модулю, распаковывающему код в область
Run-Time
D8 Выполняемый код распаковывается из flash-памяти в оперативную. Сохраняется
информация CPUID
D9 Распакованный код переносится из области временного хранения в сегменты
0E000h и 0F000h ОЗУ
DA Восстанавливаются регистры CPUID. Выполнение POST переносится в оперативную память
E1–E8, EC–EE Ошибки, связанные с конфигурацией системной памяти
03 Запрещается обработка NMI, ошибок четности, выдача сигналов на монитор.
Резервируется область для журнала событий GPNV, устанавливаются начальные
значения переменных из BIOS
04 Проверяется работоспособность батареи и подсчитывается контрольная сумма CMOS
05 Инициализируется контроллер прерываний и строится таблица векторов
06 Тестируется и готовится к работе таймер
08 Тестируется клавиатура (мигают индикаторы клавиатуры)
C0 Начальная инициализация процессора. Запрещается использовать кэш-память.
Определяется APIC
C1 Для многопроцессорных систем определяется процессор, отвечающий за запуск системы
C2 Завершается назначение процессора для запуска системы. Идентификация с
помощью CPUID
C5 Определяется количество процессоров, настраиваются их параметры
C6 Инициализируется кэш-память для более быстрого прохождения POST
C7 Завершается начальная инициализация процессора
0A Определяется контроллер клавиатуры
0B Поиск мыши, подключенной к порту PS/2
0C Проверяется наличие клавиатуры
0E Детектируются и инициализируются различные устройства ввода
13 Начальная инициализация регистров чипсета
24 Распаковываются и инициализируются модули BIOS, специфические для платформы.
Создается таблица векторов прерываний и инициализируется обработка прерываний
2A С помощью механизма DIM определяются устройства на локальных шинах. Готовится к
инициализации видеоадаптер, строится таблица распределения ресурсов
2C Обнаружение и инициализация видеоадаптера, видеоадаптер вызывается BIOS
2E Поиск и инициализация дополнительных устройств ввода/вывода
30 Готовится к обработке SMI
31 Инициализируется и активизируется модуль ADM
33 Инициализируется модуль упрощенной загрузки
37 Отображается логотип AMI, версия BIOS, процессора, подсказка клавиши для входа
в BIOS
38 С помощью DIM инициализируются различные устройства на локальных шинах
39 Инициализируется контроллер DMA
3A Устанавливается системное время в соответствии с показаниями часов RTC
3B Тестируется оперативная память и отображаются результаты
3C Настраиваются регистры чипсета
40 Инициализируются последовательные и параллельные порты, математический
сопроцессор и др.
52 По результатам теста памяти обновляются данные об ОЗУ в CMOS
60 По BIOS Setup устанавливается состояние NumLock и настраиваются параметры
автоповтора
75 Запускается процедура для работы с дисковыми устройствами (прерывание INT 13h)
78 Создается список устройств IPL (с которых возможна загрузка операционной системы)
7C Создаются и записываются в NVRAM таблицы расширенной системной конфигурации ESCD
84 Регистрация ошибок, обнаруженных при выполнении POST
85 Выводятся сообщения об обнаруженных некритических ошибках.
87 Если нужно, запускается BIOS Setup, которая предварительно распаковывается в ОЗУ
8C В соответствии с BIOS Setup настраиваются регистры чипсета
8D Строятся таблицы ACPI
8E Настраивается обслуживание немаскируемых прерываний (NMI)
90 Окончательно инициализируется SMI
A1 Очистка данных, которые не нужны при загрузке операционной системы
A2 Для взаимодействия с операционной системой готовятся модули EFI
A4 В соответствии с BIOS Setup инициализируется языковой модуль
A7 Выводится итоговая таблица процедуры POST
A8 Устанавливается состояние регистров MTRR
A9 Если нужно, выполняется ожидание ввода команд с клавиатуры
AA Удаляются векторы прерываний POST (INT 1Ch и INT 09h)
AB Определяются устройства для загрузки операционной системы
AC Завершающие этапы настройки чипсета в соответствии с BIOS Setup
B1 Настраивается интерфейс ACPI
00 Вызывается обработка прерывания INT 19h (поиск загрузочного сектора, загрузка ОС)

PhoenixBIOS 4.0

02 Verify Real Mode
03 Disable Non-Maskable Interrupt (NMI)
04 Get CPU type
06 Initialize system hardware
08 Initialize chipset with initial POST values
09 Set IN POST flag
0A Initialize CPU registers
0B Enable CPU cache
0C Initialize caches to initial POST values
0E Initialize I/O component
0F Initialize the local bus IDE
10 Initialize Power Management
11 Load alternate registers with initial POST values
12 Restore CPU control word during warm boot
13 Initialize PCI Bus Mastering devices
14 Initialize keyboard controller
16 (1-2-2-3) BIOS ROM checksum
17 Initialize cache before memory autosize
18 8254 timer initialization
1A 8237 DMA controller initialization
1C Reset Programmable Interrupt Controller
20 (1-3-1-1) Test DRAM refresh
22 (1-3-1-3) Test 8742 Keyboard Controller
24 Set ES segment register to 4 GB
26 Enable A20 line
28 Autosize DRAM
29 Initialize POST Memory Manager
2A Clear 512 KB base RAM
2C (1-3-4-1) RAM failure on address line xxxx
2E (1-3-4-3) RAM failure on data bits xxxx of low byte of memory bus
2F Enable cache before system BIOS shadow
30 (1-4-1-1) RAM failure on data bits xxxx of high byte of memory bus
32 Test CPU bus-clock frequency
33 Initialize Phoenix Dispatch Manager
34 Disable Power Button during POST
35 Re-initialize registers
36 Warm start shut down
37 Re-initialize chipset
38 Shadow system BIOS ROM
39 Re-initialize cache
3A Autosize cache
3C Advanced configuration of chipset registers
3D Load alternate registers with CMOS values
40 CPU speed detection
42 Initialize interrupt vectors
45 POST device initialization
46 (2-1-2-3) Check ROM copyright notice
48 Check video configuration against CMOS
49 Initialize PCI bus and devices
4A Initialize all video adapters in system
4B QuietBoot start (optional)
4C Shadow video BIOS ROM
4E Display BIOS copyright notice
50 Display CPU type and speed
51 Initialize EISA board
52 Test keyboard Тестируется клавиатура
54 Set key click if enabled
55 Initialize USB bus
58 (2-2-3-1) Test for unexpected interrupts
59 Initialize POST display service
5A Display prompt “Press F2 to enter SETUP”
5B Disable CPU cache
5C Test RAM between 512 and 640 KB
60 Test extended memory
62 Test extended memory address lines
64 Jump to UserPatch1
66 Configure advanced cache registers
67 Initialize Multi Processor APIC
68 Enable external and CPU caches
69 Setup System Management Mode (SMM) area
6A Display external L2 cache size
6B Load custom defaults (optional)
6C Display shadow-area message
6E Display possible high address for UMB recovery
70 Display error messages Выводятся сообщения об ошибках
72 Check for configuration errors
76 Check for keyboard errors
7C Set up hardware interrupt vectors
7D Initialize hardware monitoring
7E Initialize coprocessor if present
80 Disable onboard Super I/O ports and IRQs
81 Late POST device initialization
82 Detect and install external RS232 ports
83 Configure non-MCD IDE controllers
84 Detect and install external parallel ports
85 Initialize PC-compatible PnP ISA devices
86 Re-initialize onboard I/O ports
87 Configure Motheboard Configurable Devices (optional)
88 Initialize BIOS Data Area
89 Enable Non-Maskable Interrupts (NMIs)
8A Initialize Extended BIOS Data Area
8B Test and initialize PS/2 mouse
8C Initialize floppy controller
8F Determine number of ATA drives (optional)
90 Initialize hard-disk controllers
91 Initialize local-bus harddisk controllers
92 Jump to UserPatch2
93 Build MPTABLE for multi-processor boards
95 Install CD ROM for boot
96 Clear huge ES segment register
97 Fixup Multi Processor table
98 (1-2) Search for option ROMs. One long, two short beeps on checksum failure
99 Check for SMART Drive (optional)
9A Shadow option ROMs
9C Set up Power Management
9D Initialize security engine (optional)
9E Enable hardware interrupts
9F Determine number of ATA and SCSI drives
A0 Set time of day
A2 Check key lock
A4 Initialize Typematic rate
A8 Erase F2 prompt
AA Scan for F2 key stroke
AC Enter SETUP
AE Clear Boot flag
B0 Check for errors
B2 POST done – prepare to boot operating system
B4 (1) One short beep before boot
B5 Terminate QuietBoot (optional)
B6 Check password (optional)
B9 Prepare Boot
BA Initialize DMI parameters
BB Initialize PnP Option ROMs
BC Clear parity checkers
BD Display MultiBoot menu
BE Clear screen (optional)
BF Check virus and backup reminders
C0 Try to boot with INT 19
C1 Initialize POST Error Manager (PEM)
C2 Initialize error logging
C3 Initialize error display function
C4 Initialize system error handler
C5 PnPnd dual CMOS (optional)
C6 Initialize notebook docking (optional)
C7 Initialize notebook docking late
D2 Unknown interrupt
E0 Initialize the chipset
E1 Initialize the bridge
E2 Initialize the CPU
E3 Initialize system timer
E4 Initialize system I/O
E5 Check force recovery boot
E6 Checksum BIOS ROM
E7 Go to BIOS
E8 Set Huge Segment
E9 Initialize Multi Processor
EA Initialize OEM special code
EB Initialize PIC and DMA
EC Initialize Memory type
ED Initialize Memory size
EE Shadow Boot Block
EF System memory test
F0 Initialize interrupt vectors
F1 Initialize Real Time Clock
F2 Initialize video
F3 Initialize System Management Mode
F4 (1) Output one beep before boot
F5 Boot to Mini DOS
F6 Clear Huge Segment
F7 Boot to Full DOS

Что такое код unpack

Автоматические распаковщики исполняемых файлов предназначены для снятия навесных протекторов и упаковщиков с PE-файлов без применения других инструментов. Безусловно, ручная распаковка — это круто, но когда реверсинг поставлен на поток или не хватает навыков для снятия серьезных протекторов, то автоматические распаковщики будут очень кстати. Наиболее мощные распаковщики находятся в привате, но есть много хороших инструментов и в свободном доступе. Часть из них я выложу здесь с небольшими описаниями.

Начнем с универсальных распаковщиков. Лидер в этой категории — Quick Unpack, уникальный продукт, не имеющий аналогов в мире. Позволяет за несколько секунд снимать более сотни известных пакеров и протекторов, а также новые и неизвестные пакеры. Более подробное описание возможностей есть в прилагаемой документации. Над программой в разное время работали разные люди, сейчас разработку Quick Unpack поддерживает команда tPORt.

Quick Unpack 2.0 Final

Quick Unpack 2.1 Final

Quick Unpack 2.2 Final

Quick Unpack 4.3 x86+x64

RL!dePacker от ReversingLabs. Еще один универсальный распаковщик, также справляется более чем с сотней различных пакеров. К сожалению, неоднократно сталкивался с тем, что после распаковки получается нерабочий файл.

RL!dePacker 1.5 (RAR password: 123)

Dr.WEB FLY-CODE Unpacker от PE_Kill — универсальный распаковщик, основанный на движке FLY-CODE антивируса Dr.Web. Распаковывает многослойные пакеры и протекторы, в том числе и неизвестные, все промежуточные результаты сохраняются. Даже если файл не удается распаковать до рабочего состояния, секция кода в любом случае получается распакованной, а этого вполне достаточно для анализа. Распаковщик имеет достаточно большой размер, скачать его можно здесь.

Faster Universal Unpacker — универсальный распаковщик, или скорее оболочка для плагинов, созданных на движке TitanEngine. Если вы обладаете достаточными навыками, то можете сами написать нужные плагины для снятия различных упаковщиков.

Faster Universal Unpacker 0.1.1 Beta

UN-PACK — консольный анализатор и распаковщик исполняемых файлов. Несмотря на то, что программа была разработана еще во времена MS-DOS, она остается актуальной и сейчас. Распаковка современных пакеров и протекторов выполняется за счет внешних плагинов.

От универсальных распаковщиков перейдем к специализированным. Они заточены под строго определенные протекторы и работают, учитывая особенности их алгоритма защиты.

DilloDie — один из первых автоматических распаковщиков Armadillo от команды CiP. Прекрасно справляется со старыми версиями 3.xx-4.xx, на новых не работает. Было выпущено несколько версий распаковщика, я использую их все, т.к. на некоторых файлах разные версии дают более корректный результат.

ArmaGeddon от команды ARTeam — самый мощный распаковщик Armadillo на сегодняшний день. Справляется со всеми версиями протектора, включая последние. Я также держу под рукой несколько разных версий ArmaGeddon’а, иногда предыдущие версии дают более корректный результат. Последнюю версию всегда можно скачать с сайта разработчиков. Версия 1.9 поддерживает работу в Windows 7 x86, версия 2.0 достаточно успешно борется с самыми последними версиями Armadillo, но работоспособна только на системе Windows XP x86.

ACKiller от HoBleen — предназначен для автоматической распаковки программ, защищенных протектором ACProtect (в прошлом UltraProtect). Работает со всеми известными версиями ACProtect со всеми опциями защиты.

ACKiller 1.0b Final

Stripper от syd — единственный работающий распаковщик ASProtect, который есть в свободном доступе. Успешно справляется со старыми версиями ASProtect, на новых не работает. Из-за того, что разработчики протектора оперативно реагировали на появление новых версий Stripper’а, на некоторое время разработка была перенесена в приват. Но один мудак, имеющий доступ к приватным бета-версиям, выложил Stripper на паблик, из-за этого syd отказался от дальнейшей поддержки и разработки. Несмотря на то, что проект официально закрыт, его алгоритмы и модули используются в других распаковщиках, например, в Quick Unpack. Выложено несколько наиболее стабильных версий Stripper’а, так как они работают с разными версиями ASProtect.

Stripper 2.07 final + Stripper 2.07 ht

Stripper 2.11 rc2

Stripper 2.13 beta 2

Stripper 2.13 beta 9

Stripper 2.14 rc1

Stripper 2.14 beta 2

Stripper 2.14 beta 3


Наконец-то вышел из привата релиз DecomAS — мощнейшего распаковщика ASProtect от PE_Kill. За пять лет разработки он доведен практически до совершенства и с легкостью справляется со всеми версиями ASProtect, включая последние. К сожалению, DecomAS работоспособен только на Windows XP и новых версий пока что не ожидается.

DecomAS 1.7 beta1

Для распаковки старых версий ASProtect рекомендую использовать консольный распаковщик CASPR от SAC/UG2001. Он распаковывает ASProtect полностью в статичном режиме, то есть без запуска файла. Эх, были же светлые головы! CASPR уже давно не обновлялся, но до сих пор остается отличным примером того, как надо писать статические распаковщики.

Графическая оболочка для CASPR — CASPRGUI

ASPack unpacker от PE_Kill предназначен для распаковки файлов, накрытых упаковщиком ASPack. Снятие упаковщика происходит настолько виртуозно, что файл восстанавливается практически до исходного состояния. К сожалению, у меня не сработал на файлах, упакованных последней версией ASPack, приходится распаковывать такие файлы вручную.

ASPack unpacker 1.13

Themida / WinLicense Unpacker от китайских программистов. Первая публичная утилита, реально позволяющая автоматически снимать этот серьезный протектор. На новых версиях Themida не работает.

Themida / WinLicense Unpacker 2.0

Еще есть утилиты для распаковки Themida от команды AoRE, но добиться рабочего результата от этих распаковщиков мне так и не удалось.

Unpacker ExeCryptor от RSI — единственный работающий автоматический распаковщик для протектора ExeCryptor. Работает со всеми версиями линейки 2.x, включая последнюю. В некоторых случаях требуются дополнительные патчи для распакованного файла, остальное меняется в настройках распаковщика. Назначение настроек подробно расписано в прилагаемой документации.

Unpacker ExeCryptor 2.x.x RC2

Это далеко не полный набор утилит для автоматической распаковки, но с их помощью вы сможете справиться с большинством современных защит и упаковщиков. Другие инструменты можно без особого труда найти через поисковые системы или на тематических ресурсах.

Что такое код unpack

Насколько я понимаю, pack/unpack
по соглашению используются самим ядром для сериализации состояния объекта.
Т.е. pack должен перечислить все внутренние переменные объекта, важные для сохранения состояния, а unpack восстановить состояние объекта.

Насколько я понимаю, pack/unpack
изначально используются ядром для передачи состояния объекта в трехуровневой системе (с клиента на сервер и наоборот).

В том числе они же используются и в saveLast/getLast.

Подробного описания этих методов и их предназначения не видел (не помню, чтобы видел ) Какие-то намеки содержатся в презентациях, которые идут в каталоге DBD2000

вот что я нашел
в
AxaptaDevelopmentBestPractices\Application Desine\Desine Pattern\Pack-unpack pattern

These methods could form the basis for an interface called «Packable», in a later version.

и я так понял, что это будет реализовано в будущем
.

Можно поподробнее? В каких случаях (грубо говоря, по какому событию) происходит эта «передача состояния»? Мы-то сейчас в 2-ух уровнях программируем, а вот о том, что в 3-х уровнях наши классы работать не будут, может и не знаем.

Maxim Gorbunov
Посмотреть профиль
Отправить личное сообщение для Maxim Gorbunov
Найти ещё сообщения от Maxim Gorbunov

В classDeclaration класса можно описать список атрибутов класса, значение которых должно сохраняться в базе (в таблице SysUtilElements) до следующего использования класса.
Их список описывается с помощью макроса ParmList.

Для того, чтобы описание этого макроса было корректно обработано при компиляции и заработал механизм сохранения атрибутов надо в потомке перекрыть методы pack() и unPack() и скопировав в них код запаковки / распаковки. Иногда в этих методах производится дополнительная обработка добытых из базы параметров(SalesFormLetter_Quotation.unPack()).

Добыча и сохранение атрибутов класса потомка RunBase в базе производится методами getLast(), SaveLast(). у других классов приходиться непосредственно вызывать класс xSysLastValue.

Это нормально работает с любой конфигурацией и 2-х и 3-х уровневой.

AlGol, можно поподробнее про ParmList?

Такого макроса в AOT я не нашел. Если это макрос, который вы описываете сами в classDeclaration, то почему он должен называться именно ParmList? Есть классы, которые к нему обращаются по этому имени?

Таблицы SysUtilElements в приложении, кажется, нет. Есть форма с таким названиям, но она выводит данные таблицы UtilElements. В таблице UtilElements нет поля для сохранения произвольных данных (по крайней мере, я не нашел). xSysLastValue и RunBase, который использует xSysLastValue, сохраняют данные в таблице SysLastValue.

Maxim Gorbunov
Посмотреть профиль
Отправить личное сообщение для Maxim Gorbunov
Найти ещё сообщения от Maxim Gorbunov

Глубоко извиняюсь за дезинформацию, что-то я вчера перегрелся.

Макрос называется CurrentList, а не ParmList. Я попробовал обозвать по-другому (исправив название в методах pack() и unpack()) — вроде все работает, но зачем надо путать и себя и других упражняясь в придумывании названий?

параметры храняться, конечно же, в SysLastValue.

unpack

(PHP 4, PHP 5, PHP 7)

unpack — Распаковать данные из бинарной строки

Описание

Распаковывает данные из бинарной строки в массив в соответствии с заданным в format формате.

Распакованные данные хранятся в ассоциативном массиве. Для осуществления этого необходимо обозначить различные коды форматов и разделить их с помощью слеша /. Можно также передать замещающий аргумент, с помощью которого каждый ключ массива будет иметь порядковый номер после заданного имени.

Список параметров

См. функцию pack() для разъяснения кодов форматов.

Смещение, с которого необходимо начать распаковку.


Возвращаемые значения

Возвращает ассоциативный массив, содержащий распакованные элементы бинарной строки.

Список изменений

Для поддержания совместимости с Perl сделано следующее:

Код «a» теперь сохраняет завершающие NULL-байты.

Код «A» теперь удаляет все завершающие пробельные символы ASCII (пробелы, табуляцию, переносы строк, возврат каретки, и NULL-байты).

Код «Z» добавлен для NULL-дополненными строками и удаляет завершающие NULL-байты.

Примеры

Пример #1 Пример использования unpack()

Результат выполнения данного примера:

Пример #2 Пример использования unpack() с замещающим аргументом

Результат выполнения данного примера:

Примечания

Необходимо отметить, что PHP хранит целые значения со знаком (signed). Если распаковать значение типа large unsigned long и оно будет иметь тот же размер, что и хранимое значение PHP, то результатом будет отрицательное число, даже если было указано распаковывать без знака (unsigned).

Если не назвать элемент, то будут использованы числовые индексы, начиная с 1. Если не обозначить более одного элемента, то это значит, что некоторые данные будут перезаписаны, так как нумерация перезапускается с 1 для каждого такого элемента.

Пример #3 Пример использования unpack() с безымянными ключами

Результат выполнения данного примера:

Обратите внимание, что первое значение из спецификатора c перезаписывается первым значением из спецификатора n.

Смотрите также

  • pack() — Упаковать данные в бинарную строку

User Contributed Notes 25 notes

A helper class to convert integer to binary strings and vice versa. Useful for writing and reading integers to / from files or sockets.

class int_helper
<
public static function int8 ( $i ) <
return is_int ( $i ) ? pack ( «c» , $i ) : unpack ( «c» , $i )[ 1 ];
>

public static function uInt8 ( $i ) <
return is_int ( $i ) ? pack ( «C» , $i ) : unpack ( «C» , $i )[ 1 ];
>

public static function int16 ( $i ) <
return is_int ( $i ) ? pack ( «s» , $i ) : unpack ( «s» , $i )[ 1 ];
>

public static function uInt16 ( $i , $endianness = false ) <
$f = is_int ( $i ) ? «pack» : «unpack» ;

if ( $endianness === true ) < // big-endian
$i = $f ( «n» , $i );
>
else if ( $endianness === false ) < // little-endian
$i = $f ( «v» , $i );
>
else if ( $endianness === null ) < // machine byte order
$i = $f ( «S» , $i );
>

return is_array ( $i ) ? $i [ 1 ] : $i ;
>

public static function int32 ( $i ) <
return is_int ( $i ) ? pack ( «l» , $i ) : unpack ( «l» , $i )[ 1 ];
>

public static function uInt32 ( $i , $endianness = false ) <
$f = is_int ( $i ) ? «pack» : «unpack» ;

if ( $endianness === true ) < // big-endian
$i = $f ( «N» , $i );
>
else if ( $endianness === false ) < // little-endian
$i = $f ( «V» , $i );
>
else if ( $endianness === null ) < // machine byte order
$i = $f ( «L» , $i );
>

return is_array ( $i ) ? $i [ 1 ] : $i ;
>

public static function int64 ( $i ) <
return is_int ( $i ) ? pack ( «q» , $i ) : unpack ( «q» , $i )[ 1 ];
>

public static function uInt64 ( $i , $endianness = false ) <
$f = is_int ( $i ) ? «pack» : «unpack» ;

if ( $endianness === true ) < // big-endian
$i = $f ( «J» , $i );
>
else if ( $endianness === false ) < // little-endian
$i = $f ( «P» , $i );
>
else if ( $endianness === null ) < // machine byte order
$i = $f ( «Q» , $i );
>

return is_array ( $i ) ? $i [ 1 ] : $i ;
>
>
?>

Usage example:
( «Content-Type: text/plain» );
include( «int_helper.php» );

echo int_helper :: uInt8 ( 0x6b ) . PHP_EOL ; // k
echo int_helper :: uInt8 ( 107 ) . PHP_EOL ; // k
echo int_helper :: uInt8 ( «\x6b» ) . PHP_EOL . PHP_EOL ; // 107

echo int_helper :: uInt16 ( 4101 ) . PHP_EOL ; // \x05\x10
echo int_helper :: uInt16 ( «\x05\x10» ) . PHP_EOL ; // 4101
echo int_helper :: uInt16 ( «\x05\x10» , true ) . PHP_EOL . PHP_EOL ; // 1296

echo int_helper :: uInt32 ( 2147483647 ) . PHP_EOL ; // \xff\xff\xff\x7f
echo int_helper :: uInt32 ( «\xff\xff\xff\x7f» ) . PHP_EOL . PHP_EOL ; // 2147483647


// Note: Test this with 64-bit build of PHP
echo int_helper :: uInt64 ( 9223372036854775807 ) . PHP_EOL ; // \xff\xff\xff\xff\xff\xff\xff\x7f
echo int_helper :: uInt64 ( «\xff\xff\xff\xff\xff\xff\xff\x7f» ) . PHP_EOL . PHP_EOL ; // 9223372036854775807

I had a situation where I had to unpack a file filled with little-endian order double-floats in a way that would work on either little-endian or big-endian machines. PHP doesn’t have a formatting code that will change the byte order of doubles, so I wrote this workaround.

/*The following code is a workaround for php’s unpack function
which does not have the capability of unpacking double precision
floats that were packed in the opposite byte order of the current
machine.
*/
function big_endian_unpack ( $format , $data ) <
$ar = unpack ( $format , $data );
$vals = array_values ( $ar );
$f = explode ( ‘/’ , $format );
$i = 0 ;
foreach ( $f as $f_k => $f_v ) <
$repeater = intval ( substr ( $f_v , 1 ));
if ( $repeater == 0 ) $repeater = 1 ;
if ( $f_v < 1 >== ‘*’ )
<
$repeater = count ( $ar ) — $i ;
>
if ( $f_v < 0 >!= ‘d’ ) < $i += $repeater ; continue; >
$j = $i + $repeater ;
for ( $a = $i ; $a $j ; ++ $a )
<
$p = pack ( ‘d’ , $vals [ $i ]);
$p = strrev ( $p );
list ( $vals [ $i ]) = array_values ( unpack ( ‘d1d’ , $p ));
++ $i ;
>
>
$a = 0 ;
foreach ( $ar as $ar_k => $ar_v ) <
$ar [ $ar_k ] = $vals [ $a ];
++ $a ;
>
return $ar ;
>

list ( $endiantest ) = array_values ( unpack ( ‘L1L’ , pack ( ‘V’ , 1 )));
if ( $endiantest != 1 ) define ( ‘BIG_ENDIAN_MACHINE’ , 1 );
if ( defined ( ‘BIG_ENDIAN_MACHINE’ )) $unpack_workaround = ‘big_endian_unpack’ ;
else $unpack_workaround = ‘unpack’ ;
?>

This workaround is used like this:

function foo () <
global $unpack_workaround ;
$bar = $unpack_workaround ( ‘N7N/V2V/d8d’ , $my_data );
//.
>

?>

On a little endian machine, $unpack_workaround will simply point to the function unpack. On a big endian machine, it will call the workaround function.

Note, this solution only works for doubles. In my project I had no need to check for single precision floats.

This is about the last example of my previous post. For the sake of clarity, I’m including again here the example, which expands the one given in the formal documentation:

$array[chars1] = 65
$array[chars2] = 65
$array[int] = 65

Here, we assume that the ascii code for character ‘A’ is decimal 65.

I hope this is clearer now,

If having a zero-based index is useful/necessary, then instead of:

$int_list = unpack(«s*», $some_binary_data);

$int_list = array_merge(unpack(«s*», $some_binary_data));

This will return a 0-based array:

$int_list[0] = x
$int_list[1] = y
$int_list[2] = z
.

rather than the default 1-based array returned from unpack when no key is supplied:

$int_list[1] = x
$int_list[2] = y
$int_list[3] = z
.

It’s not used often, but array_merge() with only one parameter will compress a sequentially-ordered numeric-index, starting with an index of [0].

Suppose we need to get some kind of internal representation of an integer, say 65, as a four-byte long. Then we use, something like:

X-Powered-By: PHP/4.1.2
Content-type: text/html

(That is the string «A\0\0\0»)

Now we want to go back from string «A\0\0\0» to number 65. In this case we can use:

And this outpus:
X-Powered-By: PHP/4.1.2
Content-type: text/html

Let’s give the array key a name, say «mykey». In this case, we can use:

An this outpus:
X-Powered-By: PHP/4.1.2
Content-type: text/html

The «unpack» documentation is a little bit confusing. I think a more complete example could be:

whose output is:

X-Powered-By: PHP/4.1.2
Content-type: text/html

Note that the format string is something like
[ ] [] [/ . ]

I hope this clarifies something

be aware of the behavior of your system that PHP resides on.

On x86, unpack MAY not yield the result you expect for UInt32

This is due to the internal nature of PHP, being that integers are internally stored as SIGNED!

For x86 systems, unpack(‘N’, «\xff\xff\xff\xff») results in -1
For (most?) x64 systems, unpack(‘N’, «\xff\xff\xff\xff») results in 4294967295.

This can be verified by checking the value of PHP_INT_SIZE.
If this value is 4, you have a PHP that internally stores 32-bit.
A value of 8 internally stores 64-bit.

To work around this ‘problem’, you can use the following code to avoid problems with unpack.
The code is for big endian order but can easily be adjusted for little endian order (also, similar code works for 64-bit integers):

function _uint32be ( $bin )
<
// $bin is the binary 32-bit BE string that represents the integer
if ( PHP_INT_SIZE 4 ) <
list(, $h , $l ) = unpack ( ‘n*’ , $bin );
return ( $l + ( $h * 0x010000 ));
>
else <
list(, $int ) = unpack ( ‘N’ , $bin );
return $int ;
>
>
?>

Do note that you *could* also use sprintf(‘%u’, $x) to show the unsigned real value.
Also note that (at least when PHP_INT_SIZE = 4) the result WILL be a float value when the input is larger then 0x7fffffff (just check with gettype);

Hope this helps people.

The documentation is clear that an integer read using an unsigned format character will still be stored as a signed integer. The often-cited work-around is to use sprintf(‘%u’, $bigint) to properly display integers with the MSB set.

In the case where the numeric value is more important than how it’s displayed, you can still work with other large integers using intval() to «upgrade» your existing unsigned integers.

I had a problem comparing 32-bit integers read from files with hard-coded constants (file signatures tend to need this). Here’s what I did to avoid converting everything into strings:


$packed = pack ( ‘N’ , $bigint );

list( $unpacked ) = array_values ( unpack ( ‘N’ , $packed ));

//The $bigint remains an unsigned integer.
//Even though their bit-wise values are identical, comparison fails.

echo ‘bigint ‘ ,
( $bigint == $unpacked ? ‘==’ : ‘!=’ ),
» unpacked\n» ;

//intval() triggers a re-interpretation of $bigint.
//$bigint is internally compared as a signed integer.
//Since the bit-wise value of $bigint never changes, comparison succeeds.

echo ‘intval(bigint) ‘ ,
( intval ( $bigint ) == $unpacked ? ‘==’ : ‘!=’ ),
» unpacked\n» ;

?>

It works, but it’s a little backwards. If anyone has any ideas on how to «downgrade» a signed integer into an unsigned integer without using strings, that would be a valuable note to add to the documentation.

Another option for converting binary data into PHP data types, is to use the Zend Framework’s Zend_Io_Reader class:
http://bit.ly/9zAhgz

There’s also a Zend_Io_Writer class that does the reverse.

Reading a text cell from an Excel spreadsheet returned a string with low-order embedded nulls: 0x4100 0x4200 etc. To remove the nulls, used

= implode ( » , explode ( «\0» , $strWithNulls ) );
?>

(unpack() didn’t seem to help much here; needed chars back to re-constitute the string, not integers.)

If no key name is given [e.g., unpack(‘C*’,$data)], the keys are simply integers starting at 1, and you have a standard array. (I know of no way to get the array to start at zero.)

If you use multiple types, you must give a key name for all of them (except optionally one), because the key counter is reset with each slash. For example, in unpack(‘n2/C*’,$data), indices 1 and 2 of the returned array are filled by integers (‘n’), then overwritten with characters (‘C’).

As stated above, «if you unpack a large unsigned long and it is of the same size as PHP internally stored values the result will be a negative number even though unsigned unpacking was specified.»

To restore the original unsigned value, you could do this :

Warning: This unpack function makes the array with keys starting at 1 instead of starting at 0.

For example:
function read_field ( $h ) <
$a = unpack ( «V» , fread ( $h , 4 ));
return fread ( $h , $a [ 1 ]);
>
?>

If you just want to extract a dword/long int from a binary string, the following code works beautifully (intel endian):

$Number = ord($Buffer<0>) | (ord($Buffer<1>)

Here’s a demonstration concerning the speed of unpacking files:
So let’s see which method is fastest between FREAD or SUBSTR?

I was creating a script that could read scenario files from a game, and render a preview of its terrain. The terrain structure within each file was huge (between 100,000 — 1,000,000 blocks containing 3 bits of data each). Therefore, I spent much effort to ensure it was fast and robust.

Method 1: This method retrieves the 3 bits of data found in each block. It uses the loop of widthxheight and implode+unpack+substr each block:
for ( $Y = 0 ; $Y $width * $height ) ; $Y ++ ) <
$Output [ Map ] [ $Y ] [ TerrainID ] = implode ( null , unpack ( ‘c1’ , substr ( $Input , $Line ) ) ) ; $Line += 1 ;
$Output [ Map ] [ $Y ] [ Elevation ] = implode ( null , unpack ( ‘c1’ , substr ( $Input , $Line ) ) ) ; $Line += 1 ;
$Output [ Map ] [ $Y ] [ Unknown ] = implode ( null , unpack ( ‘c1’ , substr ( $Input , $Line ) ) ) ; $Line += 1 ;
>
//The average microtime was: 2.9 sec
?>
Note that it takes even more time if you use a custom function to implement the implode+unpack+substr functions.

Now. This method uses the FREAD function:
for ( $Y = 0 ; $Y $width * $height ) ; $Y ++ ) <
$Output [ Map ] [ $Y ] = unpack ( ‘c3’ , fread ( $sc , 3 ) ) ;
>
//Average microtime was: 0.7 sec
?>
I recommend using the FREAD method instead of SUBSTR.

Another test. This method is 10x faster than the above. This does not use the FOR loop:
[ Map ] [ Data ] = unpack ( ‘c’ . ( $width * $height ) , stream_get_contents ( $sc ) ) ;
//Average microtime: 0.08 — 0.05 sec
?>

If you want to read files much faster, you should try to reduce the number of loops and use the unpack function to its simplest and robust method.

The script following is a example how to save more than one values on file separating its with «\r\n» and how to recovering its values.

// Save two integer values in a binary file
$nomearq = «./teste.bin» ;
$valor = 123 ;
$ptrarq = fopen ( $nomearq , «wb» );
$valorBin = pack ( «L» , $valor );
echo «First value ( $valor ) packed with » ;
echo fwrite ( $ptrarq , $valorBin ). » bytes
» ;
echo «Separator \\r\\n with » ;
echo fwrite ( $ptrarq , «\r\n» ). » bytes
» ;
$valor = 456 ;
$valorBin = pack ( «L» , $valor );
echo «Second value ( $valor ) packed with » ;
echo fwrite ( $ptrarq , $valorBin ). » bytes
» ;
fclose ( $ptrarq );

// Recover the saved values
$ptrarq = fopen ( $nomearq , «rb» );
$valorBin = file ( $nomearq , filesize ( $nomearq ));
echo «
The reading values is:
» ;
foreach( $valorBin as $valor ) <
$valor = unpack ( «L» , $valor );
print_r ( $valor );
echo «
» ;
>
fclose ( $ptrarq );
?>

Results:
First value (123) packed with 4 bytes
Separator \r\n with 2 bytes
Second value (456) packed with 4 bytes

The reading values is:
Array ( [1] => 123 )
Array ( [1] => 456 )

Что такое код unpack

При размещении контента, по возможности, прикрепляйте инструкцию

Правила темы:
1. Разрешается выкладывать только проверенный софт (так же разрешено отписываться и давать пояснения по уже имеющимуся софту — на каком дивайсе и каким образом испытан).
2. К каждому инструменту должно быть описание (принадлежность, ОС, мануал).
3. Запрещается выкладывать и давать ссылки на нелегальный (пиратский) контент.
4. Запрещается обсуждение софта в теме.

Сообщение отредактировал Fashionon — 18.02.16, 11:12

  • Бубен Одмина — инструмент для тонкой настройки серверов и не только.
  • Java Development Kit — комплект разработчика приложений на языке Java
  • Android SDK — инструментарий для разработки
  • Busybox — набором утилит командной строки UNIX (Linux) систем
  • UnicodeConverter.bat — Преобразование юникода в человеко-читаемый язык и обратно.
  • ApkTools для Андроид 6.0.1

  • ApktoolMod — на базе apktool 2.0.2
  • Tickle My Android — Многоцелевая кухня, для редактирования системных ресурсов
  • FMD Apktool OS Linux — Утилита для разборки/сборки приложений под Linux от команды FMD
  • Apktool на OS LinuxУстановка и использование apktool на OS Linux Ubuntu 14.04-64bit. Автоматическая установка
  • APKTool — Готовый набор, включающий всё, что нужно для разборки файлов apk
  • Batch ApkTool — Позволяет пакетно деодексировать, декомпилировать, изменять ресурсы и smali-код (переход в тему)
  • Apk Manager — Готовый набор, включающий всё, что нужно для разборки файлов apk
  • ColorEdit — Программа позволяет с удобством редактировать файл color.xml
  • Менеджер apk, для разборки, сборки, подписи — Для UBUNTU.На Русском языке.
  • Easy Debugging Tool — Приложение для определения запущенного активити приложения
  • Public ID Converter — Утилита для поиска и замены id из public.xml в .smali
  • Конвертер смали — Последнее время много инструкций не подходят друг кдругу из за версий smali решение данной проблемы не большим скриптом
  • Список программ для работы с приложениями (.apk) на андроид устройстве.
  • Carliv Image Kitchen for Android — Утилита для распаковки/упаковки boot.img или recovery.img под WINDOWS и Linux.
  • Скрипт для перепаковки boot.img/recovery.img — Перепаковка boot.img/recovery.img на уст-ве без ПК
  • Image Factory — работа с образом *.img на андроид
  • BOOT & RECOVERY REPACKER — инструмент для перепаковки boot.img и recovery.img в LINUX
  • split_bootimg — Распаковка boot.img
  • mkbootimg_tools-master — утилита под Линух с поддержкой dtb, корректно перепаковывающая msm boot.img recovery.img
  • Android Image Kitchen — Unpack/Repack Kernel/Recovery + ramdisk — Утилита для перепаковки ядер и рекавери под виндовс
  • KERNEL Tools — набор утилит для перепаковки ядер
  • UBUNTU — Настройка и подготовка к работе с исходниками, ядрами, приложениями и прошивками под ANDROID
  • JoelDroid Lollipop Batch Deodexer — Инструмент, для пакетного деодексирование приложений в андроид Lollipop
  • Deodexer for Android Runtime — Инструмент для деодексации приложений Android 5.0 и выше
  • xUltimate — Пакет утилит для деодексирования системных apk.
  • AutoDEOTool — деодекс прошивок
  • DeodexForART(Lollipop)_v2.2.2 — Полноавтоматический deodexed инструмент для Lollipop
  • FMD Tools — Новая утилита для удобной обработки файлов прошивок
  • Утилиты для RockChip — 100% рабочие прошивки под стоковый прошивальщик, ОС Убунту
  • Cygwin — UNIX-подобная среда и интерфейс командной строки для Microsoft Windows
  • Cygwin — подробная инструкция к UNIX-подобная среда и интерфейс командной строки для Microsoft Windows
  • Android-Kitchen — Инструмент для создания кастомных прошивок на базе Linux.
  • УСТАНОВКА Android Kitchen — by dsixda (xda-developers.com) — ДЛЯ MAC OS X 10.8.x
  • Odin3 ROM Editor — Только для Linux
  • Сборка прошивки на Samsung Galaxy S i9000 для Odin.[/url]
  • New TuxBox Flash Tools v.1.0 — утилитка для работы с образами cramfs и yaffs2

  • Компиляция Android 4.1 Jelly Bean в Ubuntu Linux
  • [DEV_TOOL]HTC ROM-EXTRACTOR — Инструмент для работы с прошивками HTC в LINUX
  • [DEV_TOOL]TAR.MD5 PACKAGER — Инструмент перепаковки прошивок и их отдельных частей в .tar.md5 для последующей прошивки через Odin под Windows
  • ROM Helper — комплексный подход по работе с прошивками из под Windows
  • jBART — Комбайн для работы с прошивками на базе Android OS, a также с файлами apk
  • Фирменный консольный инструмент RockChip — Позволяет сделать все что нужно для разработчика
  • IEEE Calculator (IEEE Floating Point Calculator) — перевод значений из float в HEX и обратно IEEE Floating Point Calculator
  • iCatalyst — приложение для уменьшения веса картинок при сохранении качества
  • Draw9patch утилита для работы с *.9.png изображениями.
  • HTML Color Picker — С помощью этого приложения, вы, можете быстро посмотреть сочетание текста и фона.
  • PNG_convertor_v2.3 — Инструмент для пакетного преобразования индексированных .png картинок в неиндексированные
  • 9 Patch Editor — Это приложение помогает редактировать графические ресурсы Android-приложений и тем.
  • 9Patch Resizer — групповое изменение размеров графики
  • Android Color Tool
  • Преобразование цвета (Инструмент) — инструмент для преобразования цветовых кодов между HEX, SMALI и XML.
  • HEIMDALL — прошивальщик OS: Linux, OS X, Windows
  • HEIMDALL FLASHER SGSIII/SGNII SUPPORT — инструмент на основе известного прошивальщика Heimdall — версия для прошивки в LINUX
  • COPERFIELD ROM MAKER v.0.0.5 — инструмент для создания прошивок для некоторых девайсов Samsung
  • Установка пакета «android-tools» (adb и fastboot) в Ubuntu 12.04, 11.10 и 11.04
  • Porting Tool by fagci — скрипт для портирования прошивок Android. ОС: Windows XP+
  • Packing by tar-md5 — Небольшой инструмент для автоматизации упаковки в tar.md5 для UBUNTU
  • ADB RUN — упрощенное использование ADB
    HUAWEI Multi-Tool -Позволяет выполнять последоваетьность команд fastboot, adb и adb shell, помогая Вам прозводить множество известных операций без лишних телодвижений.

Сообщение отредактировал Димар — 05.12.17, 11:46

Java Development Kit (сокращенно JDK) — бесплатно распространяемый Oracle Corporation (ранее Sun Microsystems) комплект разработчика приложений на языке Java, включающий в себя компилятор Java (javac), стандартные библиотеки классов Java, примеры, документацию, различные утилиты и исполнительную систему Java (JRE). В состав JDK не входит интегрированная среда разработки на Java, поэтому разработчик, использующий только JDK, вынужден использовать внешний текстовый редактор и компилировать свои программы, используя утилиты командной строки.

Все современные интегрированные среды разработки на Java, такие, как NetBeans, Sun Java Studio Creator, IntelliJ IDEA, Borland JBuilder, Eclipse, опираются на сервисы, предоставляемые JDK. Большинство из них для компиляции Java-программ используют компилятор из комплекта JDK. Поэтому эти среды разработки либо включают в комплект поставки одну из версий JDK, либо требуют для своей работы предварительной инсталляции JDK на машине разработчика.

Доступны полные исходные тексты JDK, включая исходные тексты самого Java-компилятора.

Материал из Википедии — свободной энциклопедии
Приложения для Android являются программами в нестандартном байт-коде для виртуальной машины Dalvik.

Google предлагает для свободного скачивания инструментарий для разработки (Software Development Kit), который предназначен для x86-машин под операционными системами Linux, Mac OS X (10.4.8 или выше), Windows XP и Windows Vista. Для разработки JDK 5 или более новый.

Разработку приложений для Android можно вести на языке Java (не ниже Java 1.5). Существует плагин для Eclipse — «Android Development Tools» (ADT), предназначенный для Eclipse версий 3.3-3.6. Для IntelliJ IDEA также существует плагин, облегчающий разработку Android-приложений. Сообщается, что для среды разработки NetBeans IDE разработан экспериментальный плагин. Кроме того существует Motodev Studio for Android, которая представляет собой комплексную среду разработки, основанную на базе Eclipse и позволяет работать непосредственно с Google SDK.

1. Извлечь cygwin архив и запустить the setup file.
2. Выбрать Install from Local Directory:

Версия Описание
7.2.0 Типы float и double поддерживают как обратный, так и прямой порядок передачи байтов.
7.1.0 Добавлен необязательный параметр offset .
5.5.0

4. Указать путь к Package Directory, она находится в распакованном архиве cygwin:

6. Нажать символ который указан на рисунке, чтобы изменить статус на Install и нажать Next

2. Извлеките архив с пустой dbdata.rfs Empty_dbdata.rfs_file.zip ( 2,09 КБ )
и поместите вту же директорию:


3. Запустите cygwin из ярлыка на рабочем столе и проделайте следующее:
Укажите директорию файлами — cd c:/ваша папка
Создание PDA.tar.md5:
Создание PDA.tar file — tar -c param.lfs zImage factoryfs.rfs dbdata.rfs >> PDA_JS5.tar
Создание MD5 hash — md5sum -t PDA_JS5.tar >> PDA_JS5.tar
Добавление MD5 hash информации to the tar file — mv PDA_JS5.tar PDA_JS5.tar.md5

Создание Phone.tar — tar -c modem.bin >> PHONE_JPY.tar
Создание MD5 hash — md5sum -t PHONE_JPY.tar >> PHONE_JPY.tar
Добавление MD5 hash информации to the tar file — mv PHONE_JPY.tar PHONE_JPY.tar.md5

Создание CSC.tar — tar -c cache.rfs >> CSC_XENJS3.tar
Создание MD5 hash — md5sum -t CSC_XENJS3.tar >> CSC_XENJS3.tar
Добавление MD5 hash информации to the tar file — mv CSC_XENJS3.tar CSC_XENJS3.tar.md5

Все команды для упаковки и создания единого tar.md5 файла (3 команды) могут быть выполнены как единая команда как показано на примере:

Одной из причин неудачной контрольной суммы MD5 — это переименование его после упаковки, так что переименовывать упакованные файлы нельзя.
После перепаковки архивов можно произвести их тестирование.
Запустите Odin и подставте упакованные файлы и нажмите старт, должно получиться как на рисунке

ColorEdit.zip ( 13,22 КБ )

Сообщение отредактировал Димар — 25.01.16, 20:24

Сообщение отредактировал Димар — 25.01.16, 20:32

Android Kitchen — by dsixda (xda-developers.com)
Инструмент для создания кастомных прошивок на базе Linux.

Скриптовая программа предназначен для использования в консоли.
Для работы программы требуется dev-java/sun-jdk либо открытая его реализация dev-java/icedtea (для своего дистрибутива ищите в менеджере пакетов)

HTC Aria / Liberty
HTC Desire
HTC Desire HD / Inspire 4G
HTC Desire S
HTC Desire Z / Vision / T-Mobile G2
HTC Dream / G1
HTC Droid Eris
HTC Evo 3D
HTC Evo 4G
HTC Evo View 4G (untested)
HTC Evo Shift 4G
HTC Flyer (untested)
HTC HD2
— Use NAND ROM method (Please follow this thread for details)
HTC Hero / G2 Touch
HTC Incredible
HTC Incredible 2
HTC Incredible S
HTC Legend
HTC Magic / myTouch 3G
HTC myTouch 3G Slide
HTC myTouch 4G / Glacier
HTC Nexus One
HTC Rezound
HTC Sensation
HTC Tattoo / Click
HTC Thunderbolt
HTC Wildfire / Buzz
HTC Wildfire S (untested)

Acer Liquid
Dell Streak 7
Huawei Ideos X6
— Please follow this thread for details
Huawei U8100/U8110/U8120/U8150/U8160/U8180/U8650
Huawei U8220 / T-Mobile Pulse
LG Ally
LG GT540 Optimus
LG Optimus 2X (P990)
LG Optimus Black (unconfirmed)
LG Optimus G2X (P999)
LG P500
— Please follow this thread for details
LG Shine Plus
LG Vortex
Micromax A60
Motorola Atrix (unconfirmed)
Motorola CLIQ / CLIQ XT
Motorola Droid
Motorola Droid Bionic
— Please follow this thread for details
Motorola Milestone (unconfirmed)
— You may need to remove the boot.img before building
Samsung Galaxy Nexus (untested, ‘maguro’ and ‘toro’ versions only)
Samsung Galaxy S (GT-I9000 and most variants)
— Please follow this thread for details
Samsung Galaxy S Plus (GT-I9001)
— Please follow this thread for details
Samsung Galaxy S2 (GT-I9100 and Exynos CPU variants)
— Please follow this thread for details
Samsung Galaxy S2 LTE (AT&T Skyrocket, T-Mobile SGH-T989 and equivalent)
— Please follow this thread for details
Samsung Galaxy W (GT-I8150, untested)
Samsung Nexus S / Nexus S 4G
Sony Xperia X10 / X10 Mini / X10 Mini Pro
— Build ROM without boot.img (please follow this thread for details)
ZTE Blade / Orange San Francisco

Заходим в папку

1. Set up working folder from ROM — Распаковывает прошивку из original_update
2. Add root permissions — Добавить root права
3. Add BusyBox — Добавить BusyBox
4. Disable boot screen sounds — Выключить звук загрузки
5. Add wireless tethering — Добавляет функцию WiFi-тетеринга (раздачи доступа к сети Интернет через WiFi)
6. Zipalign all *.apk files to optimize RAM usage — Уменьшаем размер apk в памяти
7. Change wipe status of ROM — Автоматически полный wipe
8. Change name of ROM — Изменяем имя прошивки
9. Check update-script for errors — Проверить update-script на ошибки
10. Show working folder information — Показать информацию распакованной прошивки

11 — Deodex files in your ROM — Деодексирование
12 — Add task killer tweak for speed (stock ROM only) — Твик Task killer
13 — Add /data/app functionality — Добавить программу в прошивку
14 — Add Nano text editor + sysro/sysrw — Добавить консольный текстовый редактор Nano
15 — Add Bash (command shell) — Добавить Bash shell оболочку
16 — Add Apps2SD — Перенос программ на SD
17 — Add /etc/init.d scripts support (busybox run-parts) — Поддержка запуска busybox
18 — Add custom boot animation functionality — Возможность добавлять кастомную заставку
19 — Porting tools (experimental)
20 — Tools for boot image (unpack/re-pack/etc.) — Работа с ядром
21 — Unpack data.img — Распаковать data.img
22 — Sign APK or ZIP file(s) Цифровая подпись apk
23 — Convert update-script or updater-script Конвертировать update-script
24 — Miscellaneous optins / Plugin scripts

99. Build ROM from working folder — Собрать прошивку в установочный zip
00. About/Update kitchen — Обновить кухню
0. Exit — Выход

В процессе работы есть детальное описание всех действий, просто переводите и у вас не будет ни каких трудностей.

Сообщение отредактировал Димар — 25.01.16, 20:51

Hariec,
Вот более расширенная и дополненая версия кухни, как тема сделано на 4pda .
Там есть альт-меню на русском))
Создание кастомных прошивок

Сообщение отредактировал alexyuh — 17.03.12, 12:11

Пакет под названием «android-tools», в который включены консольные утилиты «adb» и «fastboot», недавно был загружен в официальные репозитории Ubuntu 12.10 Quantal Quetzal. Команда WebUpd8 получила просьбу загрузить этот пакет в PPA-репозиторий для старых релизов Ubuntu, так что пакет был бэкпортирован на Ubuntu 12.04, 11.10 и 11.04.
«adb» (Android Debug Bridge) — консольная утилита, которую вы можете использовать, чтобы получать доступ к файловой системе на Android-устройстве; её можно использовать для отправки команд, передачи или получения файлов, установки и удаления приложения и многого другого.

«fastboot» — консольная утилита, которую вы можете использовать для открытия файловой системы на Android-устройствах через USB.
Эти утилиты также можно найти и в Android SDK; использование этого пакета всего лишь альтернативный и более простой путь их установки в Ubuntu. Также, пакеты в PPA доступны и для 32-bit, и для 64-bit, а Android SDK от Google доступен только для 32bit.

Установка пакета «android-tools» (adb и fastboot) в Ubuntu 12.04, 11.10 и 11.04

Внимание! Эта инструкция не позволит вам создать полнофункциональную прошивку сразу, но даст вам возможность начать работать над ней.Исходники занимают примерно 6Gb. Вам нужно около 25Gb свободного места чтобы скомпилировать 1 билд и до 80Gb (или больше) для полного комплекта сборки.Перед началом компиляции Jelly Bean на Ubuntu необходимо пройти несколько шагов по настройке компьютера, чтобы получить готовый инструмент.

Вам необходимо следующее:

JDK 6, если вы хотите скомпилировать Jelly bean. Вы можете скачать его с java.sun.com
или:

Python 2.4 — 2.7, который можно загрузить из python.org или:

Git 1.7 или новее. Вы можете найти его в git-scm.com или:

Установите необходимые пакеты. 64-bit (рекомендуется):

В новых версиях Ubuntu, таких как 11.10 возможно потребуется выполнить следующие действия:

В Ubuntu 12.04 в настоящее время есть только экспериментальная поддержка и не гарантируется работа по другим веткам отличным от master.

Теперь настроим USB:

Вставьте это внутрь пустого текстового файла

Сохраните файл и закройте его, а затем выполните следующую команду:

Что такое код unpack

Некоторые существующие библиотеки для передачи сообщений обеспечивают функции вида
pack/unpack (распаковка и упаковка) для передачи несмежных данных. При этом пользователь явно пакует данные в смежный буфер перед их посылкой и распаковывает смежный буфер при приеме. Производные типы данных, которые описаны в разделе 3.12, позволяют в большинстве случаев избежать упаковки и распаковки. Пользователь описывает размещение данных, которые должны быть посланы или приняты и коммуникационная библиотека прямо обращается в несмежный буфер. Процедуры pack/unpack обеспечивают совместимость с предыдущими библиотеками. К тому же они обеспечивают некоторые возможности, которые другим образом недоступны в MPI . Например, сообщение может быть принято в нескольких частях, где приемная операция, выполняемая для поздней части, может зависеть от содержания первой части. Другое удобство состоит в том, что исходящее сообщение может быть явно буферизовано в предоставленном пользователю пространстве, превышая таким образом возможности системной политики буферизации. Наконец, доступность операций pack и unpack облегчает развитие дополнительных коммуникационных библиотек, расположенных на верхнем уровне MPI .

Синтаксис функции MPI_PACK представлен ниже.

IN inbuf начало входного буфера (альтернатива)
IN incount число единиц входных данных (целое)
IN datatype тип данных каждой входной единицы (дескриптор)
OUT outbuf начало выходного буфера (альтернатива)
IN outsize размер выходного буфера в байтах (целое)
INOUT position текущая позиция в буфере в байтах (целое)
IN comm коммуникатор для упакованного сообщения (дескриптор)

Операция MPI_PACK пакует сообщение в буфер посылки, описанный аргументами inbuf,
incount, datatype в буферном пространстве, описанном аргументами outbuf и outsize . Входным буфером может быть любой коммуникационный буфер, разрешенный в MPI_SEND . Выходной буфер есть смежная область памяти, содержащая outsize байтов, начиная с адреса outbuf (длина подсчитывается в байтах, а не в элементах, как если бы это был коммуникационный буфер для сообщения типа MPI_PACKED ).

Входное значение position есть первая ячейка в выходном буфере, которая должна быть использована для упаковки. рosition инкрементируется размером упакованного сообщения и выходное значение рosition есть первая ячейка в выходном буфере, следующая за ячейками, занятыми упакованным сообщением. Аргумент comm есть коммуникатор, который будет использован для передачи упакованного сообщения.

Синтаксис функции MPI_UNPACK представлен ниже.

IN inbuf начало входного буфера (альтернатива)
IN insize размер входного буфера в байтах (целое)
INOUT position текущая позиция в байтах (целое)
OUT outbuf начало выходного буфера (альтернатива)
IN outcount число единиц для распаковки (целое)
IN datatype тип данных каждой выходной единицы данных (дескриптор)
IN comm коммуникатор для упакованных сообщений (дескриптор)

Функция MPI_UNPACK распаковывает сообщение в приемный буфер, описанный аргументами outbuf, outcount, datatype из буферного пространства, описанного аргументами inbuf и insize . Выходным буфером может быть любой коммуникационный буфер, разрешенный в MPI_RECV . Входной буфер есть смежная область памяти, содержащая insize байтов, начиная с адреса inbuf . Входное значение position есть первая ячейка во входном буфере, занятом упакованным сообщением. рosition инкрементируется размером упакованного сообщения, так что выходное значение рosition есть первая ячейка во входном буфере после ячеек, занятых сообщением, которое было упаковано. сomm есть коммуникатор для приема упакованного сообщения.

Совет пользователям: Укажем на разницу между MPI_RECV и MPI_UNPACK : в MPI_RECV аргумент count описывает максимальное число единиц, которое может быть получено. Действительное же число определяется длиной входного сообщения. В MPI_UNPACK аргумент count описывает действительное число единиц, которые распакованы; «размер» соответствующего сообщения инкрементируется в position . Причина для этого изменения состоит в том, что «размер входного сообщения» не предопределен, поскольку пользователь решает, сколько распаковывать; да и нелегко определить «размер сообщения» по числу распакованных единиц. Фактически в неоднородной системе это число не может быть определено априори.[]

Чтобы понять поведение pack и unpack , удобно предположить, что часть данных сообщения есть последовательность, полученная конкатенацией последующих значений, посланных в сообщении. Операция pack сохраняет эту последовательность в буферном пространстве, как при посылке сообщения в этот буфер. Операция unpack обрабатывает последовательность из буферного пространства, как при приеме сообщения из этого буфера. (Полезно вспомнить о внутренних файлах языка ФОРТРАН или о sscanf в языке Си для подобной функции).

Несколько сообщений могут быть последовательно упакованы в один упакованный объект ( packing unit ). Это достигается несколькими последовательными связанными обращениями к MPI_PACK , где первый вызов обеспечивает position = 0 , и каждый последующий вызов вводит значение position , которое было выходом для предыдущего вызова, и то же самое значение для outbuf, outcount и comm. Этот упакованный объект теперь содержит эквивалентную информацию, которая хранилась бы в сообщении по одной передаче с буфером передачи, который является «конкатенацией» индивидуальных буферов передачи.

Упакованный объект может быть послан операцией MPI_PACKED . Любая парная или коллективная коммуникационная функция может быть использована для передачи последовательности байтов, которая формирует упакованный объект, из одного процесса в другой. Этот упакованный объект также может быть получен любой приемной операцией: типовые правила соответствия ослаблены для сообщений, посланных с помощью MPI_PACKED .

Сообщение, посланное с любым типом (включая MPI_PACKED ) могут быть получены с помощью MPI_PACKED . Такое сообщение может быть распаковано обращением к MPI_UNPACK .

Упакованный объект (или сообщение, созданное обычной «типовой» передачей) может быть распаковано в несколько последовательных сообщений. Это достигается несколькими последовательными обращениями к MPI_UNPACK , где первое обращение обеспечивает position = 0 и каждый последовательный вызов вводит значение position , которое было выходом предыдущего обращения, и то же самое значение для inbuf, insize и comm .

Конкатенация двух упакованных объектов не обязательно является упакованным объектом; подстрока упакованного объекта также не обязательно есть упакованный объект. Поэтому нельзя ни производить конкатенацию двух упакованных объектов и затем распаковывать результат как один упакованный объект; ни распаковывать подстроку упакованного объекта, как отдельный упакованный объект. Каждый упакованный объкт, который был создан соответствующей последовательностью операций упаковки или обычными send , обязан быть распакован как объект последовательностью связанных распаковывающих обращений.

Объяснение: Ограничение на «атомарную» («atomic») упаковку и распаковку упакованных объектов позволяет реализации добавлять в заголовок упакованных объектов дополнительную информацию, такую, как описание архитектуры отправителя (используется для преобразования типов в неоднородной среде).[]

Следующий вызов позволяет пользователю выяснить, сколько пространства нужно для упаковки объекта, что позволяет управлять распределением буферов.

Синтаксис функции MPI_PACK_SIZE представлен ниже.

IN incount аргумент count для упакованного вызова (целое)
IN datatype аргумент datatype для упакованного вызова (дескриптор)
IN comm аргумент communicator для упакованного вызова (дескриптор)
OUT size верхняя граница упакованного сообщения в байтах (целое)

Обращение к MPI_PACK_SIZE(incount, datatype, comm, size) возвращает в size верхнюю границу по инкременту в position , которая создана обращением к MPI_PACK(inbuf, incount, datatype, outbuf, outcount, position, comm) .

Объяснение: Вызов возвращает верхнюю границу, а не точную границу, поскольку точный объем пространства, необходимый для упаковки сообщения, может зависеть от контекста (например, первое сообщение, упакованное в упакованный объект, может занимать больше объема).[]

Пример 3.38 Пример использования MPI_PACK .

Пример 3.39 Усложненный пример.

Пример 3.40 Каждый процесс посылает число, прибавляя знаки числа к корню, корень производит конкатенацию всех знаков в одну строку.

Что такое код unpack

(PHP 3, PHP 4, PHP 5)

unpack — распаковывает данные из бинарной строки.

Описание

array unpack (string format, string data)

unpack() из бинарной строки в массив в соответствии с format . Возвращает массив, содержащий распакованные элементы двоичной строки.

unpack() работает несколько иначе, чем Perl, так как распакованные данные хранятся в ассоциативном массиве. Для этого вы должны именовать разные коды формата и разделить их слэшем /.

Пример 1. Строка форматирования unpack()

$array = unpack («c2chars/nint», $binarydata);

Результирующий массив будет содержать вхождения «chars1», «chars2» и «int».

Объяснение кодов формата см. также в pack() .

Обратите внимание, что PHP внутренне хранит интегральные значения как знаковые. Если вы unpack большое unsigned long и оно имеет тот же размер, что внутренне хранимые PHP значения, результатом будет отрицательное число, даже если была специфицирована беззнаковая распаковка.

Quick Unpack

Announcement: Quick Unpack 3.4 released

В публичном доступе опубликована версия Quick Unpack 3.4.

Утилита датирована 2010 годом и поддерживается разработчиком Archer.

EXEForger (SignsImitator) 1.0.40.10

Утилита подменяет сигнатуры и позвоялет выдавать за любую сигну из предложенного списка.

EXEForger (SignsImitator) 1.0.40.10
Author: STRELiTZIA.
Release date: April 2010.
Type: RCE Tool.

Strong Name Helper v1.3

Инструмент для анализа строк. Помощник в поиске строк исполняемых файлов.
v1.3
+’Patch References with SNK *only*’ button added
*sometimes using ‘SNK checked references’ lock the assembly — fixed
Подробнее >>

Quick Unpack 2.2 released

Свершилось долгожданное событие. Разработчики приняли решение опубликовать версию Quick Unpack 2.2. Проект теперь продолжается нашими друзьями — командой tPORt.
Подробнее >>

RLPack 1.21 VM Code Translater 1.0, Unpacking RLPack 1.21 Main Executable Movie

Видео по распаковке RLPack

OllyDbg 2.0 Beta 2 (updated 28-Mar-2009)

Please read it carefully before complaining:
1. OllyDbg 2.0 is rewritten from scratch.
2. No, plugins are not yet implemented.
3. Yes, they will be implemented again — presumably in v2.02.

Новые скрипты для ASProtect (c учетом версии 1.41 build 04.01)

Свеженькие скрипты ODBGScript для распаковки последних версий ASProtect.

SecurePE 1.6

SecurePE — бесплатная утилита, которая защищает PE файлы паролем с RC4 шифрованием. Попробовать стоит, хотя на malware неплохо б и проверитэтот продукт

SecurePE is a user friendly freeware utility coded in 32bit assembly language that protects Microsoft Windows® PE files with a password, strong RC4 encryption and checksum while leaving them totally functional.

SecurePE user-friendly interface supports both drag & drop and shell operation of Windows Explorer. So you can protect files easily with a mouse click.

When a protected file is executed it displays a dialogbox asking the user for the correct password. The password is not stored in the file but a CRC32 hash algorithm. You must remember the password or you will not be able to execute the protected program again until you restore it from a backup. With the correct password you can run the program and even deprotect the file and give back it to its original state.

Unlike other protection utilities you may copy SecurePE protected files to another computer and it stays protected and functional without the need of re-protect the file again no matter what operating system this computer runs.

At last, but not at least, SecurePE has a checksum routine that detects any manipulation in the PE Header of the protected files.

Илон Маск рекомендует:  Что такое код pdf_circle
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL