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

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

Войти
Регистрация
Восстановить пароль
 
 
mat_for_c
141 / 136 / 29
Регистрация: 26.04.2013
Сообщений: 663
Завершенные тесты: 2
#1

"Взлом" своей программы через артманию - C++

10.07.2014, 22:31. Просмотров 912. Ответов 17
Метки нет (Все метки)

В целях саморазвития решил изменить значение переменной в своей программе через artmania.
Вот сам код:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
 
using namespace std;
 
int main() {
   int a = 100;
 
   while (a > 0) {}
   
   cout << "My prog lose :)";
   system("pause");
}

Скомпилил в дебаге - все нормально. В артмании искал целое значение 100 - нашел ~ 600 значений. Изменил их все на "-10" и строчка вывелась .
А с релизом все не так просто. Находит только ~ 300 значений и при их изменении ничего не происходит.

В чем может быть дело?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.07.2014, 22:31
Здравствуйте! Я подобрал для вас темы с ответами на вопрос "Взлом" своей программы через артманию (C++):

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно" - C++
В зависимости от времени года &quot;весна&quot;, &quot;лето&quot;, &quot;осень&quot;, &quot;зима&quot; определить погоду &quot;тепло&quot;, &quot;жарко&quot;, &quot;холодно&quot;, &quot;очень холодно&quot;. Я так...

Через ООП: Дать для числа наименование: "рубль", "рубля", "рублей"; - C++
Помогите пожалуйста с задачей. Могу сделать ее просто, но надо через ООП и у меня не получается. Дано натуральное число N (N&lt;20),...

Где ошибка невозможно преобразовать указатель "this" из "const pers" в "pers &" при выводе объектов через cout - C++
Добрый день! Переписал код из книг Лафоре, создание мультимножества из собственных объектов- справочник телефонный, с именем и фамилией. ...

Реализовать классы "Воин", "Пехотинец", "Винтовка", "Матрос", "Кортик" (наследование) - C++
Разработать программу с использованием наследования классов, реализующую классы: − воин; − пехотинец(винтовка); − матрос(кортик). ...

2 Программы. На "целые числа и системы счисления" и на "метод деления отрезка пополам" - C++
1)Дано натурально число n. Среди чисел 1, ... ,n найти все такие, запись которых совпадает с последними цифрами их квадрата ( как,...

чем отличается вызов объекта через "." и через "->" - C++
Здравствуйте. Вот создал топик для тех, кто желает сам познать С++, но у которых есть вопросы по базовым знаниям. Начну с вопроса:...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Croessmah
Эксперт CЭксперт С++
13232 / 7504 / 846
Регистрация: 27.09.2012
Сообщений: 18,433
Записей в блоге: 3
Завершенные тесты: 1
10.07.2014, 22:50 #2
Цитата Сообщение от mat_for_c Посмотреть сообщение
В чем может быть дело?
в оптимизации. условие в цикле - всегда true, его даже вычислять не стоит, а значит просто крутим цикл бесконечно
4
IIARTEMII
20 / 20 / 3
Регистрация: 14.06.2012
Сообщений: 95
Завершенные тесты: 1
10.07.2014, 22:53 #3
Попробуйте
C++
1
volatile int a = 100;
1
mat_for_c
141 / 136 / 29
Регистрация: 26.04.2013
Сообщений: 663
Завершенные тесты: 2
10.07.2014, 23:03  [ТС] #4
Цитата Сообщение от Croessmah Посмотреть сообщение
условие в цикле - всегда true
т.е. это будет все же эквивалентно while(true) {}. Тогда такой вопрос:
почему не грузятся все ядра, как в случае явного написания while (true) {} ???

Цитата Сообщение от IIARTEMII Посмотреть сообщение
volatile int
не помогло ... однако находить стал в 4 раза больше.
0
IIARTEMII
20 / 20 / 3
Регистрация: 14.06.2012
Сообщений: 95
Завершенные тесты: 1
10.07.2014, 23:08 #5
Попробуйте вставить
C++
1
2
3
#pragma optimize("", off)
// код
#pragma optimize("", on)
Добавлено через 1 минуту
Цитата Сообщение от mat_for_c Посмотреть сообщение
однако находить стал в 4 раза больше.
Оптимизация, связанная с этим объектом, отключена. Поэтому Вы находите столько значений. Должно было помочь, мб вы неверно находите значение и изменяете
0
ValeryS
Модератор
6633 / 5040 / 466
Регистрация: 14.02.2011
Сообщений: 16,851
10.07.2014, 23:16 #6
Цитата Сообщение от mat_for_c Посмотреть сообщение
Изменил их все на "-10" и строчка вывелась
ладно хоть система не рухнула
100 это 0x64 представляешь сколько таких значений может быть в программе
плюс у нас не гарвардская архитектура код и данные не разделены мог спокойно завалить код программы
Цитата Сообщение от mat_for_c Посмотреть сообщение
В целях саморазвития
Для этого существуют отладчики, HEX редакторы, дизасемблеры.....
0
mat_for_c
141 / 136 / 29
Регистрация: 26.04.2013
Сообщений: 663
Завершенные тесты: 2
10.07.2014, 23:25  [ТС] #7
Цитата Сообщение от ValeryS Посмотреть сообщение
представляешь сколько таких значений может быть в программе
а откуда они могут еще взяться в данной программе?
0
ValeryS
Модератор
6633 / 5040 / 466
Регистрация: 14.02.2011
Сообщений: 16,851
10.07.2014, 23:29 #8
Цитата Сообщение от mat_for_c Посмотреть сообщение
а откуда они могут еще взяться в данной программе?
ты представляешь себе что такое код программы?
0х64 это и буква d и команды процессора и смещения
число интерпретируется как угодно
0
olper
24 / 24 / 11
Регистрация: 02.12.2013
Сообщений: 75
11.07.2014, 04:08 #9
Цитата Сообщение от mat_for_c Посмотреть сообщение
В чем может быть дело?
а откуда они могут еще взяться в данной программе?
есть такая древняя китайская мудрость
"Если в бинарном файле строго больше чем 255 байт, то хотя бы 2 байта этого бинарника будут иметь одинаковое значение". Большинство уверены в авторстве Конфуция, но есть отличные точки зрения как в авторстве, так и в истинности высказывания.
С ростом размера бинарника вступает в силу "британская" статистика, которая расскажет к примеру что среднее значения байтов по программе.. допустим 128d

Если ты все поменял, а прога продолжила работать, значит со стеком "у твоего инструмент" сложные отношения.
Будь "программистом" возьми "настоящий отладчик" и самообразуйся!
3
ValeryS
Модератор
6633 / 5040 / 466
Регистрация: 14.02.2011
Сообщений: 16,851
11.07.2014, 05:01 #10
olper,
0
Tulosba
:)
Эксперт С++
4396 / 3239 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
11.07.2014, 06:23 #11
olper, 8-битовый байт может иметь 256 разных значений, а не 255. Вероятно ошибка в переводе с китайского.
0
Croessmah
Эксперт CЭксперт С++
13232 / 7504 / 846
Регистрация: 27.09.2012
Сообщений: 18,433
Записей в блоге: 3
Завершенные тесты: 1
11.07.2014, 08:32 #12
Цитата Сообщение от mat_for_c Посмотреть сообщение
Тогда такой вопрос:
почему не грузятся все ядра, как в случае явного написания while (true) {} ???
потому что система многозадачная и отдавать все её ресурсы в распоряжение Вашей программы никто не будет, собственно, распределение ресурсов вообще не в компетентности вашей программы. А планировщик написан далеко не идиотами.
Лично у меня одно ядро грузится:
Название: cyberforum_screen_003.png
Просмотров: 104

