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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.64
dqrest
2 / 2 / 0
Регистрация: 06.01.2012
Сообщений: 114
18.10.2012, 11:04     Как изменять значения переменной уже скомпилированного кода #1
Всем привет)есть код
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++
присвоение ASCII кода последних 2 символов слова переменной C++
C++ Преобразование значения переменной (long) через функцию в значения структуры
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
18.10.2012, 11:14     Как изменять значения переменной уже скомпилированного кода #2

Не по теме:

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


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

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

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

Ах да, альтернативный индусский вариант: храните чиселку у себя на сервере и запрашивайте её через сеть.
ValeryS
Модератор
6376 / 4842 / 442
Регистрация: 14.02.2011
Сообщений: 16,045
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
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
18.10.2012, 11:52     Как изменять значения переменной уже скомпилированного кода #5
Цитата Сообщение от ValeryS Посмотреть сообщение
ищи самомодифицируюшиеся программы
Похоже имеется ввиду самомодифицирующийся код, а это ни чем не поможет. Это когда в момент исполнения программа меняет свой код (который находится в ОЗУ), сам исполняемый файл от этого не меняется.

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

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

some_address:
    a = b + c;
исполняемый файл же от этого не изменится.
ValeryS
Модератор
6376 / 4842 / 442
Регистрация: 14.02.2011
Сообщений: 16,045
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

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

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

Не по теме:

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

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

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