eXeLab
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС
выпущен 4 ноября!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Русский / Russian English / Английский

Сейчас на форуме: panlik, mkdev
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS · SVN ·

 eXeL@B —› Софт, инструменты —› Detect It Easy 2.0
<< . 1 . 2 . 3 . 4 . 5 . 6 . >>
Посл.ответ Сообщение


Ранг: 134.0 (ветеран)
Статус: Участник
Qt Developer

Создано: 3 августа 2018 19:32 · Поправил: hors New!
Цитата · Личное сообщение · #1



2.05

[+] Many bugs have been fixed.
[+] JSON output in console version.
[+] No UPX build for Windows version

Full changelog: --> Link <--
How to build DiE from sources: --> Link <--

Download: --> Link <--

| Сообщение посчитали полезным: yashechka, hypn0, mak, RevCred, VOLKOFF, TRPD, HandMill, MarcElBichon, Bronco, BlackCode, -=AkaBOSS=-, sendersu, sefkrd, Autokent, mushr00m, =TS=, ==DJ==[ZLO], Isaev, ibmCORE, apslash, darkBLACK, Crawler, ELF_7719116, ADMIN-CRACK, Adler, Bad_guy



Ранг: 316.1 (мудрец)
Статус: Участник

Создано: 14 июня 2019 15:15 New!
Цитата · Личное сообщение · #2

ARCHANGEL

Плаг под сабж значит. Может кому то пригодится

Надеюсь что там будет что то дельное


Ранг: 660.7 (! !)
Статус: Участник
ALIEN Hack Team

Создано: 14 июня 2019 15:19 New!
Цитата · Личное сообщение · #3

difexacaw
На паблик его никто не даст


Ранг: 316.1 (мудрец)
Статус: Участник

Создано: 14 июня 2019 15:50 · Поправил: difexacaw New!
Цитата · Личное сообщение · #4

ARCHANGEL

Разумеется. Так как вы этот тулз собрались использовать автоматикой на файловом потоке. Это блэк и конечно же всё приват. Его после этого спалят аверы.


Ранг: 1013.7 (!!!!)
Статус: Участник

Создано: 14 июня 2019 16:23 New!
Цитата · Личное сообщение · #5

они и сами аверы
видишь какой он зеленый


Ранг: 660.7 (! !)
Статус: Участник
ALIEN Hack Team

Создано: 14 июня 2019 16:50 New!
Цитата · Личное сообщение · #6

Это блэк и конечно же всё приват. Его после этого спалят аверы.

Я вас прошу. Не смешите людей. Этот тул никому прост нахер не впал, кроме меня.


Ранг: 134.0 (ветеран)
Статус: Участник
Qt Developer

Создано: 15 июня 2019 17:44 New!
Цитата · Личное сообщение · #7

ARCHANGEL пишет:
Ругается на вот это:
Q_EXPORT_PLUGIN2(simpleexample, SimpleExample)


Спасибо за тестирование. Я это исправлю в будущем.

Версии DiE 1.ХХ собирались под Qt 4.XX, а Версии DiE 2.ХХ собираются под Qt 5.ХХ. Поэтому плагин от SDK старого DiE ругается на новую Qt.

ARCHANGEL пишет:
difexacaw
Для своих девелоперских нужд делаю плагин, чтобы клацать пкм по исполняемому файлу, потом выбирать плагин и в нём жать "Сделать офигенненько". Параллельо для справки буду смотреть версию компилятора, чтобы на вообще всякой ненужной шняге кнопушку не жать.


Тогда для этих целей лучше взять за основу вот эту утилиту: --> Link <-- Она легче и быстрее классического DiE и не тянет всю огромную базу сигнатур. Все сигнатуры вшитые. То что надо вписывется в в код и компилируется. Информация по сборке --> Link <--

Добавлено спустя 17 минут
difexacaw пишет:
Тест на протекторах, определение OEP:

- Safeengine
- Themida
- Armadillo
- Aspack
- Asprotect
- Obsidium
+ Pecompact
- Privexeprot
- UPX
- VMP
- YC
- Enigma
- Mpress
- Nice
- Nspack
- Winlic
- Pelock
- Winunpack
- Mew

Не рабочее говно.


Если я правильно понял, ты взял множество файлов накрытых разными протекторами и стал с помощью DiE искать OEP?
С чего ты решил, что DiE может делать это? Где-то прочитал или кто-то рассказал? Как ты к этому пришёл?

difexacaw пишет:
Норм анпакер может справиться с другим протектором, не на который расчитан.


Глупости.


Ранг: 316.1 (мудрец)
Статус: Участник

Создано: 15 июня 2019 22:30 New!
Цитата · Личное сообщение · #8

hors

> С чего ты решил, что DiE может делать это?

Так если пакер определят, то и OEP определять должен. Ну а проверить было не долго.

Ранг: 440.8 (мудрец)
Статус: Участник

Создано: 15 июня 2019 22:48 New!
Цитата · Личное сообщение · #9

difexacaw пишет:
Так если пакер определят, то и OEP определять должен. Ну а проверить было не долго.

так если пакер определяет, то и анпакать обязано, не ?

| Сообщение посчитали полезным: hors, =TS=



Ранг: 316.1 (мудрец)
Статус: Участник

Создано: 15 июня 2019 22:56 New!
Цитата · Личное сообщение · #10

tihiy_grom

> так если пакер определяет, то и анпакать обязано, не ?

Нет, это операция посложнее. А так очевидно - пакер определил и EP тоже. По идеи как то обработать образ нужно после распаковки, тоесть на OEP. А для этого нужно её определить в идеале, но конечно можно просто запустить и потом уже когда всё распакуется работать с образом.

hors

> Глупости.

Почему же глупости, так многие анпакеры работают: ожидание распаковки -> дамп + фикс/сборка IAT.


Ранг: 660.7 (! !)
Статус: Участник
ALIEN Hack Team

Создано: 15 июня 2019 23:07 New!
Цитата · Личное сообщение · #11

hors
Если DiE 2.xx будет работать с новыми версиями Qt, то, возможно, и мне удастся переделать старый плагин. Меня всё устраивает именно как оно сделано в DiE, его размер и скорость работы - тоже устраивают. Я бы остановился на нём всё же. Но, если что, то воспользуюсь линком на альтернативную тулзу.


Ранг: 316.1 (мудрец)
Статус: Участник

Создано: 15 июня 2019 23:14 New!
Цитата · Личное сообщение · #12

hors

Кстате нужно добавить что дамп возможен именно на OEP, пока апп не инициализировано(небыло W-выборки). Тоесть можно пропустить OEP для работы с анпакед образом, но что бы дампить нужно это чётко выделить событие.

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



Ранг: 134.0 (ветеран)
Статус: Участник
Qt Developer

Создано: 16 июня 2019 00:16 New!
Цитата · Личное сообщение · #13

difexacaw пишет:
Почему же глупости, так многие анпакеры работают: ожидание распаковки -> дамп + фикс/сборка IAT.


Да. Проблема только в том что поиск OEP, дамп и фикс IAT для распаковщиков разных пакеров может сильно различаться.

Теперь по пунктам:

1) Поиск OEP. Есть общеизвестные методы поиска OEP, которые срабатывают в 80% случаев. Но существуют и пакеры/протекторы, которые успешно запутывают общие методы поиска OEP

2) Дамп. В общем случае дампится вся память от ImageBase до конца участков памяти с атрибутами MEMORY_BASIC_INFORMATION.AllocationBase==ImageBase (если мы говорим сейчас о Windows).
Но есть пакеры/протекторы, которые при загрузке выделяют намного больше памяти и забивают её мусором после распаковки. При обычном дампе образуются файлы колоссального размера и не всегда работоспособные.

