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

Как работать с сегментом данных файла exe? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Найти координаты, лежащие на окружности, равноудаленные на заданный угол друг от друга http://www.cyberforum.ru/cpp-beginners/thread1235155.html
Здравствуйте. Нужна помощь с математикой, а именно (если не ошибаюсь) с матрицами. Вкратце опишу то что хочу. У меня есть какая то координата(x, y, z). Мне нужно найти другие координаты лежащие на окружности (радиус так же задается) равноудаленные на заданный угол друг от друга. Это я вроде бы сделал, получил синус, косинус соответственно Y и X умножил на радиус после прибавил к...
C++ Не получается скомпилировать приложение в codeblock Вобщем не получается создать готовый exeшник в codeblock пропадает сам компилятор, в борланде вылет... в инете только "онлайн" проверка... Если скину код cpp, может кто мне Exe скинуть потом? http://www.cyberforum.ru/cpp-beginners/thread1235152.html
Столкновение спрайта и закрашеного квадратика C++
Как мне реализовать столкновение, что бы не проходить сквозь закрашенные квадраты а стоять на их,В 2д игре. За код сильно не судить брал примеры с видео урока в котором вся каша была в одном лиш маине, немного подкорректировал части)) библиотека SFM, а еще бы с объяснениями очень важно понять еще. От столкновений не какой там физики не надо отлетаний, просто что бы он не проходил сквозь их и мог...
Скомпилировать приложение, включив библиотеки в исполнимый файл C++
я написал небольшую програмку с использованием libcurl и winfroms. подскажите как можно скомпилировать программу чтобы она не требовала libcurl на другом пк
C++ Распарсить текстовый файл http://www.cyberforum.ru/cpp-beginners/thread1235126.html
Программно я могу получить список следующего вида: ..., { id: 7, login: 'idaspin', password: '638kjg1kjghd8xzckj2kj3hdhg876smnnm4jd' }, { id: 8, login: 'marchall_95', password: '8sd920gxzc3dasdada6947opkjgo92cv637',
C++ Класс "Комплексное число". Как считать и записать данные в файл? Надо переделать код программы, чтобы данные шли из входного файла и записывались в выходной Во входном файле 2 комплексных числа a и b. И думаю, их записать в виде,например, 1 3 2 4 5 3 6 2 И считать его в отдельные массивы или в один и тот же? А в выходном файле записываются результаты вычислений с,d,f Помогите с написанием самого кода вышеописанного.. подробнее

Показать сообщение отдельно
МихаилХ
0 / 0 / 0
Регистрация: 26.09.2013
Сообщений: 72
28.07.2014, 16:08  [ТС]     Как работать с сегментом данных файла exe?
Ок. Посмотрю по внимательней.

Добавлено через 1 час 27 минут
Цитата Сообщение от aLarman Посмотреть сообщение
РАЗДЕЛ 1: ПОЛУЧАЕМ ДАННЫЕ ИЗ КЛИЕНТА
Если я правильно понял то в этой статье обсуждается получение данных из процесса, а мне нужно залезть в секцию данных файла exe и повыковыривать от туда данные.

Добавлено через 15 минут
Для большей ясности приведу код:
Есть программка вот с таким кодом, в ней есть глобальные переменные и массив. Вот значения этих самых переменных мне нужно считать. Собираю проект и получаю exe файл с секцией кода, данных, стека и т. д.
C++
1
2
3
4
5
6
7
8
9
10
11
char a[] = "hello! my name is Experemental! how are you?";
int i[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
char* c = "H";
int cc = 1777;
 
int main(void)
{
    char b = a[0];
    b = *c;
    return 0;
}
Создал еще один проект в него добавил код найденный мной на просторах интернета с небольшими изменениями.

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
34
35
    HANDLE hFile = CreateFile(L"C:\\Users\\Hodakovskij\\Documents\\Visual Studio 2013\\Projects\\Experimental\\Debug\\Experimental.exe",
        GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_READONLY, NULL);
    HANDLE hMapping = CreateFileMapping(hFile, NULL, PAGE_READONLY | SEC_IMAGE, 0, 0, L"");
    LPVOID hModule = MapViewOfFile(hMapping, FILE_MAP_READ, 0, 0, 0);
 
    //store the base address the loaded Module
    char* dllImageBase = (char*)hModule; //suppose hModule is the handle to the loaded Module (.exe or .dll)
 
    //store the base address the loaded Module
    dllImageBase = (char*)hModule; //suppose hModule is the handle to the loaded Module (.exe or .dll)
 
    //get the address of NT Header
    IMAGE_NT_HEADERS *pNtHdr = ImageNtHeader(hModule);
 
    //after Nt headers comes the table of section, so get the addess of section table
    IMAGE_SECTION_HEADER *pSectionHdr = (IMAGE_SECTION_HEADER *)(pNtHdr + 1);
 
    ImageSectionInfo *pSectionInfo = NULL;
 
    //iterate through the list of all sections, and check the section name in the if conditon. etc
    for (int i = 0; i < pNtHdr->FileHeader.NumberOfSections; i++)
    {
        char *name = (char*)pSectionHdr->Name;
        if (memcmp(name, ".data", 5) == 0)
        {
            char *name = (char*)pSectionHdr->Name;
            char* pData = (char*)&dllImageBase[pSectionHdr->VirtualAddress];
            char pp[500000];
            memcpy(pp, pData, pSectionHdr->Misc.VirtualSize);
            TRACE(name);
            TRACE(" size %d\n", pSectionHdr->Misc.VirtualSize);
            pSectionHdr++;
        }
        pSectionHdr++;
    }//*/
При пошаговом прохождении в указателе pp можно прочитать строку : hello! my name is Experemental! how are you?
Но все остальные данные не читаются. И читаются только если exe собрана в дебаге, а релизовая exe не читается. Верней читается но данных в ней нет. Почему?
 
Текущее время: 13:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru