|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
05.05.2012, 13:20 | #21 |
Форумчанин
Регистрация: 11.07.2010
Сообщений: 914
|
А что есть t : string; ???
Анси - строка ? Че-то у меня сомнения. |
05.05.2012, 13:31 | #22 |
Форумчанин
Регистрация: 13.02.2012
Сообщений: 867
|
сомнения по поводу? Вы о чем?
t : string, в которой содержится полный путь к внедряемой DLL. Сейчас попробовал сделать t : ansistring, но не помогло. |
05.05.2012, 13:46 | #23 |
Форумчанин
Регистрация: 11.07.2010
Сообщений: 914
|
Плохо знаю делфи, что там за типы данных. Поэтому не могу сказать.
Может кто подскажет. Должен быть классический массив char завершаемый нуль-терминатором, а не класс. Ну так, отследили возвращаемые значения всех функций? Саму длл потестили на загрузку из своего процесса? |
05.05.2012, 14:13 | #24 |
Форумчанин
Регистрация: 13.02.2012
Сообщений: 867
|
вы оказались правы!!!!!
надо было просто заменить @t на pchar(t) и пошла мазута! но появился второй вопрос. как теперь выгрузить эту DLL из процесса, ведь она там осталась? повторная ее компиляция говорит, что файл занят другим процессом. и что писать в процедуре DllFin ? |
05.05.2012, 14:15 | #25 | |
Старожил
Регистрация: 08.02.2012
Сообщений: 2,173
|
Цитата:
Правильно поставленная задача - три четверти решения.
|
|
05.05.2012, 14:51 | #26 | ||
Форумчанин
Регистрация: 11.07.2010
Сообщений: 914
|
DiemonStar, спасибо, буду знать.
Цитата:
VirtualFreeEx // освободим выделенный блок Потом также как получали LoadLibrary, получим адрес Freelibrary. И надо бы получить хендл модуля загруженной длл. Можно через CreateToolhelp32Snapshot. Или может через EnumProcessModules? Фиг его знает, что удобнее. И вот точно также: CreateRemoteThread(hProcess, NULL, 0, addressFreeLibrary, dllHandle, 0, NULL); Разумеется, не забываем закрывать хендлы удаленных потоков и открытого процесса CloseHandle. ps Цитата:
Чужой процесс весь в Вашем распоряжении, например сабклассируйте окна, а при DLL_PROCESS_DETACH, снимайте сабклассинг. Последний раз редактировалось EUGY; 05.05.2012 в 14:57. |
||
05.05.2012, 16:40 | #27 |
Форумчанин
Регистрация: 13.02.2012
Сообщений: 867
|
|
05.05.2012, 18:12 | #28 |
Форумчанин
Регистрация: 23.04.2009
Сообщений: 346
|
Библиотека знает какой код должна выполнить и когда надобность в ней пропадет, знает свой хендл, так пусть сама себя и выгрузит. Переход на FreeLibrary выполнить командой jmp переложив аргументы в стеке таким образом, чтобы управление из функции вернулось в предыдущую функцию минуя адресное пространство в котором расположен код библиотеки т.к. на момент выхода из функции данное адресное пространство уже будет освобождено.
Нет, ну правда..
|
05.05.2012, 18:40 | #29 |
Форумчанин
Регистрация: 13.02.2012
Сообщений: 867
|
даже если я получу список модулей, то как я узнаю, какой из хэндлов принадлежит именно моей DLL? С чем их сравнивать при переборе? Больше конкретики, пжлста.
|
05.05.2012, 19:43 | #30 |
Форумчанин
Регистрация: 23.04.2009
Сообщений: 346
|
Да прочитай ты уже про эти функции они помимо хендлов много информации возвращают. То что ты делаешь не самообучением называется, а наглым попрошайничеством.
Нет, ну правда..
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Таймер SetTimer и глюки с ним | Jugger | Win Api | 2 | 09.03.2012 20:21 |
Settimer в winx64 не работает, рушит Excel?! | budda999 | Microsoft Office Excel | 9 | 07.01.2012 13:43 |
Отследить изменение курсора в чужих окнах | Lime | Общие вопросы Delphi | 2 | 02.07.2009 19:17 |
SetTimer, KillTimer | NeiL | Win Api | 5 | 05.03.2008 07:37 |