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

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

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

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

18.10.2012, 11:04. Просмотров 1440. Ответов 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)не хотелось бы заново перекомпилить прогу

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

Странные значения уже инициализированной переменной - C++
std::cout << "Введите кол-во городов\n"; std::cin >> N; city *A = new city; for (int j = 0; j < N; j++) { std::cout...

Изучение структуры скомпилированного кода на C++ - C++
Не подскажете, где можно прочитать про преобразования С++ кода в АСМ, к примеру, компилятором GNU ? Есть ли официальная документация...

Раздельный native unit test для проекта скомпилированного как Debug и как Release - C++
Используя условную компиляцию версия Debug и Release может существенно различаться. Не все ситуации можно смоделировать для теста и могут...

Как происходит присвоение значения переменной? - C++
Здравствуйте. Какие способы присвоения значения существуют? Расскажите пожалуйста, как присваиваются значения при присвоении из...

Как сложить все значения одной переменной - C++
Задание: "Даны натуральные числа от 1 до 50.Найти сумму тех из них которые делятся на 5 или на 7" #include <iostream> #include...

как заделать так что бы значения переменной менялось по заданному времени - C++
Всем привет!! Кто знает как можно заделать так что бы значения переменной менялось по заданному времени Например так for...

10
OhMyGodSoLong
~ Эврика! ~
1244 / 993 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
18.10.2012, 11:14 #2

Не по теме:

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


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

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

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

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

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

Как вариант - открывать программу как файл для записи, и писать по заранее известному адресу (там, где лежит переменная) новое значение. Но этого нельзя сделать в момент выполнения программы, поэтому можно создать отдльный процесс, которые сделает это после того, как программа закроется.
0
ValeryS
Модератор
6651 / 5060 / 470
Регистрация: 14.02.2011
Сообщений: 16,918
18.10.2012, 11:53 #6
Цитата Сообщение от Kastaneda Посмотреть сообщение
(который находится в ОЗУ), сам исполняемый файл от этого не меняется.
а как же вирусы????
потом если порыться в старых форумах (еше Fido шные news группы) то там постоянно обсуждался вопрос "программа которая сама себя перезаписывает"
0
Kastaneda
Форумчанин
Эксперт С++
4655 / 2863 / 228
Регистрация: 12.12.2009
Сообщений: 7,274
Записей в блоге: 2
Завершенные тесты: 1
18.10.2012, 11:54 #7
Цитата Сообщение от Kastaneda Посмотреть сообщение
по заранее известному адресу (
а можно искать по какому-нибудь magic number.

Добавлено через 1 минуту
Цитата Сообщение от ValeryS Посмотреть сообщение
а как же вирусы????
Не понял, при чем здесь вирусы. Программа, которая перезаписывает свой исполняемый файл и самомодифицирующийся код это разные вещи.
0
ValeryS
Модератор
6651 / 5060 / 470
Регистрация: 14.02.2011
Сообщений: 16,918
18.10.2012, 11:56 #8
Цитата Сообщение от Kastaneda Посмотреть сообщение
Не понял, при чем здесь вирусы.
При том что они уже лет десять перезаписывают сами себя и при этом самомодифицируются
0
Kastaneda
Форумчанин
Эксперт С++
4655 / 2863 / 228
Регистрация: 12.12.2009
Сообщений: 7,274
Записей в блоге: 2
Завершенные тесты: 1
18.10.2012, 11:56 #9
Пример сомомодифицирующегося кода
Код
//псевдокод
[some_address] = (b = a - c); 

some_address:
    a = b + c;
исполняемый файл же от этого не изменится.
0
ValeryS
Модератор
6651 / 5060 / 470
Регистрация: 14.02.2011
Сообщений: 16,918
18.10.2012, 12:00 #10
Цитата Сообщение от Kastaneda Посмотреть сообщение
исполняемый файл же от этого не изменится.
а вот когда ты его модифицировал перепиши исполняемый файл(не спрашивай как, я никогда этим не занимался) но такое возможно
как вариант программа состоит из двух файлов exe и dll модифицируем dll (файл на чтение/запись)
загружаем dll, выполняем код внутри dll выгружаем, ну и т.д
0
Kastaneda
18.10.2012, 12:38     Как изменять значения переменной уже скомпилированного кода
  #11

Не по теме:

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

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.10.2012, 12:38
Привет! Вот еще темы с ответами:

Преобразование значения переменной (long) через функцию в значения структуры - C++
Я недавно начал заниматься С++ и программированием в целом. Вот у меня такая проблема. В этой программе не работает часть, когда...

Работа с файлами (создать файл путь к которому уже задан, а вот имя хранится в переменной) - C++
Проблема: Необходимо создать файл путь к которому уже задан, а вот имя хранится в переменной. string name; cout<<"Введите...

Изменение уже скомпилированного *.swf - Flash
Задача: Существует непростая схема (рисунок) нарисованная в Кореле Дрю и экспортированная в дальнейшем в *.swf Перерисовывать эту же...

Подскажите новичку.как значения переменной из кода VBA вывести в таблицу Acc-а - MS Access
В общем можете объясните в подробностях, по возможности, как значения переменной из кода VBA вывести в таблицу Accessа. ниже скрины того,...


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

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

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