Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Показать сообщение отдельно
Evg
Эксперт CАвтор FAQ
19288 / 7147 / 528
Регистрация: 30.03.2009
Сообщений: 19,997
Записей в блоге: 30
26.05.2012, 19:04 0

Пишем патч на C++

26.05.2012, 19:04. Просмотров 3457. Ответов 13
Метки (Все метки)

Ответ

Насколько я понимаю, речь идёт не об абы какой проге, а о вполне конкретном её экземпляре. А потому я бы тупо взял файл и по нужному смещению от начала файла поменял байты. Нужно смещение вычислил бы на основании символьной таблицы

В линуксе это делается так:

Код
$ readelf --sections a.out
...
  [Nr] Name              Type            Addr     Off    Size   ES Flg Lk Inf Al
...
  [24] .data             PROGBITS        0804a008 001008 000008 00  WA  0   0  4
Колонка Addr показывает, по какому виртуальному адресу расположится начало секции во время исполнения, а колонка Off показывает, по какому смещению от начала файла эта секция лежит в файле

Я не знаю, какая аналогичная readelf'у смотрелка в винде, но всегда под виндой можно поставить всю эту GNU'тую хрень (наверняка входит в поставки типа cygwin, min-gw и прочие)

Добавлено через 2 минуты
Если было нужно делать для произвольной программы, то было бы проще распотрошить ручками символьную таблицу, чем корячиться с маппированием. В линуксе используется открытый формат elf, информацию о структуре которого найти совсем не сложно. Не знаю, какой формат бинарного файла в винде, но, подозреваю, его описание тоже открытое

Вернуться к обсуждению:
Пишем патч на C++
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.05.2012, 19:04

Ламеры и новички! Пишем свою книгу по С++ вместе!
Предлагаю начало. Вносите свои изменения и приаттачивайте к своему сообщению ...

Разбираемся с функциями и пишем Encode & Decode
Напишите подпрограммы Encode (зашифровать) и Decode (расшифровать), которые...

Пишем свой класс, спецификатор доступа protected
Всем привет! Из книги Р. Лафоре относительно спецификатора доступа protected:...

0
Другие темы раздела
C++ как сделать? http://www.cyberforum.ru/cpp-beginners/thread587329.html
Мне надо прога, в которой сначала вводится n -какое число (трехзначное, четырехзначное), а k сумма цифр. На экран выбивает какие существуют числа. Например n =3, k =6. На экран выбивает...
C++ Найти количество гласных и согласных букв Помогите плиз!Надо найти кол-во гласных и согласных букв.Вот что-то понять не могу где ошибка.Ни фига не считает. #include <stdio.h> #include <conio.h> #include <string.h> void main() {... http://www.cyberforum.ru/cpp-beginners/thread587327.html
C++ Бинарное дерево с прямым обходом
Нашел на просторах вашего форуме код дерева с восходящим порядком прохождения #include <iostream> #include <ctime> #include <cstdlib> using namespace std; template<typename T> struct...
C++ Работа с файлами
Дано(в текстовом файле) n>1000000 натуральных чисел (каждое число <10000) записанных через пробел. Получить массив в котором все числа исходного файла расположены по убыванию значений без повторений....
C++ Прерывание циклов http://www.cyberforum.ru/cpp-beginners/thread587313.html
Допустим есть цикл в цикле и если во внутреннем цикле выполняется некоторое условие, необходимо прервать оба цикла.Возможно ли это? Заранее спасибо.
C++ Задача Даны n последовательных столбиков. Кузнечик находится на первом столбе, умеет прыгать на 1,2,...,k столбиков. Найти количество вариантов, которым он может допрыгать до n-го столба. Я знаю что... подробнее
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru