![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 02.12.2012
Сообщений: 250
|
![]()
Почему то не работает код:
Код:
|
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
скорее всего по вашему адресу нельзя выделить нужный блок памяти.
и в самом себе выделять память можно просто VirtualAlloc Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 02.12.2012
Сообщений: 250
|
![]()
Похоже ошибку выдает все-таки GetModuleHandle.Я просто вставил GetLastError после VirtualAllocEx,поэтому путаница возникла.Косвенно это подтверждается тем,что:
Код:
Вообще мне надо получить дескриптор самого вызывающего процесс.По идее должно быть GetModuleHandle(nil) наверно? Целиком должно получиться вот что: 1. Узнали размер MyDll.dll 2. Узнали хэндл самого процесса (сами себя то есть) 3. Выделили под нее память в самом процессе, начиная с адреса startaddr 4. Вызываем LoadLibrary('MyDll.dll') Так сложно потому что код инжектирован в другой процесс. Последний раз редактировалось calypso; 26.02.2013 в 19:12. |
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
чтоб выделить память в самом себе примените VirtualAlloc.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
![]() |
![]() |
![]() |
#5 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,368
|
![]()
Чем вам LoadLibrary не угодил...
Ваш вариант не работает, потому что вы путаете HMODULE и HANDLE процесса. В одном процессе могут быть загружены разные модули. |
![]() |
![]() |
![]() |
#6 | ||
Форумчанин
Регистрация: 02.12.2012
Сообщений: 250
|
![]()
Фишка в том,чтобы загрузить библиотеку в нужную дырку.Для этого весь гемморой с VirtualAllocEx
Цитата:
Цитата:
LPVOID WINAPI VirtualAlloc( _In_opt_ LPVOID lpAddress, _In_ SIZE_T dwSize, _In_ DWORD flAllocationType, _In_ DWORD flProtect ); |
||
![]() |
![]() |
![]() |
#7 |
Участник клуба
Регистрация: 23.12.2010
Сообщений: 1,129
|
![]()
Я так и не понял, зачем тебе выделять память предварительно. LoadLibrary же сделает это сама.
|
![]() |
![]() |
![]() |
#8 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
и при этом уже выделенную память она не сможет применить(хотя может на это и расчет?)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Функция возвращает неправильный указатель | RomanA | Общие вопросы C/C++ | 3 | 25.02.2012 19:06 |
TrackPopupMenuEx возвращает 87 ошибку (неверные входные параметры) | TitoAlehandro | Win Api | 0 | 27.09.2011 11:01 |
при вставке записи в БД (MDB) выдает ошибку "неправильный синтаксис запроса" | lkjuio | C# (си шарп) | 8 | 01.05.2011 23:30 |
HttpWebResponse: вервер возвращает 500 ошибку | Manonia | Общие вопросы .NET | 0 | 24.07.2010 08:07 |
idHTTP при нерабочем сайте возвращает ошибку | Yuran | Работа с сетью в Delphi | 5 | 26.05.2008 14:37 |