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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
rusianvodka
0 / 0 / 0
Регистрация: 20.06.2013
Сообщений: 47
#1

Поиск числа в файле, открытым в бинарном режиме - C++

21.05.2014, 01:56. Просмотров 1060. Ответов 15
Метки нет (Все метки)

Здравствуйте уважаемые дамы и господа, возник вопрос по поводу поиска числа в бинарном файле.
Допустим имеется код:
C++ (Qt)
1
2
3
4
5
6
7
8
9
#include <iostream>
#include <conio.h>
using namespace std;
void main(){
    int t = 247;
    t = t - 246;
    cout << t << endl;
    _getch();
}
Данный код скомпилирован и выполняется, из него получается .exe файл.
Данный .exe файл после, я открываю с помощью hiew32(hex - editor) и могу с лёгкостью найти число 247 для его изменения. После .exe файл будет выводить иной результат(в зависимости от изменения).
Возник вопрос как данный поиск данного числа осуществить в коде на с++.
Погуглив и почитав литературу, получилось вот такое вот решения:
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
ifstream file_op(m_FileIn, ios::binary);
    if (!file_op) return 0;
     int buf[1024];
     int a = 247;     // то  что мы ищем
     int z = 0;     // счётчик поиска
     do {
         file_op.read((char *)buf, sizeof buf);
         for (int i = 0; i < 256; i++)
         {
             if (buf[i] == a) 
                 z++;   // счётчик(после полного прохода по файлу должен быть равен 1.)
         }
     
     } while (!file_op.eof());
     file_op.close();
    return false;
Но к сожалению данный код не выполняется как задумано.
Буду благодарен за исправления и наставления. И решения проблемы неработоспособности данного кода.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.05.2014, 01:56     Поиск числа в файле, открытым в бинарном режиме
Посмотрите здесь:
C++ Поиск в бинарном файле
C++ Поиск в бинарном файле
C++ Поиск по структуре в бинарном файле
Бинарный поиск в бинарном файле C++
Поиск заданной последовательности символов в бинарном файле C++
Поиск в бинарном файле с использованием файловых потоков C++
C++ Запись в бинарный файл в бинарном режиме: будут ли числа записаны в двоичной системе счисления?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
21.05.2014, 02:17     Поиск числа в файле, открытым в бинарном режиме #2
Ошибка в том, что в файле не одни int записаны, а вы, судя по коду, считаете, что одни.

Добавлено через 1 минуту
Нужно искать сочетание байт (которое видите в hex-редакторе, как число 247).

Добавлено через 4 минуты
Но и это не гарантирует, что найдёте то, что нужно.
rusianvodka
0 / 0 / 0
Регистрация: 20.06.2013
Сообщений: 47
21.05.2014, 02:18  [ТС]     Поиск числа в файле, открытым в бинарном режиме #3
Хм, возможно вы полностью правы, мне просто казалось что всё идёт по 4 байта, то есть если перебирая по шагам по 4-ре байта весь файл в итоге я найду нужное число.
Видимо я не правильно понял..
Как же тогда правильнее решить поставленную задачу, или если вам не сложно посоветуйте где можно углубить свои знания в этой теме.
Ну и если можете привести пример кода, будет вообще божественно.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
21.05.2014, 03:15     Поиск числа в файле, открытым в бинарном режиме #4
Цитата Сообщение от rusianvodka Посмотреть сообщение
Данный .exe файл после, я открываю с помощью hiew32(hex - editor) и могу с лёгкостью найти число 247 для его изменения.
Поделитесь секретом: как вы в .exe, с помощью hex-редактора, находите int, равный 247?
rusianvodka
0 / 0 / 0
Регистрация: 20.06.2013
Сообщений: 47
21.05.2014, 14:52  [ТС]     Поиск числа в файле, открытым в бинарном режиме #5
Очень просто, с помощью калькулятора я перевожу число в hex. Получается что 247 это f7 добавляю после пару нулей и нахожу данное число.
После меняю данное число в exe файле для проверки и запускаю exe. Теперь exe работает как было поменяно(задуманно).

Добавлено через 22 минуты
плюс исходя из этой картинки, я посчитал что всё выравнивается на 4 байта.
или я не прав?
Миниатюры
Поиск числа в файле, открытым в бинарном режиме  
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
21.05.2014, 14:55     Поиск числа в файле, открытым в бинарном режиме #6
А если release собрать, пробовали искать?
rusianvodka
0 / 0 / 0
Регистрация: 20.06.2013
Сообщений: 47
21.05.2014, 14:59  [ТС]     Поиск числа в файле, открытым в бинарном режиме #7
нет не пробовал, да и пока не задумывался об этом, сейчас происходит решение проблем и задач которые я задал выше)
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
21.05.2014, 15:12     Поиск числа в файле, открытым в бинарном режиме #8
А что тут задумываться? Соберите в release и попробуйте найти своё число, а потом уже можно и задуматься.
rusianvodka
0 / 0 / 0
Регистрация: 20.06.2013
Сообщений: 47
21.05.2014, 15:47  [ТС]     Поиск числа в файле, открытым в бинарном режиме #9
Собрал как вы и сказали в release, также с лёгкостью нашлось число, и изменилось.
После запуска exe файла вывелось задуманное число с последствиями изменения числа в exe
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
21.05.2014, 15:59     Поиск числа в файле, открытым в бинарном режиме #10
Компилируете в чём?
rusianvodka
0 / 0 / 0
Регистрация: 20.06.2013
Сообщений: 47
21.05.2014, 16:11  [ТС]     Поиск числа в файле, открытым в бинарном режиме #11
VS 2013
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
21.05.2014, 16:53     Поиск числа в файле, открытым в бинарном режиме #12
В этом exe находите?
Вложения
Тип файла: rar MY1.rar (5.2 Кб, 2 просмотров)
rusianvodka
0 / 0 / 0
Регистрация: 20.06.2013
Сообщений: 47
21.05.2014, 17:46  [ТС]     Поиск числа в файле, открытым в бинарном режиме #13
проблема решена, всё было связанно на том что у меня 64 битные инты .
Переделав с помощью одного человека некоторые строки и дописав int32_t.
всё заработало.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
21.05.2014, 20:32     Поиск числа в файле, открытым в бинарном режиме #14
Цитата Сообщение от rusianvodka Посмотреть сообщение
что у меня 64 битные инты .
64-битные инты где?
А на вопрос ответить?
Цитата Сообщение от alsav22 Посмотреть сообщение
В этом exe находите?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.05.2014, 21:08     Поиск числа в файле, открытым в бинарном режиме
Еще ссылки по теме:
C++ В бинарном файле содержатся числа. Сформировать квадратную матрицу...
C++ В заданном бинарном файле, содержащем целые числа, найти произведение положительных чисел
Размер строки в бинарном режиме! C++
Запись char в бинарном режиме C++
C++ Работа с файлом в бинарном режиме

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

Или воспользуйтесь поиском по форуму:
rusianvodka
0 / 0 / 0
Регистрация: 20.06.2013
Сообщений: 47
21.05.2014, 21:08  [ТС]     Поиск числа в файле, открытым в бинарном режиме #15
я не понимаю как связан поиск в вашем ехе файле с моим вопросом в шапке.
по поводу 64, то у меня 64 разрядная система и тут инты 8 байтные.
Yandex
Объявления
21.05.2014, 21:08     Поиск числа в файле, открытым в бинарном режиме
Ответ Создать тему
Опции темы

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