Форум программистов, компьютерный форум CyberForum.ru

При чтении dll библиотеки в обычном(не бинарном) виде, чтение прерывается на NULL - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Динамическое подключение VC++ (2012) DLL в приложении C++Builder (RAD XE5) http://www.cyberforum.ru/cpp-beginners/thread1215380.html
Здравствуйте! Вроде бы подобные темы бывали, но я так и не смог понять, что не так, т.к. редко пишу на с++. Вот код в библиотеке VC++: //--------------------------------------------------------------------------- #include "stdafx.h" #include "Cam.h" //--------------------------------------------------------------------------- BOOL APIENTRY DllMain( HMODULE hModule, ...
C++ Решение уравнений методом Ньютона ребят, можете поэтапно объяснить что здесь написано? в частности что значит double P1 (double x) и return #include <iostream> #include <iomanip> #include <math.h> using namespace std; double P1(double x) { http://www.cyberforum.ru/cpp-beginners/thread1215375.html
Истинность конца файла C++
Суть в чем. Есть реализация криптосистемы МакЭлисса. В входном текстовом файле считываются символы, символы разбиваются на биты, из битов формируются слова, слова умножаются на открытый ключ, из битов кодовых слов формируются символы в выходной файл. И дело в том, что во время кодирования может получится символ конца файла (EOF или как его читает NPP "SUB"). При декодировании текстовый файл...
C++ Detours, собранная либа
Ребят, скиньте собранный detours(.h,.lib,.dll) пытался собрать в vs 2010, не получилось, а ставить другую пока желания нет. Если раскидаю по папкам файлы(если знаете, напишите где что должно лежать), работать будет ? Его же не обязательно самолично собирать ?
C++ Применить изменения к файлу, который был спроецирован в память, и там изменен http://www.cyberforum.ru/cpp-beginners/thread1215363.html
Вот я отобразил файл в память, произвел с файлом в памяти нужные манипуляции и теперь мне нужно сохранить эти самые манипуляции в файле . Как, собственно, это лучше осуществить?
C++ Циклический двусвязный список Помогите написать функцию удаления всех элементов списка с заданным значением. Не могу додуматься как сделать. struct Node { int number; Node* next; Node* prev; }; подробнее

Показать сообщение отдельно
mihalech19
3 / 3 / 2
Регистрация: 23.06.2014
Сообщений: 126
24.06.2014, 15:35  [ТС]     При чтении dll библиотеки в обычном(не бинарном) виде, чтение прерывается на NULL
Да , я понимаю , что это может показать полным абсурдом , но так нужно.
Как читается?
В память
Короче говоря, нужно просто считать файл в память. Но, когда я пытаюсь вывести на экран, выводится только пару символов и все (

Добавлено через 11 минут
Вот так получилось сделать:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int _tmain(int argc, _TCHAR* argv[])
{
// Открываем объект ядра "файл"
HANDLE hFile = CreateFile("client2.dll", GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
// Создаем объект ядра "проекция файла"
HANDLE hFileMapping = CreateFileMapping(hFile, NULL, PAGE_READWRITE, 0, 0, NULL);
// Проецируем в адресное пространство процесса объект "проекция файла"
char* pbFile =  (char*) MapViewOfFile(hFileMapping, FILE_MAP_ALL_ACCESS, 0, 0, 0);
DWORD fileSize = GetFileSize(hFile, NULL);
string sFile;
for (int i = 0; i < fileSize; i++)
sFile +=pbFile[i] ;
//find_and_replace(sFile, "1134", "9999") ;
system("pause");
    return 0;
}
Но если пытаюсь вывести файл в консоль
C++
1
cout << sFile << endl;
, то очень медленно считывается и еще крашится , даже если сворачиваешь консоль

Добавлено через 3 часа 58 минут
Все нашел решение:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
using namespace std;
void find_and_replace(string& source, string const& find, string const& replace)
{
    for(string::size_type i = 0; (i = source.find(find, i)) != string::npos;)
    {
        source.replace(i, find.length(), replace);
        i += replace.length() - find.length() + 1;
    }
}
 
int _tmain(int argc, _TCHAR* argv[])
{
 
// Открываем объект ядра "файл"
HANDLE hFile = CreateFile("client2.dll", GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
// Создаем объект ядра "проекция файла"
HANDLE hFileMapping = CreateFileMapping(hFile, NULL, PAGE_READWRITE, 0, 0, NULL);
// Проецируем в адресное пространство процесса объект "проекция файла"
char* pbFile =  (char*) MapViewOfFile(hFileMapping, FILE_MAP_ALL_ACCESS, 0, 0, 0);
// Проецируем в адресное пространство процесса объект "проекция файла"
DWORD fileSize = GetFileSize(hFile, NULL);
string sFile;
for (int i = 0; i < fileSize; i++)
sFile +=pbFile[i];
find_and_replace(sFile, "1134", "9999") ;
 for (int i = 0; i < fileSize; i++)
  pbFile[i] = sFile[i];
 
system("pause");
 
    return 0;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru