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

Чтение исполняемого PE файла - C++

Восстановить пароль Регистрация
 
Root_user
0 / 0 / 0
Регистрация: 03.07.2013
Сообщений: 56
27.03.2014, 20:21     Чтение исполняемого PE файла #1
Здравствуйте программисты. Недавно увлекся исследованием PE файлов и решил написать небольшую программку для чтения из них

Проблема вот в чем: например когда я пытаюсь считать смещение PE заголовка

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void main()
{
    setlocale(0,"");
    int i_byte[2];
    int res = 0;
 
    ifstream file("sw.dll",ios::binary);
    file.seekg(60);
    i_byte[0] = file.get();
    i_byte[1] = file.get();
 
    swap(i_byte[0],i_byte[1]);
 
 
 
    cout <<hex<<"Смещение PE равно "<<i_byte[0]<<i_byte[1]<<endl;
 
    system("pause");
 
}
Этот код выводит правильный результат но если убрать "hex" то результат не будет верным поскольку в шестнадцатеричной системе после считывания они имеют значения

i_byte[0] - 0x30
i_byte[1] - 0x1

а в десятеричной

i_byte[0] - 48
i_byte[1] - 1

Тоесть выведет 148 что не является верным

Вобщем цель считать два байта по смещению 60 и вывести их в десятеричной системе
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Wlk
49 / 49 / 13
Регистрация: 07.12.2011
Сообщений: 133
27.03.2014, 20:47     Чтение исполняемого PE файла #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
int num = (i_byte[0] << 8) + i_byte[1];
 
        cout << dec << num << endl;
Root_user
0 / 0 / 0
Регистрация: 03.07.2013
Сообщений: 56
27.03.2014, 21:00  [ТС]     Чтение исполняемого PE файла #3
Спасибо тебе огромное заработало только не совсем понял что это означает (i_byte[0] << 8)
Wlk
49 / 49 / 13
Регистрация: 07.12.2011
Сообщений: 133
27.03.2014, 21:09     Чтение исполняемого PE файла #4
Это побитовый сдвиг на 8 битов влево.
Yandex
Объявления
27.03.2014, 21:09     Чтение исполняемого PE файла
Ответ Создать тему
Опции темы

Текущее время: 20:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru