Понадобилось подсмотреть за программой работающей через DLL. Описание на DLL есть. Через эту DLL я сам поработал, разобрался как работает. Захотел запустить под wdasm 8.7 и 10 программу которая работает с DLL - вываливается из WDASM при команде LOAD. Решил вставить прокладочку. Из файла ALF который создал wdasm для DLL. Вытащил имена функций и написал на DELPHI собственную DLL для подмены. Код (Text): //--------------------- function FT_ListDevices:dword;stdcall; asm pushad mov eax,001Ch Call Files // ЛОГ popad call _FT_ListDevices // перенаправление вызова ret end; //--------------------- Вызов передрал с примера обращения к DLL Код (Text): function _FT_ListDevices(pvArg1:Pointer;pvArg2:Pointer;dwFlags:Dword) : FT_Result ; stdcall ; External FT_DLL_Name name 'FT_ListDevices'; В лог записывается старт DLL, Вызов первой функции и все. Куда копать? Спасибо.
проверь по alt+ctrl+C что Delphi не вставил лишний код пролога и по необходимости используй ключ {$O+} или {$O-}.
Проблема была в том, что в стек заталкивался лишний адрес и входные/выходные данные в стеке сдвигались. При замене call на jmp все срослось. Для анализа возвращаемы данных работает такая конструкция. [pre] pop dword ptr RealRet // сохраним адрес возврата call _FT_Write // вызовем функцию за которой следимм push dword ptr RealRet // востановим адрес возврата ret [/pre] WDASM по прежнему вылетает и под WIN ME и под WIN XP. Может памяти не хватает?
WDASM 10 - жестоко похаченый 8.93. Найди оригинал 8.93 - работает вполне стабильно, хотя и выкидывает какую-то придурь при попытке листать страницы кнопками PgUp/PgDown.
WDASM 8.90 падает сразу при загрузке программы. WDASM 8.93 загружает программу и несколько десятков DLL, а затем падает. Есть ли еще какой инструмент слежения за программами и dll? Удобный и не сложный в изучении Спасибо.
мониторинг API обмена с DLL: APISPY v.2.5 Copyright (c) 1998-2000 Vitaly Evseenko WWW: http://madmat.hypermart.net Mirrored: http://www.matcode.com