Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа со старой 16-ти битной DLL, Ничем не открывается старый формат 
:(
    Опции темы
Georg4
Дата 23.7.2012, 17:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 961
Регистрация: 2.11.2002

Репутация: нет
Всего: 10



Друзья, привет всем.
Возможно я не верно выбрал раздел, но пока не знаю где это должно быть.

Краткая предыстория.

У меня на работе испоконе веков пользуемся одной утилиткой, написанной ещё во времена Винды 3.11 и немного модифицировавшейся уже в 95-ю эпоху.
Программа исправно вполняет свои задачи, но проблема в том, что она совершенно устарела в плане производительности. Выполняет задачи очередью, про многопроцессорные системы ничего не знает и процессы не параллелит. Плюс обладает совсем бесящей функцией кейхука во время работы. Если она выполняет задачи (а они могут быть от 10 минут до 2-х часов), нажатие на любую клавишу приводит к зависанию любого активного виндового окна (не виснет только FAR-manager, в нем и работаем пока программа выполняет заданные функции). 
Поскольку контора моя международная, кто, когда и где делал эту прогу уже невозможно выяснить и, самое страшное, что пол-европы, Россия, Украина, прибалты работают на ней и не задумываются о том, что это может работать быстрее.
Поначалу я придумал запускать на нескольких виртуальных машинах параллельно 2-3 экземпляра и параллельно работать на основной, назначая каждому окну VM свой CPU. 
Но потом решил посмотреть, где же кроется этот хук на клавиши (вероятно на заре 90х он был актуален, чтобы ресурсы не тратить, а теперь только мешает) снял я ПроцессМонитором все внутренние DLL ки к которым обращается программа во время работы и уж было думал, что всё получится. Но тупо не могу найти чем и как хотябы просмотреть список функций внутри. Да что там функций, эти DLLки распознаются как старые  16-ти битные NE Executable (так ругнулся Resource tuner от heaventools) и никто ничего прочитать не может. 

Чем бы можно было рассмотреть эти DLLки?
Хотя бы понять список функций.
Я помню читал как создают свою DLL которая просто импортирует все функции другой, кроме тех, что нужно изменить, а они прописываются внутри новой DLL. Порыться в сети и можно найти это дело, но как узнать, что в этом DLL вообще есть?
Может имеются методы сделать из 16-ти битной старой, 32 битную новую и уже её использовать?
Вот одну прилагаю в приложении.
Если кто подскажет, буду очень признателен.


--------------------
Никто и никогда не должен решать одну проблему дважды
PM MAIL ICQ   Вверх
500mhz
Дата 23.7.2012, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


шайтан
***


Профиль
Группа: Завсегдатай
Сообщений: 1017
Регистрация: 5.5.2008
Где: Киев / Italy

Репутация: нет
Всего: 14



И где приложение?


--------------------

PM MAIL ICQ   Вверх
DarkProg
Дата 23.7.2012, 20:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Законченный романтик
***


Профиль
Группа: Завсегдатай
Сообщений: 1784
Регистрация: 11.3.2009
Где: Земля

Репутация: нет
Всего: 19



Попробуйте её открыть чем-то вроде IDA. IMHO если DLL была написана для конкретного приложения, скорее всего в ней будет немного функций, и если просидеть с огромным желанием и усердием, то можно я думаю разобраться что к чему(я имею в виду выделить нужные рабочие процедуры и их переписать на новый лад), но не факт что старое приложение с радостью съест новую DLL. Скорее всего будет какая-то ошибка.

Цитата(Georg4 @  23.7.2012,  18:24 Найти цитируемый пост)
пол-европы, Россия, Украина, прибалты работают на ней и не задумываются о том, что это может работать быстрее.

Работа с файлами? Если так проще написать современную для себя, особенно если формат взаимодействия известен.


--------------------
"И твоя голова всегда в ответе за то куда сядет твой зад..."

"Я студент - скажите с какого я ВУЗа..."

 smile  smile  smile 
PM MAIL   Вверх
Georg4
Дата 23.7.2012, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 961
Регистрация: 2.11.2002

Репутация: нет
Всего: 10



Сорри, ребята. Затупил. Страница заглючила, когда добавлял, а второй раз забыл приложить. Завтра утром прийду на работу - приложу обязательно.

Цитата

Работа с файлами? Если так проще написать современную для себя, особенно если формат взаимодействия известен. 


Там очень-очень хитровыдолбленный процесс. Сам процесс не менялся годами, но полностью его глубину с высоты моего отдела идаже всего украинского офиса не постичь. Суть в том, что из специально структурированного огромных (по тем временам огромных это от 100мб до 1гб) размеров текстового файла создаётся так называемая база данных inf*act. Такой не очень распространённый тип 4-х мерной базы данных. Параллельно некоторые вычислимые поля вычилсяются (хотя возможно эти данные уже вычислины в изначальном файле, тут мнения разошлись).
Плюс побочные функции ввиде просмотрщика этих баз, возможности делать merge двух баз с одинаковыми измерениями и кое что другое.
Как бы работа с файлами, но копать глубоко.

Я сам думал что старое приложение не схавает новые DLL. Подумал сегодня установить виртуально 95 винду и там старыми средствами создать что-нибудь старое smile

А вот уходя с работы я нашел таки одно средство которым смог разобрать и DLL и EXE. Tdump.exe Он же Borland Turbo Dump толи 1988 толи 1992 года.
Правда я только бегло просмотрел полученный тектовик и мало что понял. Увидел только какие DLLки вызывает EXE полный список. Я тогда отловил всего 2 а там около 10 вообще. Плюс, я в DLL вроде бы увидел списко функций, а вроде бы не он. Я не понимаю пока формат файла. Завтра поищу доки и посмотрю как быть.

IDA я тоже нашел, завтра скачаю и попробую посмотреть, как оно пойдёт. 
В общем завтра ещё отпишусь и пришлю сюда файл.


--------------------
Никто и никогда не должен решать одну проблему дважды
PM MAIL ICQ   Вверх
Georg4
Дата 24.7.2012, 09:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 961
Регистрация: 2.11.2002

Репутация: нет
Всего: 10



Вот оно, вложение!

Присоединённый файл ( Кол-во скачиваний: 2 )
Присоединённый файл  GDSLIB.DLL 180,09 Kb


--------------------
Никто и никогда не должен решать одну проблему дважды
PM MAIL ICQ   Вверх
Georg4
Дата 24.7.2012, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 961
Регистрация: 2.11.2002

Репутация: нет
Всего: 10



И ещё один. Они между собой связаны.

Присоединённый файл ( Кол-во скачиваний: 1 )
Присоединённый файл  GDSSVC.DLL 215,11 Kb


--------------------
Никто и никогда не должен решать одну проблему дважды
PM MAIL ICQ   Вверх
Georg4
Дата 24.7.2012, 10:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 961
Регистрация: 2.11.2002

Репутация: нет
Всего: 10



А пока суть да дело, я установил IDA и там прогнал и EXE и самое главное  GDSLIB.DLL
Вот в последнем и обнаружил нечто похожее на то, что искал.
функции: 
ACNKEYHOOK
ACNSETWSKEYHOOK 
ACNCLEARWSKEYHOOK
среди многих.
ACN это корпоративная приставка.

Короче, эти функции вызывают последовательно из библиотеки USER (я так понимаю это user32.dll там видиом должы сохраниться старые функции из user.dll):
ACNKEYHOOK
-GETKEYSTATE
-GETACTIVEWINDOW
-GETWINDOWWORD
-GLOBALLOCK
-GLOBALUNLOCK
-DEFHOOKPROC

ACNSETWSKEYHOOK 
-SETWINDOWSHOOK

ACNCLEARWSKEYHOOK
-UNHOOKWINDOWSHOOK
-FREEPROCINSTANCE


Узнать, узнали. Чего делать теперь ?


--------------------
Никто и никогда не должен решать одну проблему дважды
PM MAIL ICQ   Вверх
500mhz
Дата 24.7.2012, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


шайтан
***


Профиль
Группа: Завсегдатай
Сообщений: 1017
Регистрация: 5.5.2008
Где: Киев / Italy

Репутация: нет
Всего: 14



Ну вот берите смотрите )
Там импорт по ординалам в виде  16: PTR      Import by ordinal        1C7F   KERNEL.15



Присоединённый файл ( Кол-во скачиваний: 1 )
Присоединённый файл  DUMP.zip 25,96 Kb


--------------------

PM MAIL ICQ   Вверх
500mhz
Дата 24.7.2012, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


шайтан
***


Профиль
Группа: Завсегдатай
Сообщений: 1017
Регистрация: 5.5.2008
Где: Киев / Italy

Репутация: нет
Всего: 14



Напишите свой загрузчик ехешника вашего, который подменяет SETWINDOWSHOOK и SETWINDOWSHOOKEX, а потом ехешник запускает.

Присоединённый файл ( Кол-во скачиваний: 0 )
Присоединённый файл  DUMP.zip 25,96 Kb


--------------------

PM MAIL ICQ   Вверх
Georg4
Дата 24.7.2012, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 961
Регистрация: 2.11.2002

Репутация: нет
Всего: 10



Значит лоадер нужно написать.
А почитаю-ка я RSDN на эту тему smile


--------------------
Никто и никогда не должен решать одну проблему дважды
PM MAIL ICQ   Вверх
500mhz
Дата 24.7.2012, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


шайтан
***


Профиль
Группа: Завсегдатай
Сообщений: 1017
Регистрация: 5.5.2008
Где: Киев / Italy

Репутация: нет
Всего: 14



