У меня есть devilish-gui.exe
, a devilish.dll
и devilish.h
из C-кода, которая была утеряна.
devilish-gui
до сих пор используется от клиента, и он использует devilish.dllКак перехватить вызовы библиотеки C в окнах?
devilish.h
плохо документированы в 30-страниц PDF: она предоставляет несколько функций C, которые ведут себя по-разному в зависимости от значений в структурах, предусмотренных как аргументы.
Теперь, я должен использовать devilish.dll, чтобы написать новый дьявольский веб-сервис. Нет, я не могу переписать его.
Документация практически бесполезна, но поскольку у меня есть devilish-gui.exe, я бы хотел написать другую реализацию devilish.h так, чтобы она вызывала вызов и аргументы функции журнала в файле, а не вызывала оригинал dll. Нечто похожее на то, что делает ltrace на linux, но специализируется на этой странной библиотеке.
Как написать такую «перехватывающую» dll на windows и ввести ее между devilish.dll и devilish-gui.exe?
Не могли бы вы реализовать собственный 'devilish.dll', который внутренне выполняет' LoadLibrary() 'в исходной версии, и вы реализуете все API-интерфейсы для вызова исходной версии, за исключением тех вызовов, которые вы действительно хотите комментировать? – jxh
Возможный дубликат [LD \ _PRELOAD эквивалент для Windows для предварительной загрузки разделяемых библиотек] (http://stackoverflow.com/questions/1178257/ld-preload-equivalent-for-windows-to-preload-shared-libraries) – jxh
Да, это то, что я хотел бы сделать, но в окнах я понятия не имею, как заставить devilish-gui загружать мою собственную реализацию. Единственное ограничение состоит в том, что я не могу изменить ни devilish-gui, ни devilish.dll. –