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

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

Восстановить пароль Регистрация
 
mat_for_c
 Аватар для mat_for_c
115 / 110 / 19
Регистрация: 26.04.2013
Сообщений: 585
Завершенные тесты: 2
10.07.2014, 22:31     "Взлом" своей программы через артманию #1
В целях саморазвития решил изменить значение переменной в своей программе через 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 значений и при их изменении ничего не происходит.

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

C++ чем отличается вызов объекта через "." и через "->"
C++ 2 Программы. На "целые числа и системы счисления" и на "метод деления отрезка пополам"
C++ "Угадай число" (напишите программу, хочу проверить со своей).
C++ Заменитье буквы "a" и "o" в слове на "A" и "O".
C++ разница между "Порядок выполнения программ на языке C" и "Структура программы на языке C"
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11840 / 6819 / 771
Регистрация: 27.09.2012
Сообщений: 16,911
Записей в блоге: 2
Завершенные тесты: 1
10.07.2014, 22:50     "Взлом" своей программы через артманию #2
Цитата Сообщение от mat_for_c Посмотреть сообщение
В чем может быть дело?
в оптимизации. условие в цикле - всегда true, его даже вычислять не стоит, а значит просто крутим цикл бесконечно
IIARTEMII
20 / 20 / 3
Регистрация: 14.06.2012
Сообщений: 95
Завершенные тесты: 1
10.07.2014, 22:53     "Взлом" своей программы через артманию #3
Попробуйте
C++
1
volatile int a = 100;
mat_for_c
 Аватар для mat_for_c
115 / 110 / 19
Регистрация: 26.04.2013
Сообщений: 585
Завершенные тесты: 2
10.07.2014, 23:03  [ТС]     "Взлом" своей программы через артманию #4
Цитата Сообщение от Croessmah Посмотреть сообщение
условие в цикле - всегда true
т.е. это будет все же эквивалентно while(true) {}. Тогда такой вопрос:
почему не грузятся все ядра, как в случае явного написания while (true) {} ???

Цитата Сообщение от IIARTEMII Посмотреть сообщение
volatile int
не помогло ... однако находить стал в 4 раза больше.
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 раза больше.
Оптимизация, связанная с этим объектом, отключена. Поэтому Вы находите столько значений. Должно было помочь, мб вы неверно находите значение и изменяете
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,048
10.07.2014, 23:16     "Взлом" своей программы через артманию #6
Цитата Сообщение от mat_for_c Посмотреть сообщение
Изменил их все на "-10" и строчка вывелась
ладно хоть система не рухнула
100 это 0x64 представляешь сколько таких значений может быть в программе
плюс у нас не гарвардская архитектура код и данные не разделены мог спокойно завалить код программы
Цитата Сообщение от mat_for_c Посмотреть сообщение
В целях саморазвития
Для этого существуют отладчики, HEX редакторы, дизасемблеры.....
mat_for_c
 Аватар для mat_for_c
115 / 110 / 19
Регистрация: 26.04.2013
Сообщений: 585
Завершенные тесты: 2
10.07.2014, 23:25  [ТС]     "Взлом" своей программы через артманию #7
Цитата Сообщение от ValeryS Посмотреть сообщение
представляешь сколько таких значений может быть в программе
а откуда они могут еще взяться в данной программе?
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,048
10.07.2014, 23:29     "Взлом" своей программы через артманию #8
Цитата Сообщение от mat_for_c Посмотреть сообщение
а откуда они могут еще взяться в данной программе?
ты представляешь себе что такое код программы?
0х64 это и буква d и команды процессора и смещения
число интерпретируется как угодно
olper
24 / 24 / 11
Регистрация: 02.12.2013
Сообщений: 75
11.07.2014, 04:08     "Взлом" своей программы через артманию #9
Цитата Сообщение от mat_for_c Посмотреть сообщение
В чем может быть дело?
а откуда они могут еще взяться в данной программе?
есть такая древняя китайская мудрость
"Если в бинарном файле строго больше чем 255 байт, то хотя бы 2 байта этого бинарника будут иметь одинаковое значение". Большинство уверены в авторстве Конфуция, но есть отличные точки зрения как в авторстве, так и в истинности высказывания.
С ростом размера бинарника вступает в силу "британская" статистика, которая расскажет к примеру что среднее значения байтов по программе.. допустим 128d

Если ты все поменял, а прога продолжила работать, значит со стеком "у твоего инструмент" сложные отношения.
Будь "программистом" возьми "настоящий отладчик" и самообразуйся!
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,048
11.07.2014, 05:01     "Взлом" своей программы через артманию #10
olper,
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
11.07.2014, 06:23     "Взлом" своей программы через артманию #11
olper, 8-битовый байт может иметь 256 разных значений, а не 255. Вероятно ошибка в переводе с китайского.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11840 / 6819 / 771
Регистрация: 27.09.2012
Сообщений: 16,911
Записей в блоге: 2
Завершенные тесты: 1
11.07.2014, 08:32     "Взлом" своей программы через артманию #12
Цитата Сообщение от mat_for_c Посмотреть сообщение
Тогда такой вопрос:
почему не грузятся все ядра, как в случае явного написания while (true) {} ???
потому что система многозадачная и отдавать все её ресурсы в распоряжение Вашей программы никто не будет, собственно, распределение ресурсов вообще не в компетентности вашей программы. А планировщик написан далеко не идиотами.
Лично у меня одно ядро грузится:
Название: cyberforum_screen_003.png
Просмотров: 103

Размер: 21.6 Кб
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5549 / 2563 / 233
Регистрация: 01.11.2011
Сообщений: 6,334
Завершенные тесты: 1
11.07.2014, 08:56     "Взлом" своей программы через артманию #13
Croessmah, просто нужно больше циклов! Х)

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

Не по теме:

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

mat_for_c
 Аватар для mat_for_c
115 / 110 / 19
Регистрация: 26.04.2013
Сообщений: 585
Завершенные тесты: 2
22.07.2014, 10:14  [ТС]     "Взлом" своей программы через артманию #15
Цитата Сообщение от HighPredator Посмотреть сообщение
чуть ли не с точностью до типа данных
Указал только поиск int с 4 байтами + volatile int a => нашлось 2 значения, после изменения которых все же вывелась строчка .
dzrkot
22.07.2014, 10:24
  #16

Не по теме:

не очень понимаю, в чём заключается развитие, копаясь в бинарнике...

Kastaneda
22.07.2014, 12:23
  #17

Не по теме:

Цитата Сообщение от dzrkot Посмотреть сообщение
не очень понимаю, в чём заключается развитие, копаясь в бинарнике...
PHP'шник?

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.07.2014, 12:32     "Взлом" своей программы через артманию
Еще ссылки по теме:

C++ произведение через "одиного" между min и max, и через 1 цикл
Перегрузка оператора "++" и "--" , компилирует, но при запуске программы - ошибка C++
C++ Переменные "емкость", "Галлон", "Бензин"

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

Или воспользуйтесь поиском по форуму:
dzrkot
22.07.2014, 12:32     "Взлом" своей программы через артманию
  #18

Не по теме:

Цитата Сообщение от Kastaneda Посмотреть сообщение
Не по теме:
Цитата Сообщение от dzrkot Посмотреть сообщение
не очень понимаю, в чём заключается развитие, копаясь в бинарнике...
PHP'шник?
ни в коем случае)

Yandex
Объявления
22.07.2014, 12:32     "Взлом" своей программы через артманию
Ответ Создать тему
Опции темы

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