3) Фикс IAT. Как и в случае с OEP есть общеизвестные методы поиска оригинальной IAT и есть способы это всё запутать. Способы разные у разных пакеров/протекторов. Универсального решения, который бы работал во всех случаях здесь тоже нет. Кстати помимо фикса IAT в некоторых случаях нужен фикс TLS, релоков и иногда также ресурсов.

Исходя из этого невозможно создать распаковщик, который бы всё распаковывал с универсальным методом поиска OEP, дампа и фикса IAT.

Более перспективное направление, это сделать для каждого пакера/протектора свой отдельный модуль, учитывающий все конкретные тонкости распаковки.

difexacaw пишет:
Кстате нужно добавить что дамп возможен именно на OEP, пока апп не инициализировано(небыло W-выборки). Тоесть можно пропустить OEP для работы с анпакед образом, но что бы дампить нужно это чётко выделить событие.


Да.


Ранг: 316.1 (мудрец)
Статус: Участник

Создано: 16 июня 2019 00:40 · Поправил: difexacaw New!
Цитата · Личное сообщение · #14

hors

Проблемы идут по цепочке. Раньше небыло способа чётко определить OEP. Соотвественно если что то дампить то образ становится не рабочим.

2. Когда анпакер отработал, те пройдена OEP и всё настроено, апп уже не зависит от слоя пакера, но это не всегда так, некоторые частично остаются частью апп, к примеру переносят какие то процедуры в буфера. Но это редко и не является проблемой. Все операции с памятью до OEP не относятся к исходному апп, это работает анпакер. Тут вся суть в выборке, впрочем это и есть критерий OEP.

3. Собрать импорт это наверно главная проблема, потому что во первых это работа с форматом и лишний раз это трогать не хочется, а во вторых часто импорт запутанный и сложный, там бывают части протектора.

> Исходя из этого невозможно создать распаковщик

Не согласен, во первых нужно определиться с понятием протектора. Он является частью апп после анпака - тогда это лишние трудности, если же нет - то и проблемы нет, прямой дамп и IAT.

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

Добавлено спустя 10 минут
hors

> Но существуют и пакеры/протекторы, которые успешно запутывают общие методы поиска OEP

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


Ранг: 660.7 (! !)
Статус: Участник
ALIEN Hack Team

Создано: 16 июня 2019 12:16 New!
Цитата · Личное сообщение · #15

Ну что я вам могу сказать. Сборку-то самого плагина я пофиксил, теперь оно собирается. Но с версией 1 дая - не работает. Кладу dll в папку stuff/plugins, но плагинов не добавляется. В версии 2 такой папки, как plugins, нет вообще. И совершенно непонятно, куда его класть. Похоже, плагины в DiE - не особо кому нужны. Склоняюсь заюзать какой-то другой анализатор с более вменяемым SDK. Мож, кто юзал такой - подскажет что-то.


Ранг: 251.8 (наставник)
Статус: Участник
Seeker

Создано: 16 июня 2019 14:10 · Поправил: =TS= New!
Цитата · Личное сообщение · #16

ARCHANGEL
"base\plugins" ?
(в поставке есть "base\plugins\platforms\qwindows.dll")

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



Ранг: 134.0 (ветеран)
Статус: Участник
Qt Developer

Создано: 16 июня 2019 15:38 New!
Цитата · Личное сообщение · #17

ARCHANGEL пишет:
Но с версией 1 дая - не работает. Кладу dll в папку stuff/plugins, но плагинов не добавляется.


Спасибо за тестирование. Проблема скорее всего в несовместимости разных версий Qt. Для DiE1.ХХ нужно 4.8.7

1) Устанавливаем VS2010: http://msdn.microsoft.com/en-us/library/dd831853%28v=vs.100%29.aspx
2) Устанавливаем QT 4.8.7 http://download.qt.io/archive/qt/4.8/4.8.7/qt-opensource-windows-x86-vs2010-4.8.7.exe
3) Компилируем плагин.
4) Кладем его в папку с плагинами. Папка указана в настройках. Options -> Paths -> Plugins
5) Options -> Plugins -> Enable plugins

