Что нового

Еще один Dll Viewer

erlik

Продвинутый
Сообщения
317
Репутация
84
AutoIt: 3.3.8.1
Текущая версия: 1.0.0.6 от 28.03.2014

Категория:Разное

Описание:
Ох и развелось энтих viewer-ов, скажите вы. И будет правы - куда нам, как говорится, с AutoIt-шным frontend'ом в калашный ряд после Nir'а Sofer'a. Однако, хотя прога и не на 'плюсах', есть и у нее свои плюсы. :IL_AutoIt_1:

Итак, какие возможности дает программа:
1 Перечисление экспортируемых DLL функций(полное или по маске).
2 Поддержка x86 и x64 DLL файлов.
3 Просмотр информации о модуле dll.
4 Разнообразие выбора вариантов загрузки dll.
5 Поддержка командной строки.
6 Горячие клавиши на все основные действия.
7 Поддержка Drag-and-Drop файлов dll.
9 Возможность открывать файлы dll из контекстного меню.
10 Возможность просмотра недекорированных имен DLL функции(+выбор опций).
11 Установка фильтра (масок) для вывода функций.
12 Поиск по списку отображаемых функций.
13 Копирование данных из списка в буфер обмена.
14 Список последних открытых файлов (до 10).
15 Экспорт данных в html или txt файл.
16 Поисковые запросы на основные web-сервисы
17 Открытие web страниц с описанием функций из контекстного меню программы.
18 Загрузка описаний функций с сайтов msdn.microsoft.com и pinvoke.net.
19 Можно указать свои поисковые сервисы (неограничено).
20 Можно указать свои сайты для загрузки описаний функций (неограничено).

Недостатки программы:
Отсутствие встроенных дизассемблера и HEX-редактора.
Будем работать.
Шучу, конечно ;)

Файл: Версия: 1.0.0.6
32-бит exe
64-бит exe
исходник
Снимок:


История версий:
28.03.2014
* Исправлена досадная опечатка в имени переменной, из-за которой программа падала при выборе пункта контекстного меню 'Открыть свойства файла'.
----------------------------------------------------------------------
12/03/2014
*** Выпущена новая версия программы: Dll Viewer v1.0.0.6.
* Исправлено: функция проверки доступности интернета _WinAPI_IsNetworkAlive заменена на_WinAPI_IsInternetConnected, также подкорректирован ping.
* Исправлено: подвисание программы в случае долгой загрузки страницы описания функции. Теперь в InetGet и InetRead добавлен выход по таймауту в 10 секунд.
* Исправлено: функция копирования списка в форматированный под таблицу текст полностью переписана под универсальный вариант. Также исправлена проблема с неправильным отображением данного текста в Notepad.
* Исправлено: из-за убранной заглушки определения типа архитектуры файла в v1.0.0.5, программа падала при включении опции 'Не загружать описания функций' и последующем клике на файл. Заглушка заменена на соответствующую функцию.
* Исправлено: не снятие (в некоторых случаях) выделения предыдущих пунктов в дереве dll при поиске.
* Исправлено: шаблон поиска ссылок на msdn, так как прежний стал плохо срабатывать после изменения дизайна поисковика search.microsoft.com
* Исправлено: прочие мелкие правки.
* Добавлено: новые параметры ini файла - DefaultPingSite,DefaultPingTime,InetGetWaitTime.
* Добавлено: новый сайт для парсинга описаний WinAPI функций - w32api.narod.ru.
* Добавлено: в списке текущих процессов в 64-битной Windows 32-битные процессы помечаются как (*32).
* Добавлено: список текущих процессов обновляется каждые 10 секунд.
* Добавлено: список функций модуля теперь сортируется при заполнении ListView.
* Изменено: список недавних файлов вынесен в отдельное выпадающее меню и добавлен пункт очистки меню.
--------------------------------------------------------------------------
23/02/2014
*** Выпущена новая версия программы: Dll Viewer v1.0.0.5.
Программа скомпилирована в одну 32-разрядную версию после решения основных проблем
с файловым перенаправлением в 64-битной среде Windows.
* Исправлено: невозможность открытия 64-битных библиотек в 32-битной версии программы.
* Исправлено: ошибка в формировании имени отчета.
* Исправлено: шаблон поиска описаний функций на msdn - под новый стиль оформления сайта.
* Добавлено: новая функция для создания красивых Html отчетов.
* Удалено: использование скина из UDF SkinSharp из-за его некорректной работы.
--------------------------------------------------------------------------
24/05/2013
*** Выпущена промежуточная бета версия программы: Dll Viewer v1.0.0.4.
* Добавлено: расширенная настройка раздекорирования функций и загрузки символов.
* Исправлено: нерегистрация хоткеев из-за русской раскладки на компьютере.
* Исправлено: изменение размеров главного она на дефолтные с развернутого состояния при закрытии окна настроек.
--------------------------------------------------------------------------
18/05/2013
*** Выпущена промежуточная бета версия программы: Dll Viewer v1.0.0.3.
* Добавлено: окно ввода для поиска файлов в дереве библиотек теперь ищет dll и на компьютере. Введите для теста любое имя существующей
библиотеки(можно без расширения) - и если она находится в одной из папок определенных в переменных окружения, то будет мгновенно загружена в программу.
* Исправлено: удаление пункта дерева без родителя - теперь пункт удаляется совместно с родителем, если он единственный элемент на своем уровне.
* Исправлено: UDF GUICtrlHyperLink v1.1 заменена на исправленную GUICtrlHyperLink v1.2.
* Исправлено: недоступность сервера nova.rambler при поисковом запросе (ошибка пинга)
* Оптимизировано: проверка интернет-соединения производится сразу при старте программы, тем самым исключаются лишние проверки при каждой загрузке описаний функций.
* Добавлено: разблокирована максимизация окна (настройка ресайза элементов доступна в ini файле).
--------------------------------------------------------------------------
28/04/2013
*** Выпущена промежуточная бета версия программы: Dll Viewer v1.0.0.2.
* Исправлено: невозможность поиска в списке функций с указанной пользователем строчки (ошибка в скрипте).
* Исправлено: сворачивание окна поиска после нахождения результатов (окну установлен атрибут 'поверх всех окон').
* Исправлено: получение адресов функций незагруженных библиотек: вместо _WinAPI_GetProcAddress используется сумма ImageBase+RVA функции.
* Исправлено: из-за ошибочного условия в v1.0.0.1 добавление последних открытых файлов в меню из ini-файла не происходило.
* Исправлено: из-за ошибочной правки в v1.0.0.1 кнопка 'добавить' в окне настроек не работала.
* Добавлено: горячая клавиша для запуска поиска в списке функций - F3(работает только если главное окно в фокусе).
--------------------------------------------------------------------------
24/04/2013
*** Выпущена промежуточная бета версия программы: Dll Viewer v1.0.0.1.
* Исправлено: падение программы при попытке выгрузить системную библиотеку.
* Исправлено: некорректное выделение элементов TreeView на клик правой кнопкой.
* Исправлено: отображение в заголовке DOS hex значений для 64-битного файла с 8 на 16-значное.
* Исправлено: ошибка записи текста справки в файл в режиме дозаписи вместо перезаписи.
* Исправлено: невозможность изменить путь до временного файла в параметре PagePath.
* Исправлено: невозможность изменить url для отображения в ссылке 'Сигнатуры WinAPI' в параметре DefaultHyperLink.
* Исправлено: отсутствие привилегий для перечисления модулей процесса csrss.exe.
* Исправлено: прочие мелкие правки.
* Добавлено: выпадающий список для установки опций загрузки символов в настройках.
* Добавлено: библиотеки открытые методом drag and drop также попадают в список недавно открытых файлов.
* Добавлено: новый поисковый шаблон для функций С++.
* Добавлено: новый пункт контекстного и выпадающего меню.
* Добавлено: горячая клавиша для обновления (новой загрузки) списка функций - установка в ini файле.
--------------------------------------------------------------------------
09/04/2013
*** Выпущена первая публичная бета версия программы: Dll Viewer v1.0.0.0
--------------------------------------------------------------------------

