Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.133.82.244] |
|
Страницы: (2) 1 [2] все ( Перейти к последнему сообщению ) |
Сообщ.
#16
,
|
|
|
Цитата А как поведет себя файл с точки зрения нормального ехе при замене этого поля? Вообще возможно использовать файл одновременно и как ехе и как длл? в смысле не в ущерб ни одному и ни другому. Да можно, всё будет ок. (ntoskrnl.exe например) Цитата Столкнулся с похожей задачей, делаю ехе с релоками, подгружаю как длл, определяю нормально адрес функции, но в самой функции адреса не поправленные, без смещений, получаю ошибку при выполнении. Проверь верность релоков. Грузишь LoadLibrary? |
Сообщ.
#17
,
|
|
|
Zyaba, LoadLibrary для exe
|
Сообщ.
#18
,
|
|
|
Всем спасибо, проблему решил релоком всех адресов в загруженном файле. В си++ 6 секция релоков к ехе добавляется по опции линкера /FIXED:NO
|
Сообщ.
#19
,
|
|
|
Цитата Zyaba @ Вообще возможно использовать файл одновременно и как ехе и как длл? в смысле не в ущерб ни одному и ни другому. Без проблем. Если функция в экзешнике объявлена на экспорт, то можно загрузить экзешник по LoadLibrary и вызывать ее как обычную из ДЛЛ. Проблема только в том что такой фокус прокатит только в случае если в функции делается чистая математика без использования обращения к статическим данным(адресам). Хотя при желании можно решить и эту проблему, если в экспортируемой функции прописать код возвращающий адреса на внутренние данные(строки, константы...) а потом уже обращаться к этим данным, или наоборот скармливать функции адреса на данные из вызвавшего процесса. Нормальная ДЛЛ при загрузке автоматически инициализирует область данных, имеет свое собственное пространство для глобальных, статических переменных, в случае же с экспортируемой функцией из ехе этого нет, Вы получаете просто точку входа в исполняемый код который должен сам позаботится о адресации к не инициализируемым автоматически на загрузке данным. |