ARCHANGEL пишет:
Похоже, плагины в DiE - не особо кому нужны


Увы. Это действительно так.
Если плагин сложный, то лучше оформить его в виде отдельной программы. А если нужны небольшие улучшения, то плагины тоже не нужны.
Правильнее связаться с автором и он добавит это в основную программу.

Это касается не только DiE, но и других программ тоже.

ARCHANGEL пишет:
Склоняюсь заюзать какой-то другой анализатор с более вменяемым SDK. Мож, кто юзал такой - подскажет что-то.


Можно попробовать Exeinfo PE. Там тоже есть SDK,

Добавлено спустя 5 минут
difexacaw пишет:
Вы можите такой прот для примера привести, просто те что выше в списке подчиняются общему правилу поиска OEP. Я не нашёл где это не работает.


Если это так, то это уже очень и очень неплохо.


Ранг: 660.7 (! !)
Статус: Участник
ALIEN Hack Team

Создано: 16 июня 2019 19:18 New!
Цитата · Личное сообщение · #18

=TS=
Есть base/platforms, но там ни слова про плагины.

hors
С 4 версией понятно. Я бы хотел юзать 5 версию qt, и в связи с этим возникает вопрос - куда положить скомпилированный плагин и какое имя использовать для регистрации метаданных? Сейчас вот так:

Code:
  1. class SimpleExample : public QObject, PluginInterface
  2. {
  3.     Q_OBJECT
  4.     Q_INTERFACES(PluginInterface)
  5.     Q_PLUGIN_METADATA(IID "die.plugininterface/1.0" FILE "plugininterface.json")  //вот тут что написать?
  6. public:
  7.     bool init(DIEPLUGIN *pDiePlugin);
  8.     QString getName();
  9.  
  10. private slots:
  11.     void process();
  12. private:
  13.     DIEPLUGIN *pDiePlugin;
  14.     QPushButton *button;
  15. };


Добавлено спустя 3 часа 31 минуту
В общем, взял --> Exeinfo PE <--, у которого SDK совместим с Peid. Т.е. достаточно написать плагин для Peid, и он автоматически будет валидным для Exeinfo PE. Для Peid SDK дотаточно простой, и можно найти инфу о нём --> Peid Plugin SDK <--. Для С++ можно всё уместить так:

Code:
  1. #ifdef _DLLMACRO
  2.          #define  DllExport        __declspec(dllexport)
  3. #else
  4.          #define  DllExport        __declspec(dllimport)
  5. #endif
  6.  
  7. DllExport DWORD DoMyJob(HWND hMainDlg, char *szFname, DWORD lpReserved, LPVOID lpParam);
  8. DllExport LPSTR LoadDll();


На том и порешил юзать Exeinfo PE. Всем участвовавшим в дискуссии - спасибо.


Ранг: 169.6 (ветеран)
Статус: Участник

Создано: 17 июня 2019 04:05 New!
Цитата · Личное сообщение · #19

ARCHANGEL пишет:
достаточно написать плагин для Peid


Смысл? Все, что делает PEID - передает имя загруженного файла. Извратившись, можно еще подменить строчку в главном окне на что-то свое. Все это проще и удобнее сделать Stand-alone.

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



Ранг: 134.0 (ветеран)
Статус: Участник
Qt Developer

Создано: 30 июня 2019 00:10 New!
Цитата · Личное сообщение · #20

2.04

[+] Many bugs have been fixed.

Download: --> Link <--

How to build DiE from sources: --> Link <--

| Сообщение посчитали полезным: plutos, Adler, BlackCode, mak, TRPD, DimitarSerg, mushr00m, esa_r



Ранг: 535.3 (!)
Статус: Участник
_Вечный_Студент_

