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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.64
dqrest
2 / 2 / 0
Регистрация: 06.01.2012
Сообщений: 114
#1

Как изменять значения переменной уже скомпилированного кода - C++

18.10.2012, 11:04. Просмотров 1328. Ответов 10
Метки нет (Все метки)

Всем привет)есть код
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class MyClass
{
int i;
public:
MyClass()
{
i=100;
}
~MyClass(){}
void changeI()
{
  i=-100;
}
};
 
 
void main()
{
 MyClass x;
 x.changeI();
}
Допустим, вот мы скомпилировали этот код на MS VS 2010. У нас есть .exe, вот этот exe мы как только отработал мы его закрываем. Как и что нужно сделать чтобы при исполнении метода changeI(), чтобы при последующих вызовах exe, в конструкторе присваивалось i=-100??? Следующее основное требование:1) значение, которое хранит переменная i секретная, нет должно быть таких простых способов узнать ее значение. 2)реестр использовать нельзя, иначе переменную можно удалть 3) в файл(неважно, бинарный, зашифрованный и т.п.) тоже выгружать нельзя , можно ваще узнать и удлать.
4)не хотелось бы заново перекомпилить прогу

Есть какие-нить идеи?подскажите путь, куда нужно копать!!!Плиз)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.10.2012, 11:04     Как изменять значения переменной уже скомпилированного кода
Посмотрите здесь:

Исполнение кода из текстовой переменной. C++
как заделать так что бы значения переменной менялось по заданному времени C++
Часть имени переменной как значние другой переменной C++
C++ Подстановка значения переменной
Как сложить все значения одной переменной C++
присвоение ASCII кода последних 2 символов слова переменной C++
C++ Преобразование значения переменной (long) через функцию в значения структуры
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1240 / 989 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
18.10.2012, 11:14     Как изменять значения переменной уже скомпилированного кода #2

Не по теме:

Ваша паранойя беспочвенна.


Значение вашей переменной можно узнать из exe-файла, если он не зашифрован/запакован.

Если он зашифрован/запакован, то узнать нельзя, но, соответственно, увеличивается геморрой по его изменению.

Потому что если ваша паранойя не позволяет вынести эти данные в отдельный файл, то у вас только один выход — менять сам исполнимый файл. Причём из него же самого.

Ах да, альтернативный индусский вариант: храните чиселку у себя на сервере и запрашивайте её через сеть.
ValeryS
Модератор
6446 / 4912 / 451
Регистрация: 14.02.2011
Сообщений: 16,283
18.10.2012, 11:18     Как изменять значения переменной уже скомпилированного кода #3
Цитата Сообщение от dqrest Посмотреть сообщение
которое хранит переменная i секретная, нет должно быть таких простых способов узнать ее значение.
Дизасемблер отменили???
Цитата Сообщение от dqrest Посмотреть сообщение
)не хотелось бы заново перекомпилить прогу
ищи самомодифицируюшиеся программы
но уровень разработчика должен быть достаточно высок
кроме языка ты должен знать ОС ФС и прочие вкусности

Добавлено через 2 минуты
Цитата Сообщение от ~OhMyGodSoLong~ Посмотреть сообщение
Если он зашифрован/запакован, то узнать нельзя,
щас еще
просто
Цитата Сообщение от ~OhMyGodSoLong~ Посмотреть сообщение
увеличивается геморрой по
отладчик дизасемблер дамп памяти
"Что один человек сделал, другой завсегда сломать может"(с) кузнец "Формула любви"
dqrest
2 / 2 / 0
Регистрация: 06.01.2012
Сообщений: 114
18.10.2012, 11:35  [ТС]     Как изменять значения переменной уже скомпилированного кода #4
Понял. Значит в гугле нужно искать темы по тегу "свмомодифицирующие программы"???
Kastaneda
Форумчанин
Эксперт С++
 Аватар для Kastaneda
4252 / 2784 / 219
Регистрация: 12.12.2009
Сообщений: 7,109
Записей в блоге: 1
Завершенные тесты: 1
18.10.2012, 11:52     Как изменять значения переменной уже скомпилированного кода #5
Цитата Сообщение от ValeryS Посмотреть сообщение
ищи самомодифицируюшиеся программы
Похоже имеется ввиду самомодифицирующийся код, а это ни чем не поможет. Это когда в момент исполнения программа меняет свой код (который находится в ОЗУ), сам исполняемый файл от этого не меняется.

Как вариант - открывать программу как файл для записи, и писать по заранее известному адресу (там, где лежит переменная) новое значение. Но этого нельзя сделать в момент выполнения программы, поэтому можно создать отдльный процесс, которые сделает это после того, как программа закроется.
ValeryS
Модератор
6446 / 4912 / 451
Регистрация: 14.02.2011
Сообщений: 16,283
18.10.2012, 11:53     Как изменять значения переменной уже скомпилированного кода #6
Цитата Сообщение от Kastaneda Посмотреть сообщение
(который находится в ОЗУ), сам исполняемый файл от этого не меняется.
а как же вирусы????
потом если порыться в старых форумах (еше Fido шные news группы) то там постоянно обсуждался вопрос "программа которая сама себя перезаписывает"
Kastaneda
Форумчанин
Эксперт С++
 Аватар для Kastaneda
4252 / 2784 / 219
Регистрация: 12.12.2009
Сообщений: 7,109
Записей в блоге: 1
Завершенные тесты: 1
18.10.2012, 11:54     Как изменять значения переменной уже скомпилированного кода #7
Цитата Сообщение от Kastaneda Посмотреть сообщение
по заранее известному адресу (
а можно искать по какому-нибудь magic number.

Добавлено через 1 минуту
Цитата Сообщение от ValeryS Посмотреть сообщение
а как же вирусы????
Не понял, при чем здесь вирусы. Программа, которая перезаписывает свой исполняемый файл и самомодифицирующийся код это разные вещи.
ValeryS
Модератор
6446 / 4912 / 451
Регистрация: 14.02.2011
Сообщений: 16,283
18.10.2012, 11:56     Как изменять значения переменной уже скомпилированного кода #8
Цитата Сообщение от Kastaneda Посмотреть сообщение
Не понял, при чем здесь вирусы.
При том что они уже лет десять перезаписывают сами себя и при этом самомодифицируются
Kastaneda
Форумчанин
Эксперт С++
 Аватар для Kastaneda
4252 / 2784 / 219
Регистрация: 12.12.2009
Сообщений: 7,109
Записей в блоге: 1
Завершенные тесты: 1
18.10.2012, 11:56     Как изменять значения переменной уже скомпилированного кода #9
Пример сомомодифицирующегося кода
Код
//псевдокод
[some_address] = (b = a - c); 

some_address:
    a = b + c;
исполняемый файл же от этого не изменится.
ValeryS
Модератор
6446 / 4912 / 451
Регистрация: 14.02.2011
Сообщений: 16,283
18.10.2012, 12:00     Как изменять значения переменной уже скомпилированного кода #10
Цитата Сообщение от Kastaneda Посмотреть сообщение
исполняемый файл же от этого не изменится.
а вот когда ты его модифицировал перепиши исполняемый файл(не спрашивай как, я никогда этим не занимался) но такое возможно
как вариант программа состоит из двух файлов exe и dll модифицируем dll (файл на чтение/запись)
загружаем dll, выполняем код внутри dll выгружаем, ну и т.д
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.10.2012, 12:38     Как изменять значения переменной уже скомпилированного кода
Еще ссылки по теме:

C++ Исключение из массива подряд идущих одинаковых элементов(нужно добавить немного кода в уже готовый)
C++ Работа с файлами (создать файл путь к которому уже задан, а вот имя хранится в переменной)
C++ Раздельный native unit test для проекта скомпилированного как Debug и как Release
Как происходит присвоение значения переменной? C++
Выполнение скомпилированного приложения в Dev-C++ 5.4.2 C++

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

Или воспользуйтесь поиском по форуму:
Kastaneda
18.10.2012, 12:38     Как изменять значения переменной уже скомпилированного кода
  #11

Не по теме:

Цитата Сообщение от ValeryS Посмотреть сообщение
но такое возможно
Я ж не утверждаю обратное. конечно возможно.

Yandex
Объявления
18.10.2012, 12:38     Как изменять значения переменной уже скомпилированного кода
Ответ Создать тему
Опции темы

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