Сейчас на форуме: asfa, bartolomeo (+6 невидимых) |
![]() |
eXeL@B —› Вопросы новичков —› Помогите подружить LIB и Delphi |
Посл.ответ | Сообщение |
|
Создано: 08 мая 2012 00:04 · Личное сообщение · #1 Помогите. Возникла необходимость из Delphi достучаться до файла LIB. Сам LIB - библиотека статической компоновки. Внутри - куча OBJ файлов. В принципе (если верить Гуглю ![]() 1) При помощи С++ из LIB сделать DLL. Долго курил мануалы ... Не осилил. Совсем С++ не знаю. 2) Вытащить OBJ и работать непосредственно с ними. Естественно придется "поиграться" с типом и порядком передаваемых функций. При помощи objconv вытащил OBJ в OMF формате ( Delphi COFF не понимает в принципе) Пытаюсь подцепить OBJ к Delphi - говорит "ошибка формата OBJ". Смотрю OBJ через IDA - говорит " Format : Object Module Format (OMF/Microsoft)" Видит экспорт, импорт и всё остальное ... А Delphi (XE) (RAD Studio 8.0) не хочет брать ... Что посоветуете? Есть описание OBJ OMF формата? На всякий случай воткнул OBJ файл. ![]() ![]() |
|
Создано: 08 мая 2012 00:42 · Поправил: ADMIN-CRACK · Личное сообщение · #2 |
|
Создано: 08 мая 2012 02:31 · Личное сообщение · #3 |
|
Создано: 08 мая 2012 03:05 · Поправил: ADMIN-CRACK · Личное сообщение · #4 |
|
Создано: 08 мая 2012 04:31 · Личное сообщение · #5 |
|
Создано: 08 мая 2012 09:53 · Личное сообщение · #6 ADMIN-CRACK вы правы вот здесь кто-то очень хорошо расписал свой опыт (.obj -> Дельфи) http://rvelthuis.de/articles/articles-cobjs.html правда не всякий obj можно заюзать! например С++ нельзя, obj не от Борладн компилера и т.д + надо прототипы функций самому в Дельфи написать...... Вобщем при желании можно ![]() |
|
Создано: 08 мая 2012 12:23 · Поправил: vden · Личное сообщение · #7 Одно дело прилинковать 1 obj или кучу. Все эти конверсии объектных файлов работают далеко не всегда. Как уже было сказано в посте #3, надёжнее сделать dll и переписать заголовки. Если билдером у вас получиться скомпилить исходники, то полученные obj можно будет прилинковать в delphi. Как например в zlib.pas и сделано. Но опять же может вылезти куча ньюансов. PS кстати в XE2 есть нативаная поддержка zip'ов, правда без паролей (facepalm) ![]() |
|
Создано: 08 мая 2012 13:01 · Личное сообщение · #8 |
![]() Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг" |
Создано: 08 мая 2012 13:06 · Поправил: ELF_7719116 · Личное сообщение · #9 Тут, как я понимаю, обсуждение уже в голосование перешло. Проще конечно - Dll и ее экспорт(GetModuleHandle/GetProcAddress) С другой стороны, если идет речь о формате zip и его pack/unpack, то обладая минимальные познаниями С++ можно запилить Delphi код из ![]() |
|
Создано: 08 мая 2012 21:27 · Личное сообщение · #10 |
|
Создано: 10 мая 2012 13:23 · Поправил: DSA · Личное сообщение · #11 Тема переросла в обсуждение архиваторов ![]() В общем рассказываю по мытарства в выходные: OBJ вытащил. В OMF формат конвертировал. Все дизассемблеры утверждают, что OBJ в OMF формате и что файл "нормальный". Вот только Delphi в упор файл не признает. Капризный? Возможно файл содержит некоторые "особенности" которые не нравятся Delphi. И только ему. В принципе возможно использовать "методом топора" ![]() Но: Нередко функция тащит за собой вызов функций из других OBJ. А это реально напрягает. Часто функция обращается к глобальному сегменту данных. Хранит там глобальные переменные, доступные для других функций. То-же не красиво ... Пока у меня нет приемлемого решения. 44 OBJ переписывать руками (в каждой от 1 до 60 функций) - проще застрелиться. Продолжаю думать и ковырять инет. P.S.: Не нужно обсуждать архиваторы. Данный файл был выбран на роль "подопытного кролика". В мелком файле проще разбираться и ковыряться. Аналог этого файла найти не проблема. А надо - сам напишу за пару часов. Это просто один из пары десятков OBJ. Просто я не нем обкатывал проблемы подключения OBJ из LIB. В принципе есть утилита LIB2DLL , но я никак не могу её найти. ![]() |
|
Создано: 11 мая 2012 07:33 · Поправил: yagello · Личное сообщение · #12 DSA пишет: В принципе есть утилита LIB2DLL , но я никак не могу её найти. Ну найти-то не проблема _http://www.findthatfile.com/download.php?i=3842561&t=hZIP _http://www.findthatfile.com/search-3842561-hZIP/winrar-winzip-download-rsxdj151.zip.htm _http://www.findthatfile.com/download.php?i=12987563&t=hZIP _http://www.findthatfile.com/search-12987563-hZIP/winrar-winzip-download-rsxdj131.zip.htm ![]() |
|
Создано: 11 мая 2012 20:18 · Личное сообщение · #13 |
|
Создано: 12 мая 2012 11:12 · Личное сообщение · #14 @DSA При помощи С++ из LIB сделать DLL. Долго курил мануалы ... Не осилил. Совсем С++ не знаю. Сделать библиотеку-wrapper может быть и рутинно, но вполне реально. Кроме того, достаточно экспортировать только то, что нужно. Вообще выложили бы lib, заголовки, сказали что хотите использовать. А так имхо все ответы уже даны. ![]() |
|
Создано: 12 мая 2012 12:12 · Личное сообщение · #15 |
|
Создано: 13 мая 2012 00:47 · Личное сообщение · #16 |
![]() |
eXeL@B —› Вопросы новичков —› Помогите подружить LIB и Delphi |