Создано: 30 июня 2019 04:54 New!
Цитата · Личное сообщение · #21

hors пишет:
How to build DiE from sources: --> Link <--

Проверь пожалуйста линк, а то вот такой вылазит:

Code:
  1. К сожалению, страница, которую вы искали в этом блоге, не существует.


А все остальное - работает отлично! Спасибо за great tools!


Ранг: 590.5 (!)
Статус: Модератор
Research & Development

Создано: 30 июня 2019 07:34 New!
Цитата · Личное сообщение · #22

plutos пишет:
Проверь пожалуйста линк

Fixed:
--> Link <--

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



Ранг: 535.3 (!)
Статус: Участник
_Вечный_Студент_

Создано: 30 июня 2019 08:32 New!
Цитата · Личное сообщение · #23

Jupiter пишет:
Fixed:

Теперь все путем! Спасибо!

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


Ранг: 7.9 (гость)
Статус: Участник

Создано: 30 июня 2019 23:23 New!
Цитата · Личное сообщение · #24

Просьба, когда будет время, допилить флаги DllCharacteristics. Отображаются не все.
Полный список флагов: DLL Characteristics

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



Ранг: 134.0 (ветеран)
Статус: Участник
Qt Developer

Создано: 1 июля 2019 00:37 New!
Цитата · Личное сообщение · #25

d745150 пишет:
Просьба, когда будет время, допилить флаги DllCharacteristics. Отображаются не все.
Полный список флагов: DLL Characteristics


Спасибо за предложение. Это будет в следующей версии.

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


Ранг: 1.6 (гость)
Статус: Участник

Создано: 1 октября 2019 13:42 New!
Цитата · Личное сообщение · #26

1) В случае если ELF файл имеет не корректные значения в полях ei_class и/или ei_data DiE (версия 2.04 х64 linux) не распознаёт это как валидный ELF и выводит тип файла как binary. Но при этом скриптовая функция ELFFile.isValid() распознаёт его как валидный.
Это баг?

2) Эксперементально определил наличие функции readQword(). При этом упоминаний про них на гитхабе ни в editor/autocomplete/ELF.lst, ни в help/ELF.js нет. Они специально удалены из документации или их просто забыли добавить?

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



Ранг: 134.0 (ветеран)
Статус: Участник
Qt Developer

Создано: 1 октября 2019 18:06 · Поправил: hors New!
Цитата · Личное сообщение · #27

vilimax пишет:
1) В случае если ELF файл имеет не корректные значения в полях ei_class и/или ei_data DiE (версия 2.04 х64 linux) не распознаёт это как валидный ELF и выводит тип файла как binary. Но при этом скриптовая функция ELFFile.isValid() распознаёт его как валидный.
Это баг?


Спасибо за тестирование.
Это философский вопрос можно ли считать файл с неправильными значениями ei_class и/или ei_data настоящим ELF файлом. Так как от этих значений зависит последующий разбор всего файла.

vilimax пишет:
2) Эксперементально определил наличие функции readQword(). При этом упоминаний про них на гитхабе ни в editor/autocomplete/ELF.lst, ни в help/ELF.js нет. Они специально удалены из документации или их просто забыли добавить?


Функция readQword будет везде прописана в следующей версии DiE.

Новые функции добавляются по просьбам пользователей, поэтому если есть ещё какие-то идеи для новых функций, то не стесняемся писать здесь или на почту horsicq[at]gmail.com

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


Ранг: 1.6 (гость)
Статус: Участник

Создано: 2 октября 2019 09:54 New!
Цитата · Личное сообщение · #28

hors пишет:
Это философский вопрос можно ли считать файл с неправильными значениями ei_class и/или ei_data настоящим ELF файлом. Так как от этих значений зависит последующий разбор всего файла.


Спасибо за быстрый ответ.

