Observer — распаковка файлов из различных контейнеров

Здесь можно обсудить ваш любимый плагин.
Ariman
Posts: 1351
Joined: Fri 30 Nov, 2007 15:32
Location: Крым
Has thanked: 15 times
Been thanked: 50 times
Contact:

Observer — распаковка файлов из различных контейнеров

Post by Ariman »

Тема для обсуждения плагина Observer.
Плагин предназначен только для распаковки файлов. Запаковка/редактирование архивов не планируется.

Хотелки/баги:

Известные проблемы:

Планируемые новые модули:

Если "ничего не работает", то прежде чем писать сюда:


Сторонние модули:
  • Dir — поддержка вывода команд dir и ls в качестве виртуального архива.
  • Inno Setup — поддержка файлов Inno Setup (сделан на основе innounp).
  • cab — распаковка нестандартных .cab архивов (Windows Update и др.)
Last edited by Ariman on Wed 04 May, 2022 14:36, edited 7 times in total.
Ariman
Posts: 1351
Joined: Fri 30 Nov, 2007 15:32
Location: Крым
Has thanked: 15 times
Been thanked: 50 times
Contact:

Observer — распаковка файлов из различных контейнеров

Post by Ariman »

Latest post of the previous page:

Сурово. :ha:
Это разнообразие в размерах у разных людей удивляет.
Kirillony
Posts: 232
Joined: Tue 24 Jan, 2006 18:49
Has thanked: 6 times
Been thanked: 4 times

Observer — распаковка файлов из различных контейнеров

Post by Kirillony »

С arclite-ом обрисовалась такая проблема:
история вопроса
Уважаемый Ariman, можно ли надеяться на реализацию такого парсера в Observer?
Ariman
Posts: 1351
Joined: Fri 30 Nov, 2007 15:32
Location: Крым
Has thanked: 15 times
Been thanked: 50 times
Contact:

Observer — распаковка файлов из различных контейнеров

Post by Ariman »

Kirillony wrote: Mon 06 Nov, 2017 09:41 можно ли надеяться на реализацию такого парсера в Observer?
Писать с нуля парсер PE файлов я вряд ли возьмусь. Есть у меня желание сделать свой плагин для PE, но это если вдруг какой хороший открытый код найдется.
User avatar
cmd.exe
Posts: 378
Joined: Fri 16 Apr, 2010 18:26
Location: Нижний Новгород
Has thanked: 181 times
Been thanked: 10 times
Contact:

Observer — распаковка файлов из различных контейнеров

Post by cmd.exe »

Ariman, я много неплохих парсеров знаю.
Как самый легко портируемый. Lexer/Parser for 010 Editor's Binary Templates , сам проект Open-source x64/x32 debugger for windows.
Как сигнатурный анализатор YARA.
I've been using Vim for about 2 years now, mostly because I can't figure out how to exit it. (c) I Am Devloper
I know nothing except the fact of my ignorance. (с) Socrates
Ariman
Posts: 1351
Joined: Fri 30 Nov, 2007 15:32
Location: Крым
Has thanked: 15 times
Been thanked: 50 times
Contact:

Observer — распаковка файлов из различных контейнеров

Post by Ariman »

Как то я не очень понял, как это всё можно приспособить для заданной задачи.
Pasha_ZZZ
Posts: 436
Joined: Mon 12 Jun, 2006 14:58
Has thanked: 1 time
Been thanked: 27 times
Contact:

Observer — распаковка файлов из различных контейнеров

Post by Pasha_ZZZ »

Есть библиотека для Observer, сделанная из innounp. Может ее включить в дистр? И кстати, она только под х86?
http://www.pepak.net/downloady/
Ariman
Posts: 1351
Joined: Fri 30 Nov, 2007 15:32
Location: Крым
Has thanked: 15 times
Been thanked: 50 times
Contact:

Observer — распаковка файлов из различных контейнеров

Post by Ariman »

Pasha_ZZZ wrote: Sat 11 Nov, 2017 09:31 Может ее включить в дистр?
Если включать в дистр, то надо будет самому поддерживать. Как-то нет желания.
Pasha_ZZZ wrote: Sat 11 Nov, 2017 09:31 И кстати, она только под х86?
Innounp только x86 существует.
Pasha_ZZZ
Posts: 436
Joined: Mon 12 Jun, 2006 14:58
Has thanked: 1 time
Been thanked: 27 times
Contact:

Observer — распаковка файлов из различных контейнеров

Post by Pasha_ZZZ »

Дааааааа.... там поинтеры в кардинал преобразуются и над ними производятся арифметические операции. А в 64 битах поинтеры в 2 раза больше. Это самый главный геморрой. А модуль Int64em переделать несложно.
Pasha_ZZZ
Posts: 436
Joined: Mon 12 Jun, 2006 14:58
Has thanked: 1 time
Been thanked: 27 times
Contact:

