Что нового

Еще один Dll Viewer

Автор
E

erlik

Продвинутый
Сообщения
317
Репутация
84
joiner
Спасибо за тест :smile:
Но есть вопрос:
предыдущая версия твоей программы нормально работает с любым каталогом и библиотекой
Я не понял - та версия открывает в 64-битной версии Windows библиотеки из каталога C:\Windows\System32 без всякого редиректа(то есть никакое перенаправление в SysWOW64 не срабатывает )? Или все таки нет.
Если да, тогда получается применение _WinAPI_Wow64EnableWow64FsRedirection вообще не нужно. Или я чего то не понимаю ...Как эта функция вообще работает - кто-нибудь может пояснить?
----------------------------------------
А никто не пробовал использовать псевдоним "Sysnative" для system32?
 
Автор
E

erlik

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

joiner

Модератор
Локальный модератор
Сообщения
3,557
Репутация
628
тоже считаю, что в данном случае лучше две версии программы. по разрядности. erlik, вроде как все работает
насчет отключения редиректа не вижу смысла заморачиваться.
 

Yashied

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

То есть, если у меня Windows x86, то я не смогу просматривать 64-битные DLL?
 

joiner

Модератор
Локальный модератор
Сообщения
3,557
Репутация
628
тут немножко другое. редирект это перенаправление в папки (если ничего не изменилось). то есть что DLLHelper также и DLL Viewer в 32-битном исполнении не могут подгружать библиотеки из system32.я уже писал здесь http://autoit-script.ru/index.php/topic,13419.msg85510.html#msg85510

если вытащить библиотеку в любую другую папку, то открыть ее можно. из папки system32 - нет. ни через диалог открытия файла, ни через перетаскивание.
зачем тогда пытаться все слепить в одном 32-битном приложении, если спокойно можно сделать два. не антивирусник же все таки.
 
Автор
E

erlik

Продвинутый
Сообщения
317
Репутация
84
Очередное обновление программы до версии 1.0.0.3: список изменений см. в истории версий.
Добавлена маленькая полезность: окно ввода для поиска файлов в дереве библиотек теперь ищет dll и на компьютере. Введите для теста любое имя существующей библиотеки (можно без расширения) - и если она находится в одной из папок определенных в переменных окружения, то будет мгновенно загружена в программу.
В целях оптимизации загрузки описаний функций из web для InetGet и InetRead установлена опция загрузки из кеша, если это возможно (регулируется в ini файле - параметр DownloadOption, по умолчанию 16).
 

joiner

Модератор
Локальный модератор
Сообщения
3,557
Репутация
628
есть некоторые пожелания
1.Сделать кнопку для раскрытия программы на весь экран. Растягивать окно очень уж жмучно
2. Сделать возможность изменять размеры областей просмотра в окне. То есть возможность изменять ширину.
3. Для поиска вызывать браузер по умолчанию, как отдельную программу а не подгружать в окно.
4. Ну и сделать что то с именами функций. чтобы не отображались дополнительные символы. Смотри скрин
 
Автор
E

erlik

Продвинутый
Сообщения
317
Репутация
84
joiner
1.
Сделать кнопку для раскрытия программы на весь экран.
Сделаю - точнее там в скрипте просто нужно убрать запрет на изменение размера (сделал это просто потому что с ресайзом контролов у меня вечная проблема - не очень красиво и пропорционально они меняют размеры. Думал, когда разберусь с этим - то и верну кнопку ресайза обратно :smile:)
2.
Сделать возможность изменять размеры областей просмотра в окне. То есть возможность изменять ширину.
Вот тут поподробнее.
3.
Для поиска вызывать браузер по умолчанию, как отдельную программу а не подгружать в окно.
А разве когда из контекстного меню выбираешь найти в yandex\google\ и т.д не в браузере открывается? (в программе, по крайне мере, именно так и предусмотрено и у меня именно в браузер запрос идет.)
...Если ты имеешь ввиду ссылку 'перейти к результатам поиска', которая погружает неудачный результат поиска в программу, то я могу просто сделать чтобы ссылка на страницу дублировалась в кнопку 'сигнатуры WinAPI' (она открывает страницу уже в браузере - так сделано для случаев удачного поиска, для неудачного поиска я счел это излишним, но добавить не проблема).

4.
чтобы не отображались дополнительные символы.
Вот тут не совсем от меня зависит: есть опции раздекорирования функций(и спец. функция для этого) - каждая из них
дает свой вариант конечного представления имени, полное раздекорирование по описанию в msdn должна давать опция COMPLETE, у меня по умолчанию используется NO_ARGUMENTS, так как удаляет еще и все аргументы из С++ функций, но тем не менее некоторые символы все равно остаются. Возможно нужный эффект даст побитовое сложение опций, но в GUI этого пока не предусмотрено, можно лишь в ini файле установить самостоятельно в параметре UnDecorate. (кстати в GDI32 у меня лишних символов не отображается :scratch: при любых опциях).
...Может кто подскажет какой набор опций раздекорирования лучше использовать?
 

joiner

Модератор
Локальный модератор
Сообщения
3,557
Репутация
628
erlik [?]
Цитата
Сделать возможность изменять размеры областей просмотра в окне. То есть возможность изменять ширину.
Вот тут поподробнее.
это когда изменяешь ширину колонки. ну , к примеру, в проводнике ты имеешь две колонки..левая - узкая. но ее ширину можно увеличить растягиванием

А разве когда из контекстного меню выбираешь найти в yandex\google\ и т.д не в браузере открывается? (в программе, по крайне мере, именно так и предусмотрено и у меня именно в браузер запрос идет.)
при выборе искать в рамблер вот такое сообщение в окне программы
Доступ к nova.rambler.ru: Хост в оффлайне.
остальные поисковики нормально работают..и правда открывают браузер..видимо я увидел ошибку и просто перестал пробовать.. :smile:

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

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

erlik

Продвинутый
Сообщения
317
Репутация
84
joiner
Насчет областей просмотра понял - посмотрим как это можно реализовать.
-------------------------------------------------------------------------------------
Насчет рамблера - сервер nova.rambler.ru оказывается тупо не пингуется, поэтому моя прога выдает, что он оффлайне при проверке доступа (делается при передаче запроса). Раньше он вроде пинговался. Можно конечно исключить проверку - тогда будет и в рамблере поиск производиться.


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

joiner
Кнопку развернуть на весь экран разблокировал. Правда ресайз элементов не такой какой мне хочется - можно в ini файле поиграться с настройками (секция resize),у меня так и не получилось все идеально сделать.
Проверка интернет соединения теперь опциональна (параметр CheckConnect=1, если 0 - не проверять), рамблер хотя по-прежнему не пингуется, но теперь открыть в нем поисковый запрос можно(если в первый раз выдает ошибку, попробовать другой поисковик, а затем снова его, либо вовсе отключить проверку хостов в ini-файле).
Ссылка 'перейти к результатам поиска' теперь дублируется в кнопку 'Сигнатуры WinAPI' во всех случаях поиска, а не только удачного. (Напомню что ссылка 'ссылка на страницу' - дублировалась туда изначально, если кто-то не заметил).
--------------------
Насчет изменения размеров областей просмотра (как я понял тебя интересует прежде возможность 'потягать' за край TreeView и ListView, чтобы увелчичить первый за счет второго - как это explorer делает). Для этого дела нужен элемент захвата как у статус бара (стиль $SBARS_SIZEGRIP). Чего то подобного у прочих контролов AutoiIT'а я не наблюдаю...
 

joiner

Модератор
Локальный модератор
Сообщения
3,557
Репутация
628
erlik [?]
Правда ресайз элементов не такой какой мне хочется
вполне приемлемый ресайз. все четко без миганий открывается на полный экран.
насчет растягивания - меня интересует нижнее окно, с браузером..если поиск делаешь, что читать в узеньком окне не удобно..вот его делать шире за счет других .

сделал изменения в файле настроек по поводу поиска через рамблер. вместо твоей строки поискового запроса установил вот эту
Код:
http://nova.rambler.ru/search?btnG=%CD%E0%E9%F2%E8%21&set=%24project_id&query
стало работать с первого раза

по поводу имен функций.. может перед в вставкой их в окно делать редактирование. удалять все знаки вначале слова. а там появляются только двоеточие и знак вопроса
что думаешь?
 
Автор
E

erlik