PS: Если у кого то при попытке скачать описание функции программа пишет, что нет интернет подключения (а у вас оно включено), откройте файл dllviewer.cfg и замените в параметре CheckConnect значение 1 на 0. В этом случае программа не будет пытаться пинговать сервера перед отправкой запроса.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Re: Еще один Dll Viewer... качать всем

erlik,
Поправьте ссылку на файл.
Исходника не будет?

PS
erlik [?]
...виеверов ... с автоайтишным...
Предупреждение За нарушение общих правил (пункт В.8):
Так как эта конференция называется "Русское сообщество AutoIt", язык общения на ней - Русский. Названия фирм или программных продуктов, аббревиатуры и т.д. должны быть написаны так, как они пишутся в оригинале, например не следует писать УСБ вместо USB. На форуме крайне не рекомендуется намеренно искажать русский язык и использовать "сетевой жаргон" на подобии "Аффтар выпей йадау!".


С уважением, ваш Модератор.
 
Автор
E

erlik

Продвинутый
Сообщения
317
Репутация
84
Re: Еще один Dll Viewer... качать всем

Чего то я не понял - почему по ссылке отсюда не переходит. Если ее скопировать и вставить в браузер - то все окей. У меня файл на disk.yandex залит в публичный доступ.
---------------------------------------
Все поправил :smile:

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

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Re: Еще один Dll Viewer... качать всем

Мне нужно доказательство что это написано на AutoIt (сигнатуры я не нашёл), иначе придётся убрать тему.
Впрочем неважно, нашёл как оно упаковано.
 

asdf8

Скриптер
Сообщения
564
Репутация
152
Re: Еще один Dll Viewer... качать всем

CreatoR [?]
Мне нужно доказательство что это написано на AutoIt

Это точно написано на AutoIt, и сигнатуры есть и окно нужного класса.
 
Автор
E

erlik

Продвинутый
Сообщения
317
Репутация
84
CreatoR
Выложил в шапке темы под спойлер кусок кода.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
asdf8 [?]
Это точно написано на AutoIt, и сигнатуры есть и окно нужного класса.
Я изначально программу не рисковал запускать, в самом файле сигнатуры AutoIt нет, она есть в упакованном файле.

erlik
Это было не обязательно, я перечеркнул то что написал, т.к смог определить что это действительно написано на AutoIt (при чём не запуская программу).
 

VladUs

Скриптер
Сообщения
621
Репутация
181
OffTopic:
Не знаю... мне понравилось...
:smile:
 

asdf8

Скриптер
Сообщения
564
Репутация
152
erlik
Есть возможность добавить определение количество параметров функций, хотя-бы для функций со stdcall-вызовом?
 
Автор
E

erlik

Продвинутый
Сообщения
317
Репутация
84
asdf8
определение количество параметров функций, хотя-бы для функций со stdcall-вызовом
А поподробнее? Не совсем понял что имеется ввиду.
Если б знать как это делается (как их получить) - добавить то всегда можно.
-------------------------------------------
По поводу флагов раздекорирования функций.(устанавливается в настройках - значения флагов есть на msdn, но я не пока не сильно в них разбирался). Деефолтный флаг -$UNDNAME_NO_ARGUMENTS. У меня на данный момент можно выбрать любой флаг для передачи аргументом в
Код:
$Ret=DllCall('dbghelp.dll', 'int', 'UnDecorateSymbolName', 'str', $sDecorSym, 'str', "", 'int', 1024, 'int', $iOpt)

, но нельзя выбрать сумму флагов (я просто не знал, что так можно). В дальнейшем добавлю такую возможность.
 
Автор
E

erlik