А можно не изобретать велосипед, поставить AVZ и сбросить хуки )))


--------------------

PM MAIL ICQ   Вверх
Georg4
Дата 24.7.2012, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 961
Регистрация: 2.11.2002

Репутация: нет
Всего: 10



AVZ Всмысле антивирус?
Разверни тему, пожалуйста более детально. А то я за день чтения разных доков по перехвату API уже готов на всё smile лишь бы ничего не пытаться писать.


--------------------
Никто и никогда не должен решать одну проблему дважды
PM MAIL ICQ   Вверх
Georg4
Дата 25.7.2012, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 961
Регистрация: 2.11.2002

Репутация: нет
Всего: 10



А если открыть exe через Hiew и там поставить ноп на вызов ACNSETWSKEYHOOK 
Только нужно узнать начальный адресс и длинну этого куска кода.


--------------------
Никто и никогда не должен решать одну проблему дважды
PM MAIL ICQ   Вверх
500mhz
Дата 25.7.2012, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


шайтан
***


Профиль
Группа: Завсегдатай
Сообщений: 1017
Регистрация: 5.5.2008
Где: Киев / Italy

Репутация: нет
Всего: 14



http://www.z-oleg.com/secur/avz/download.php/  AVZ )

ACNSETWSKEYHOOK  нет такой айпишки в винде


--------------------

PM MAIL ICQ   Вверх
Georg4
Дата 25.7.2012, 19:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 961
Регистрация: 2.11.2002

Репутация: нет
Всего: 10



Что такое AVZ я знаю (правда не пользуюсь) установил сегодня утром. Его наличие никак не повлияло на процесс.

ACNSETWSKEYHOOK само собой нет. Она лежит в библиотеке GDSLIB.dll
 


--------------------
Никто и никогда не должен решать одну проблему дважды
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Технологии: Разные | Следующая тема »


 




[ Время генерации скрипта: 0.1974 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.