Observer — распаковка файлов из различных контейнеров

Post by Pasha_ZZZ »

Пока что уперся в ISCrypt, надо наверное OBJ другой для 64 бит...
Pasha_ZZZ
Posts: 436
Joined: Mon 12 Jun, 2006 14:58
Has thanked: 1 time
Been thanked: 27 times
Contact:

Observer — распаковка файлов из различных контейнеров

Post by Pasha_ZZZ »

Скомпилил х64 ISCrypt, но при компиляции innounp:
[dcc64 Error] ArcFour.pas(89): E2065 Unsatisfied forward or external declaration: '__imp_DisableThreadLibraryCalls'
Ariman
Posts: 1351
Joined: Fri 30 Nov, 2007 15:32
Location: Крым
Has thanked: 15 times
Been thanked: 50 times
Contact:

Observer — распаковка файлов из различных контейнеров

Post by Ariman »

Pasha_ZZZ wrote: Sat 11 Nov, 2017 20:03 там поинтеры в кардинал преобразуются и над ними производятся арифметические операции.
Delphi не умеет ни в х64, ни в арифметику указателей, поэтому там такие вещи обычное дело.
Pasha_ZZZ wrote: Sat 11 Nov, 2017 20:03 надо наверное OBJ другой для 64 бит...
Надо все obj-и в 64 битах - ISCrypt, zlib, bzip, lzma.
Pasha_ZZZ
Posts: 436
Joined: Mon 12 Jun, 2006 14:58
Has thanked: 1 time
Been thanked: 27 times
Contact:

Observer — распаковка файлов из различных контейнеров

Post by Pasha_ZZZ »

Через Inc умеет указатели двигать, если они типизированные. Определил PByte: ^Byte; и вместо Inc(Cardinal(P), Count); сделал Inc(PByte(P), Count);
А для инлайновых мест со сложением сделал обертку на основе того же Inc.

Только не знаю, почему вылазит E2065...
Ariman
Posts: 1351
Joined: Fri 30 Nov, 2007 15:32
Location: Крым
Has thanked: 15 times
Been thanked: 50 times
Contact:

Observer — распаковка файлов из различных контейнеров

Post by Ariman »

Pasha_ZZZ wrote: Sun 12 Nov, 2017 08:07 Через Inc умеет указатели двигать, если они типизированные.
Та я в курсе. Но этим, как показывает практика, редко кто пользуется.
Ещё в проекте куча кода от Inno Setup-а, который в ansi варианте собирается древнючей версией delphi (то ли 2, то ли 3). Может там Inc не работает на указателях, я хз.
Pasha_ZZZ wrote: Sun 12 Nov, 2017 08:07 Только не знаю, почему вылазит E2065...
Посмотри в obj файле своём, может там вызов этой функции вкомпилился.
Pasha_ZZZ
Posts: 436
Joined: Mon 12 Jun, 2006 14:58
Has thanked: 1 time
Been thanked: 27 times
Contact:

Observer — распаковка файлов из различных контейнеров

Post by Pasha_ZZZ »

Так вызов функции DisableThreadLibraryCalls там есть, она WinAPIшная, в kernel32 вроде как находится.
Я вот как раз и ISовский код перелопачиваю. В коменте пишут, что Int64 появился только в Delphi 4, поэтому там юзается свой Integer64.
Я функи на асме переписал под Int64 на паскале, поискал везде в коде работу с указателями через Cardinal, переделал все (вроде бы) на работу через PByte.
Где-то писали, что Е2065 может быть из-за неправильного формата OBJ, но вроде свежие компиляторы с той и другой стороны... должны вроде как оба в COFF работать.
Ariman
Posts: 1351
Joined: Fri 30 Nov, 2007 15:32
Location: Крым
Has thanked: 15 times
Been thanked: 50 times
Contact:

Observer — распаковка файлов из различных контейнеров

Post by Ariman »

Pasha_ZZZ wrote: Sun 12 Nov, 2017 09:49 Так вызов функции DisableThreadLibraryCalls там есть, она WinAPIшная, в kernel32 вроде как находится.
Она должна быть определена в каком-либо из юнитов программы, твоём или системном. Может надо како-нибудь стандартный подключить дополнительно.
Pasha_ZZZ
Posts: 436
Joined: Mon 12 Jun, 2006 14:58
Has thanked: 1 time
Been thanked: 27 times
Contact:

Observer — распаковка файлов из различных контейнеров

Post by Pasha_ZZZ »

В юните ArcFour, который нормально компилится в Win32, но вываливается с данной ошибкой в Win64, в uses только Windows (в нем эта функа вроде как есть).
Post Reply

Return to “Обсуждение плагинов”