Нормально качается. Quantum А почему такой код странный для даты/времени? Слишком громоздкий. Здесь вроде попроще.
IceStudent Тот код по ссылке разбивает timestamp на составляющие, типа DD/MM/YY и т.п. Мне нужно было просто сконвертировать timestamp в строку, как в макросе display_num, который ещё более громоздкий. dead_body OK, в следующий раз запакую зипом.
Выкладываю версию 1.1: Добавил сортировку имён символов для совместимости со старыми версиями link.exe и полной совместимости со стандартом. Разделил __IMPORT_DESCRIPTOR_xxx и _xxx_NULL_THUNK_DATA на 2 разных обьектника чтобы не выскакивал варнинг в случае, если попадаются 2+ разные версии либы импорта для одной и тойже dll. Пофиксил несколько багов в предыдущей версии. TODO: Пофиксить /OPT:NOREF ЗЫ: Макрос использует директиву break, которая не доступна в старых версиях фасма.
v1.2: Пофиксил /OPT:NOREF - теперь линкуется и без этой опции. Добавил символы типа jmp [name] для любителей call [jmp <name>]. Почему-то IDA Pro теперь отказывается открывать lib-файл с этими символами, но Link и Polink абсолютно не жалуются. Добавил 2 ключа: USE_OPTIONAL_HEADER - включает в дескриптор импорта каждой директории optional header. Все новые версии линкеров игнорируют этот заголовок в обьектных файлах, но, кажется, очень старые версии MS LINK этот заголовок использовали для каких-то целей, т.к. он имеется в некоторых старых масмовских либах. USE_COMPID - MS LINK (link.exe и lib.exe) включают в каждый обьектник @comp.id. Если по какой-то причине Вы хотите чтобы implib генерировал эти compid'ы включите данную опцию.
v1.3: Пофиксил глюки, из-за которых IDA ругалась. Добавил возможность опционально задавать имена переходников (thunk) и публичных символов раздельно (у макроса появился ещё один опциональный аргумент). Имена переходников теперь тоже индексируются и сортируются для совместимости со старыми версиями MS LINK. Добавил проверку на уникальность всех символов перед добавлением в либу. Добавил пример более полноценной в смысле количества символов либы - winmm. Кроме стандартных символов из масмовской версии winmm.lib, добавил юникодовые версии функций и некоторые недокументированные символы. При всём этом, размер либы получается меньше, чем той, что в масме Вроде, реализовал уже всё, что хотел. Новая версия будет только если обнаружится какой-нибудь глюк.
IceStudent Надо будет ещё оптимизировать эти макросы на скорость, а то при создании большой либы заметны тормоза. И ввести поддержку очень длинных имён dll... Но это всё на будущее. All Если найдёте баг, не забудьте сообщить
v1.4 [*] Пофиксил парочку мелких багов. [+] Добавил исходник либы OpenAL v1.0 и v1.1. И буквально на следующий же день - v1.5 [+] Добавил ещё несколько проверок ошибок в аргументах. [*] Кавычки больше не нужны во всех аргументах макроса во избежание путаницы.
v1.6 [+] Добавил утиль DLL2DEF. [+] Добавил пример использования CDECL библиотеки напрямую из PureBasic. [+] Написал парочку туториалов (инглиш). Проект теперь хостится на сорсфорже: http://implib.sf.net
v1.7 Код (Text): [+] Возможность создания либ без оригинальных санков. [+] Куча примеров обновлённых версий стандартных либ: kernel32, user32, gdi32 и т.д. Основная польза от этих примеров - это возможность создания безсанковых версий стандартных либ. [*] Пофиксил мелкий баг в dll2def.
v1.8 Код (Text): [*] Исправил баг для совместимости с последними версиями LD. [*] Наконец перевёл документацию. implib.sf.net
Quantum Почему-то не нравится вашему dll2def olydbg.exe. На первой секции (.text) спотыкается вот здесь: Код (Text): /* Parse the Name Pointer RVA Table */ while(num_sections--){ /* Get the symbol's name */ if(SetFilePointer(hFile,psymbols_array,0,FILE_BEGIN) != psymbols_array) return ERR_BAD_FORMAT; ReadFile(hFile,&i,4,&aux,0); // i - левое значение принимает
letika я почему то даже не пользовался dll2def, а сразу заюзал dumpbin+perl для генерации скрипта для implib для Olly
wsd Хм. А зачем извращаться-то? Любой РЕ файл может иметь экспорт, так же, как и импорт ntoskrnl, например.
letika Код dll2def писался на основании примера из MSDN В общем, я подозревал, что он далёк от эталлона безглючности. Надо будет пересмотреть исходник и пофиксить...