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

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

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

Post by Ariman » Mon 31 Aug, 2009 11:29

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

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

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

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

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


Сторонние модули:
Dir — поддержка вывода команд dir и ls в качестве виртуального архива. (на версии 1.10 работать не будет в связи с изменением API модулей)
Inno Setup - поддержка файлов Inno Setup (сделан на основе innounp).

Ariman
Posts: 1196
Joined: Fri 30 Nov, 2007 15:32
Location: Крым
Has thanked: 12 times
Been thanked: 26 times
Contact:

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

Post by Ariman » Tue 03 Oct, 2017 08:15

Latest post of the previous page:

Сурово. :ha:
Это разнообразие в размерах у разных людей удивляет.

Kirillony
Posts: 193
Joined: Tue 24 Jan, 2006 18:49
Has thanked: 3 times
Been thanked: 1 time

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

Post by Kirillony » Mon 06 Nov, 2017 09:41

С arclite-ом обрисовалась такая проблема:
история вопроса
Уважаемый Ariman, можно ли надеяться на реализацию такого парсера в Observer?

Ariman
Posts: 1196
Joined: Fri 30 Nov, 2007 15:32
Location: Крым
Has thanked: 12 times
Been thanked: 26 times
Contact:

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

Post by Ariman » Mon 06 Nov, 2017 17:59

Kirillony wrote:
Mon 06 Nov, 2017 09:41
можно ли надеяться на реализацию такого парсера в Observer?
Писать с нуля парсер PE файлов я вряд ли возьмусь. Есть у меня желание сделать свой плагин для PE, но это если вдруг какой хороший открытый код найдется.

User avatar
cmd.exe
Posts: 358
Joined: Fri 16 Apr, 2010 18:26
Location: Нижний Новгород
Has thanked: 178 times
Been thanked: 5 times
Contact:

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

Post by cmd.exe » Mon 06 Nov, 2017 23:59

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: 1196
Joined: Fri 30 Nov, 2007 15:32
Location: Крым
Has thanked: 12 times
Been thanked: 26 times
Contact:

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

Post by Ariman » Wed 08 Nov, 2017 13:54

Как то я не очень понял, как это всё можно приспособить для заданной задачи.

Pasha_ZZZ
Posts: 78
Joined: Mon 12 Jun, 2006 14:58
Contact:

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

Post by Pasha_ZZZ » Sat 11 Nov, 2017 09:31

Есть библиотека для Observer, сделанная из innounp. Может ее включить в дистр? И кстати, она только под х86?
http://www.pepak.net/downloady/

Ariman
Posts: 1196
Joined: Fri 30 Nov, 2007 15:32
Location: Крым
Has thanked: 12 times
Been thanked: 26 times
Contact:

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

Post by Ariman » Sat 11 Nov, 2017 12:43

Pasha_ZZZ wrote:
Sat 11 Nov, 2017 09:31
Может ее включить в дистр?
Если включать в дистр, то надо будет самому поддерживать. Как-то нет желания.
Pasha_ZZZ wrote:
Sat 11 Nov, 2017 09:31
И кстати, она только под х86?
Innounp только x86 существует.

Pasha_ZZZ
Posts: 78
Joined: Mon 12 Jun, 2006 14:58
Contact:

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

Post by Pasha_ZZZ » Sat 11 Nov, 2017 18:11

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

Pasha_ZZZ
Posts: 78
Joined: Mon 12 Jun, 2006 14:58
Contact:

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

Post by Pasha_ZZZ » Sat 11 Nov, 2017 20:03

Пока что уперся в ISCrypt, надо наверное OBJ другой для 64 бит...

Pasha_ZZZ
Posts: 78
Joined: Mon 12 Jun, 2006 14:58
Contact:

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

Post by Pasha_ZZZ » Sat 11 Nov, 2017 20:31

Скомпилил х64 ISCrypt, но при компиляции innounp:
[dcc64 Error] ArcFour.pas(89): E2065 Unsatisfied forward or external declaration: '__imp_DisableThreadLibraryCalls'

Ariman
Posts: 1196
Joined: Fri 30 Nov, 2007 15:32
Location: Крым
Has thanked: 12 times
Been thanked: 26 times
Contact:

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

Post by Ariman » Sun 12 Nov, 2017 07:55

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: 78
Joined: Mon 12 Jun, 2006 14:58
Contact:

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

Post by Pasha_ZZZ » Sun 12 Nov, 2017 08:07

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

Только не знаю, почему вылазит E2065...

Ariman
Posts: 1196
Joined: Fri 30 Nov, 2007 15:32
Location: Крым
Has thanked: 12 times
Been thanked: 26 times
Contact:

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

Post by Ariman » Sun 12 Nov, 2017 09:41

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: 78
Joined: Mon 12 Jun, 2006 14:58
Contact:

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

Post by Pasha_ZZZ » Sun 12 Nov, 2017 09:49

Так вызов функции DisableThreadLibraryCalls там есть, она WinAPIшная, в kernel32 вроде как находится.
Я вот как раз и ISовский код перелопачиваю. В коменте пишут, что Int64 появился только в Delphi 4, поэтому там юзается свой Integer64.
Я функи на асме переписал под Int64 на паскале, поискал везде в коде работу с указателями через Cardinal, переделал все (вроде бы) на работу через PByte.
Где-то писали, что Е2065 может быть из-за неправильного формата OBJ, но вроде свежие компиляторы с той и другой стороны... должны вроде как оба в COFF работать.

Ariman
Posts: 1196
Joined: Fri 30 Nov, 2007 15:32
Location: Крым
Has thanked: 12 times
Been thanked: 26 times
Contact:

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

Post by Ariman » Sun 12 Nov, 2017 11:58

Pasha_ZZZ wrote:
Sun 12 Nov, 2017 09:49
Так вызов функции DisableThreadLibraryCalls там есть, она WinAPIшная, в kernel32 вроде как находится.
Она должна быть определена в каком-либо из юнитов программы, твоём или системном. Может надо како-нибудь стандартный подключить дополнительно.

Pasha_ZZZ
Posts: 78
Joined: Mon 12 Jun, 2006 14:58
Contact:

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

Post by Pasha_ZZZ » Sun 12 Nov, 2017 12:47

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

Pasha_ZZZ
Posts: 78
Joined: Mon 12 Jun, 2006 14:58
Contact:

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

Post by Pasha_ZZZ » Sun 12 Nov, 2017 12:48

Может все дело в префиксе __imp_?

Post Reply

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