Продвинутый
Сообщения
317
Репутация
84
...делать шире за счет других
Так как элемент захвата есть только у статус бара придется выкручиваться самописными способами. Например добавить кнопку в уголок нижнего окна которая будет изменять размер всего GUI (высоту) и размер вложенного в нижнюю часть элемента браузера на разницу с новым значением высоты. Попробую.
по поводу имен функций.. может перед в вставкой их в окно делать редактирование
В принципе конечно можно и вручную удалять - но это единственные случай с двоеточиями и вопросом? (на каких то других либах еще проявляется?)
-------------------------------------------------
У меня лишние символы только в С++ либах бывают: типа такого
Код:
___fls_setvalue@8, ___fls_getvalue@4
или вот такой абсолютно не поддающийся раздекорированию вариант из msvcp71.dll
Код:
??$?5_WU?$char_traits@_W@std@@@std@@YAAAV?$basic_istream@_WU?$char_traits@_W@std@@@0@AAV10@AA_W@Z
 

joiner

Модератор
Локальный модератор
Сообщения
3,557
Репутация
628
насчет имен функций.
двоеточие и знаки вопроса бывают в разных функциях. бывает что все имена идут с этими знаками.
но редактирование не поможет. заметил, что эти знаки просто неверное отображение символов. то есть проблема скорее всего как ты и говорил, в декодировании.
например:
загрузил функции библиотеки cryptsp.dll
все имена отображаются корректно, только последнее имя появилось в таком виде ?? ::temFunction035
в поиске , в браузере, ввел это и получил поправку - на самом деле функция имеет такое имя : systemfunction035



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

и это еще не все.
подгрузил библиотеку GDI32.dll
функция ?? ::yPatBlt на самом деле имеет имя PatBlt, символы ?? ::y лишние. среди них видим букву..
значит корректировка имени функции уже усложняется..
кстати, если делать запрос из программы на поиск этих функций ( с неправильными именами), то поиска не происходит. то есть не запускается браузер. а если имя корректное, то ищет сразу.
 
Автор
E

erlik

Продвинутый
Сообщения
317
Репутация
84
joiner
Попробуй те либы которые ты приводил в примере открыть в PEexplorer (хотя нет - он же 64-битные dll не поддерживает), тогда в лучше Dll Export (NirSoft) - там также имена функций отображаются или нет интересно. У меня просто той же cryptsp.dll на XP нет, чтобы сравнить. А в GDI32 нормально все раздекорируется.
 

joiner

Модератор
Локальный модератор
Сообщения
3,557
Репутация
628
программа от nirsoft показывает все имена правильно.


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

скачал 32-битную версию твоей проги. так она еще больше режет имя - ?? ::Blt
осталось полслова.
 
Автор
E

erlik

Продвинутый
Сообщения
317
Репутация
84
Ясно. Придется пошаманить с функцией UnDecorateSymbolName из dbghelp.dll. Может у меня не совсем верный прототип составлен. Хотя для большинства либ работает таки... в общем странно. :scratch:
 

joiner

Модератор
Локальный модератор
Сообщения
3,557
Репутация
628
erlik
посмотри как сделано в http://autoit-script.ru/index.php?topic=10171.0 , есть исходники
там все имена правильно написаны
 
Автор
E

erlik

Продвинутый
Сообщения
317
Репутация
84
joiner
У Yashied'а функция (которую использую я) для раздекорирования имен вообще не применяется - а используется набор флагов для функции, которая непосредственно загружает имена функций - BitOR($SYMOPT_DEFERRED_LOADS, $SYMOPT_FAIL_CRITICAL_ERRORS, $SYMOPT_UNDNAME). По сути это тоже самое если ini файле моей программы вписать в параметр SymOpt=518.(по дефолту там только один флаг 0x00000001 - CASE_INSENSITIVE). Но все это (на моем компе с XP) ничего принципиально не меняет:
вот скрин (как говорится почувстуйте разницу :smile:)

Это на примере msvcp71.dll
В общем какие то функции видимо вообще не поддаются раздекорированию. А что касается твоих примеров, то мне нужно самому на семерке глянуть - с разными опциями, чтобы понять почему у меня так, а там - так. Пока не понимаю в чем дело.
 

AZJIO

Меценат
Меценат
Сообщения
2,894
Репутация
1,196
erlik
Если надумаешь делать сплитер, который меняет ширину окошек, вот ссылка как пример. Смотри функцию _ResizeField.
Или http://autoit-script.ru/index.php/topic,11231.0.html
Или GUIFrame
 

joiner

Модератор
Локальный модератор
Сообщения
3,557
Репутация
628
erlik
смотри мои скрины. библиотека msvcp71.dll в моем случае находится в папке SysWOW64
твоя программа в 32- битном исполнении искажает имена файлов - смотри первый скрин
но в некоторых случаях наоборот - показывает правильно имя. смотри скрин 2
 
Верх