Сейчас на форуме: hgdagon, asfa, bartolomeo (+4 невидимых) |
![]() |
eXeL@B —› Программирование —› Заюзать экспорт из EXE - как? |
Посл.ответ | Сообщение |
|
Создано: 27 декабря 2006 18:30 · Личное сообщение · #1 |
|
Создано: 27 декабря 2006 19:14 · Личное сообщение · #2 |
|
Создано: 27 декабря 2006 22:32 · Поправил: kropalik · Личное сообщение · #3 1. написать плагин (.dll) которую загрузит этот exe. из нее вызывать функции находящиеся в .exe (при необходимости подпавить EntryPoint добавив туда загрузку твоей .dll и затем jmp на OEP) 2. написать свой .exe с базовым адресом (image base) таким чтобы оставить свободным адрес 0x400000 потом поюзать LoadLibrary + GetProcAddress EntryPoint тоже придется подправить тк .exe не вернет управление или юзать LoadLibraryEx ![]() |
|
Создано: 27 декабря 2006 23:02 · Личное сообщение · #4 |
|
Создано: 27 декабря 2006 23:04 · Личное сообщение · #5 |
|
Создано: 27 декабря 2006 23:07 · Личное сообщение · #6 |
|
Создано: 27 декабря 2006 23:59 · Поправил: S_T_A_S_ · Личное сообщение · #7 Чем скомпилен EXE? По умолчанию экспорты делают борланды, но они и релоки оставляют. Если релоков нет, то решение, предложенное asd, имхо единственно рабочее (см. аттач). Для гарантии, что 0x40000 никто не займёт к моменту загрузки EXE, можно свой exe слинковать на 0x40000, создать в нём подходящую пустую секцию и отобразить туда другой exe руками. ![]() ![]() |
|
Создано: 28 декабря 2006 05:27 · Личное сообщение · #8 |
|
Создано: 28 декабря 2006 05:46 · Личное сообщение · #9 Tim пишет: написать плагин (.dll) которую загрузит этот exe. из нее вызывать функции находящиеся в .exe (при необходимости подпавить EntryPoint добавив туда загрузку твоей .dll и затем jmp на OEP в таком случае что есть экспорт - что нет - глубоко пофигу, ибо длл вполне может вызывать код по конретным хардкодным адресам. ![]() |
|
Создано: 28 декабря 2006 06:43 · Личное сообщение · #10 |
|
Создано: 28 декабря 2006 11:19 · Личное сообщение · #11 |
|
Создано: 28 декабря 2006 12:05 · Личное сообщение · #12 |
|
Создано: 30 декабря 2006 00:51 · Личное сообщение · #13 infern0 пишет: в таком случае что есть экспорт - что нет - глубоко пофигу, ибо длл вполне может вызывать код по конретным хардкодным адресам. да конечно. просто если в exe есть экспорт это значит что скорее всего это для поддержки плагинов. в этом случае ничего патчить не придется просто написать свой 'плагин' ![]() |
|
Создано: 01 января 2007 22:07 · Личное сообщение · #14 |
|
Создано: 03 января 2007 14:13 · Поправил: s0larian · Личное сообщение · #15 Tim, думаю что всё сведётся к одному вопросу - в какой момент надо/можно вызывать этот export. Иными словами, сколько инициализации требуется от самого exe? Если ничего, и, соответственно, export не трогает глобальные переменные, heap, etc и сам делает себе init/cleanup, то можно вбить "ret" в entry point и пользоваться файлом как DLLкой. ![]() |
|
Создано: 04 января 2007 04:01 · Личное сообщение · #16 |
|
Создано: 06 января 2007 18:49 · Личное сообщение · #17 Снова привет. Со временем появилась новая проблема... Я подправил EP у EXE так, чтобы он грузил мою DLL (сделал вызов LoadLibrary на месте WinMain). Саму DLL я делаю в C++Builder 6. Проблема заключается в том, что при попытке вызова GetOpenFileName (системный диалог выбора файлов) прога виснет намертво. Никаких Access Violation, никаких ошибок... просто висит. Нашел временное решение, установив старый стиль диалога... но вскоре прога стала подвисать при работе с контролом ListView... простой щелчок на ListView уводит прогу в завис... ----- MicroSoft? Is it some kind of a toilet paper? ![]() |
|
Создано: 07 января 2007 02:05 · Поправил: kropalik · Личное сообщение · #18 |
![]() |
eXeL@B —› Программирование —› Заюзать экспорт из EXE - как? |