Размер: 21.6 Кб
1
SatanaXIII
Супер-модератор
Эксперт С++
5616 / 2651 / 246
Регистрация: 01.11.2011
Сообщений: 6,529
Завершенные тесты: 1
11.07.2014, 08:56 #13
Croessmah, просто нужно больше циклов! Х)

mat_for_c, перепишите программу так, чтобы то значение, которое вы собираетесь искать, не было жестко записано в коде, а вычислялось какими-либо сложными манипуляциями. Тогда скорее всего оптимизации оно не подвергнется.
0
HighPredator
11.07.2014, 09:05
  #14

Не по теме:

Если мне память не изменяет, что в артмани можно искать значения чуть ли не с точностью до типа данных. Врядли в такой маленькой программе можно найти 600 последовательностей эквивалентных инту с таким значением.

0
mat_for_c
141 / 136 / 29
Регистрация: 26.04.2013
Сообщений: 663
Завершенные тесты: 2
22.07.2014, 10:14  [ТС] #15
Цитата Сообщение от HighPredator Посмотреть сообщение
чуть ли не с точностью до типа данных
Указал только поиск int с 4 байтами + volatile int a => нашлось 2 значения, после изменения которых все же вывелась строчка .
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.07.2014, 10:14
Привет! Вот еще темы с ответами:

Иерархия классов "список"-"очередь", вызов метода через класс интерфейс - C++
Есть небольшая иерархия классов, контейнер (список) для хранения объектов каждого класса, контейнер (очередь) с указателями на объект...

Перегрузка оператора "++" и "--" , компилирует, но при запуске программы - ошибка - C++
#include &lt;iostream&gt; #include&lt;ctime&gt; #include&lt;stdio.h&gt; #include&lt;locale.h&gt; #include &lt;windows.h&gt; #include &lt;conio.h&gt; ...

Создать класс "Книга" с полями "название книги", "количество страниц", "год издания" - C++
Создать класс Книга поля: название книги,количество страниц,год издания методы: вычислить сколько лет книге и количество дней прошедших...

Создать класс "Вентилятор" содержащий в себе классы: "Двигатель", "Контроллер", "Пульт управления" - C++
Помогите с кодом написания задачи, не понимаю как написать классы в классе. Нужно создать класс &quot;вентилятор&quot; содержащий в себе классы:...


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

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

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