Возможно я не точно выразился. ELFFile.isValid() считает валидным файл абсолютно любое значение ei_class, даже когда оно отличается от указанного в спецификации (ELFCLASSNONE, ELFCLASS32, ELFCLASS64). Тоже самое и/или для ei_data. Хотя в спецификации остальные значения зарезервированы.

И второй вопрос (хотя мне кажется что это больше относится к javascript): потеря точности в последнем байте чтении 8-битных указателей. Пример следующий кусок скрипта:
Code:
  1. function run()
  2. {
  3. var file=BinaryFile;
  4. var szCurrentFile=script.getCurrentFileName();
  5. file.setFileName(szCurrentFile)
  6. i=0
  7. temp=""
  8.         while (i<8)
  9.         {
  10.         temp=file.readByte(0x0+i).toString(16)+temp
  11.         i=i+1
  12.         }
  13. script.addMessage("Qword adress pointer as text: "+temp)
  14. script.addWarningMessage("Qword adress pointer as digit: "+file.readQword(0x0).toString(16))
  15. script.addWarningMessage("Qword adress pointer convert by qwordToHex() "+script.qwordToHex(file.readQword(0x0)))
  16. }


Выводит:
Qword adress pointer as text: 987654321fedcba
Qword adress pointer as digit: 987654321fedc80
Qword adress pointer convert by qwordToHex() 0987654321fedc80

Соответственно вопрос как правильно работать с 8-битными значениями для сохранения точности?


Ранг: 134.0 (ветеран)
Статус: Участник
Qt Developer

Создано: 2 октября 2019 11:34 New!
Цитата · Личное сообщение · #29

vilimax пишет:
Возможно я не точно выразился. ELFFile.isValid() считает валидным файл абсолютно любое значение ei_class, даже когда оно отличается от указанного в спецификации (ELFCLASSNONE, ELFCLASS32, ELFCLASS64). Тоже самое и/или для ei_data. Хотя в спецификации остальные значения зарезервированы.


Ок. Я подправлю ELFFile.isValid() чтобы она проверяла ELFCLASS32/ELFCLASS64.

vilimax пишет:
И второй вопрос (хотя мне кажется что это больше относится к javascript): потеря точности в последнем байте чтении 8-битных указателей. Пример следующий кусок скрипта:


Да, это проблема JavaScript.

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


Есть несколько способов:

1) Конвертировать в строку.
2) Работать с DWORD.
3) Написать на C++ функции для конкретных задач, а потом вызывать их из скрипта.

Например поправить эти файлы:
https://github.com/horsicq/DIE-engine/blob/master/die_source/scriptbinary.h
https://github.com/horsicq/DIE-engine/blob/master/die_source/scriptbinary.cpp

А потом пересобрать DiE.

http://n10info.blogspot.com/2019/06/build-detect-it-easy-on-linux-windows.html


Ранг: 134.0 (ветеран)
Статус: Участник
Qt Developer

Создано: 7 октября 2019 00:29 · Поправил: hors New!
Цитата · Личное сообщение · #30



2.05

[+] Many bugs have been fixed.
[+] JSON output in console version.
[+] No UPX build for Windows version

Download: --> Link <--

| Сообщение посчитали полезным: plutos, d745150, Adler, BlackCode, parfetka, TRPD, mushr00m


Ранг: 23.9 (новичок)
Статус: Участник

Создано: 7 октября 2019 09:13 New!
Цитата · Личное сообщение · #31

hors пишет:
2.05

[+] Many bugs have been fixed.
[+] JSON output in console version.
[+] No UPX build for Windows version

Download: --> Link <--


На сайте картинка от версии 2.05, а ссылки на 2.04

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

<< . 1 . 2 . 3 . 4 . 5 . 6 . >>
 eXeL@B —› Софт, инструменты —› Detect It Easy 2.0

Оригинальный DVD-ROM: eXeL@B DVD !

Вы находитесь на форуме сайта EXELAB.RU
Проект ReactOS