Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
43 / 43 / 5
Регистрация: 12.11.2011
Сообщений: 444
1

Закачка файла и перевод в область памяти типа PVOID

16.03.2015, 21:08. Просмотров 648. Ответов 3
Метки нет (Все метки)


В общем моя программа скачивает библиотеку, грузит ее в память и из памяти библиотека грузится в процесс посредством manual mapping.
Но проблема в том что когда качаю длл не могу перевести ее в область памяти PVOID.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.03.2015, 21:08
Ответы с готовыми решениями:

Аргумент типа *PVOID
И так в функции createwindow, один из аргументов имеет тип HMENU. В библиотеке типов: И так,...

Bin файл из Modbus. Прочитать из файла область памяти
Доброго времени суток! Подскажите пожалуйста, у меня есть bin-файл из которого нужно достать...

Как лучше всего записать часть файла в область памяти (AllocateMemory)
Добрый день. Вопрос в теме. Мне в голову приходит только считывать строки из файла, складывать их,...

Область памяти для переменной и её значения. Это одна и та же область?
Добрый день! Задумался над таким вопросом. Есть переменная, а есть её значение. При создани...

3
Ушел с форума
Эксперт С++
16419 / 7394 / 1185
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
16.03.2015, 21:20 2
1. Ничего не понятно по поводу PVOID.

2. Зачем нужны какие-то manual mapping (кстати, а что это ?),
когда есть LoadLibrary ?
0
43 / 43 / 5
Регистрация: 12.11.2011
Сообщений: 444
16.03.2015, 23:10  [ТС] 3
Нужно для защиты.

C++
1
2
FileSize = 0;
    char * hFile = loaddll("test", 11, 2, FileSize);
И далее я пытаюсь скопировать в память...
А было

C++
1
2
3
4
5
6
7
8
9
if (!ReadFile(hFile, buffer, FileSize, &read, NULL))
    {
        printf("\nError: Unable to read the DLL (%d)\n", GetLastError());
 
        VirtualFree(buffer, 0, MEM_RELEASE);
        CloseHandle(hFile);
        system("pause");
        return -1;
    }
Добавлено через 35 минут
Решение
C++
1
memmove(buffer, hFile, FileSize);
Добавлено через 1 час 8 минут
Так, оказалось что работает из-за того что после загрузки длл есть код

C++
1
2
3
4
5
6
7
FILE * f = 0;
        fopen_s(&f, "C:\\asdbkb.dll", "w");
        if (f)
        {
            cout << "magic wtf oO" << endl;
            fwrite(dll, 1, retSize, f);
        }
но он не выполняется, if не срабатывает, а код работает
0
Ушел с форума
Эксперт С++
16419 / 7394 / 1185
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
16.03.2015, 23:27 4
Цитата Сообщение от Micro Посмотреть сообщение
Нужно для защиты.
Защиты чего ?

Цитата Сообщение от Micro Посмотреть сообщение
И далее я пытаюсь скопировать в память...
Micro, я не знаю, что Вы там пытаетесь сделать, но загрузка dll -
это вовсе не то же самое, что прочитать файл в память, найти в нем какой-то
адрес и сделать туда jmp.

Во-первых, образ исполняемого файла (dll, exe и т.п.) на диске и в памяти
различаются. В файле секции выравнены на 512 байт, в памяти на 4096.

Во-вторых, для каждой секции устанавливаются соответствующие атрибуты -
read-exec, read-write, read-only, discardable и т.д.

И потом, нужно загрузить зависимые dll, выполнить все точки входа и
всякие TLS-калбэки, если они есть, настроить релоки, добавить dll-ки в
список модулей, и т.д. Только после этого (что далеко не факт еще) dll
можно будет пользоваться, т.е. вызывать ее функции.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.03.2015, 23:27

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Пересылка двух слов из области памяти M1 в область памяти М2
Нужно выполнить пересылку двух слов из области памяти M1 в область памяти М2. Описание области M1:...

На какую область памяти указывает адрес недоступной памяти
Здравствуйте! Написал программу, выводит (из PSP) сегментный адрес первого байта недоступной...

Закачка mhtml-файла в БД
Есть MHTML файл(Веб архив) По структуре напоминает простой НТМЛ и открываеться всеми наиболее...

libcurl: закачка файла
Файл скачивается, но его размер 12243 байт, хотя должен быть 12182 байт, и так с любым файлом,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.