Продвинутый
Сообщения
317
Репутация
84
asdf8
Если в настройках раздекорирования функций выставить COMPLETE, то будет почти как у тебя на скрине
То есть все аргументы у некоторых функций С++ (из библиотеки msvcrt.dll) присутствуют.
Но в таком виде делать запрос на скачивание описания функции из msdn нельзя, поэтому у меня используется флаг NO_ARGUMENTS. Вот результат с этим флагом:
Страница с описанием найдена, правда поисковый шаблон не смог распарсить ее (на http://msdn.microsoft.com/en-us/library/52cs05fz(v=vs.71).aspx, где находятся описания С++ библиотек, другая разметка абазцев) и выдал только ссылку на страницу, которую я и загрузил в окно программы.
------------------------
Материал по ссылке, которую ты мне дал надо будет на досуге осмысливать. Я ведь с С++ дела никогда не имел.

----------------------------------------------------------
Обновил ссылку с программой в связи с добавлением в ini- файл нового шаблона - теперь сигнатуры функций С++ также загружаются в окно описания. В код программы также была внесена небольшая правка связанная с новым шаблоном.
 
Автор
E

erlik

Продвинутый
Сообщения
317
Репутация
84
Обновил программу до версии 1.0.0.1.
Почти все правки пока носят сугубо косметический характер, хотя кое-что добавлено и новое. Список изменений под спойлером в истории версий.
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
при попытке открыть какую-нибудь dll из system32
в предыдущей версии программы такой ошибки не было. все работало
 
Автор
E

erlik

Продвинутый
Сообщения
317
Репутация
84
joiner
Попробуем найти где ошибка закралась - пока не могу вопроизвести ее. У тебя 32 или 64 битная система?
-------------------------
Можешь поподробнее воспроизвести порядок действий когда возникает ошибка? И во всех ли случаях она происходит. У меня пока никак она не ловится.
Единственное, что я добавил в функции, которые открывают(добавляют) в дерево библиотеки - это _WinAPI_Wow64EnableWow64FsRedirection($iRedirect). Но оно должно (срабатывать) включаться только на 64-битных системах. На них, я увы, не тестил. Не из-за этого ли интересно ошибка? В общем пока буду искать причину.
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
у меня win 7 x64
предыдущая версия твоей программы не дает сбой. проверил только что. UAC тоже включен. всегда
еще ты не отработал возможность ошибки. как раз на такой случай. нет массива и получаем крах
насчет редиректа, то не все уверены вообще в целесообразности применять эту функцию. почитал в инете отзывы. я писал прогу для работы с реестром и каталогами, в итоге решил разделить ее на 32-битную и 64-битную..чтобы избежать косяков в системе.
по одному из доводов - когда применяется редирект, то может произойти крах какого - нибудь приложения, для которого смена путей губительна.
 
Автор
E

erlik

Продвинутый
Сообщения
317
Репутация
84
joiner
Если все так, как ты говоришь, тогда действительно надо будет две версии программы сделать.
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
joiner сказал(а):
когда применяется редирект, то может произойти крах какого - нибудь приложения, для которого смена путей губительна
Проблемы могут возникнуть только в том приложении, в котором применяется редирект. Это локальная функция. Поэтому рекомендуется включать редирект обратно, когда оно уже не нужно. Например при открытии файла: отключить, открыть файл и сразу же включить.


Добавлено:
Сообщение автоматически объединено:

erlik сказал(а):
joiner
Если все так, как ты говоришь, тогда действительно надо будет две версии программы сделать.
В этом нет никакого смысла. Приложения такого рода должны уметь работать с однозначно заданными пользователями путями.
 
Автор
E

erlik

Продвинутый
Сообщения
317
Репутация
84
Yashied
Поэтому рекомендуется включать редирект обратно, когда оно уже не нужно
Именно так и делал. Однако ж ...
Пока ищу косяк у себя. А в проге сделаю отключение редиректа опциональным (на всякий случай). ;)
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
вобщем, я нашел ошибку, точнее повод к переделке
erlik
если твою прогу компилить как х32, то она дает сбой в системе х64. точнее, она дает сбой, если выбирать библиотеки из C:\Windows\System32. если же открыть папку C:\Windows\SysWOW64 и выбрать там библиотеку, то краха нет.
а версия х64 твоей программы в 64-битной ОС работает нормально с библиотеками из любых каталогов.
короче, проблемы с редиректом. неправильное применение. возможно он отключается раньше, чем подгружена библиотека в программу, соответственно - программа не получает реальный путь, нет файла, нет массива



Добавлено:
Сообщение автоматически объединено:

предыдущая версия твоей программы нормально работает с любым каталогом и библиотекой . ищи ошибку в добавленных функциях. точнее, в адекватности их применения :smile:
нужны ли они вообще?
 
Верх