Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.02.2014, 20:06   #1
DanZ
Пользователь
 
Регистрация: 31.01.2014
Сообщений: 52
Смех Игра Интуиция

Было скучно написал программу "Интуиция", суть в том чтобы угадать число , которое уже находится в памяти компьютера.Существует два уровня сложности: легкий(нужно ввести 10 чисел от 1 до 10), и тяжелые(ввести 50 чисел от 1 до 100). В итоге программа выдает результат, хорошая у вас интуиция или плохая....ах да программа консольная)
Вложения
Тип файла: zip Интуиция.zip (16.9 Кб, 10 просмотров)
DanZ вне форума Ответить с цитированием
Старый 13.02.2014, 01:26   #2
Malriser
xor esp, esp
Форумчанин
 
Регистрация: 11.02.2014
Сообщений: 135
По умолчанию

"которое уже находится в памяти компьютера" - не слишком хороший тон, я тебе это потом докажу . Лучше генерить их на основе тех или иных ошибок ( например прочесть диск, которого нету ) и использовать это как ключ для генерации, после этого прогнать результат через xor ( не ASCII код, а само число получившееся (!) ) и уже потом сравнивать.

Спасибо! Офигенная игра.

Особенно мне понравилось.

Я оказывается экстрасенс)))









Кстати, зачем тебе четыре лишних строки? Нельзя было все в одну функцию запихнуть? + совершенно два идентичных куска кода, отличаются лишь цифрами и текстом в результате. Зачем так много лишнего кода?!





А так спасибо, заберу функцию игры на сложном левле.

Код:
int hardlevel()
{
  int result;
  int v1[100]; 
  int v2;
  int v3; 
  int v4;
  int i; 

  for ( i = 1; i <= 50; ++i )
  {
    v1[i] = rand() % 100;
    printf("%d ", i);
    scanf("%d", &v2);
    if ( v1[i] == v2 )
    {
      puts("+");
      ++v4;
    }
    else
    {
      printf("-\n ");
      ++v3;
    }
  }
  if ( v4 < v3 )
    result = puts("YOU have bake");
  else
    result = puts("YOU have good");
  return result;
}


P.S. Да, я такой, люблю взламывать софт и тырить от туда функции)))

Последний раз редактировалось Malriser; 13.02.2014 в 01:39.
Malriser вне форума Ответить с цитированием
Старый 13.02.2014, 11:38   #3
DanZ
Пользователь
 
Регистрация: 31.01.2014
Сообщений: 52
По умолчанию

Перезаливаю файл, потомучто в уровне "Сложный", не то писал в итоге
Вложения
Тип файла: zip Интуиция.zip (16.8 Кб, 6 просмотров)
DanZ вне форума Ответить с цитированием
Старый 13.02.2014, 11:43   #4
DanZ
Пользователь
 
Регистрация: 31.01.2014
Сообщений: 52
По умолчанию

Цитата:
Сообщение от Malriser Посмотреть сообщение
"которое уже находится в памяти компьютера" - не слишком хороший тон, я тебе это потом докажу . Лучше генерить их на основе тех или иных ошибок ( например прочесть диск, которого нету ) и использовать это как ключ для генерации, после этого прогнать результат через xor ( не ASCII код, а само число получившееся (!) ) и уже потом сравнивать.

Спасибо! Офигенная игра.

Особенно мне понравилось.

Я оказывается экстрасенс)))









Кстати, зачем тебе четыре лишних строки? Нельзя было все в одну функцию запихнуть? + совершенно два идентичных куска кода, отличаются лишь цифрами и текстом в результате. Зачем так много лишнего кода?!





А так спасибо, заберу функцию игры на сложном левле.

Код:
int hardlevel()
{
  int result;
  int v1[100]; 
  int v2;
  int v3; 
  int v4;
  int i; 

  for ( i = 1; i <= 50; ++i )
  {
    v1[i] = rand() % 100;
    printf("%d ", i);
    scanf("%d", &v2);
    if ( v1[i] == v2 )
    {
      puts("+");
      ++v4;
    }
    else
    {
      printf("-\n ");
      ++v3;
    }
  }
  if ( v4 < v3 )
    result = puts("YOU have bake");
  else
    result = puts("YOU have good");
  return result;
}


P.S. Да, я такой, люблю взламывать софт и тырить от туда функции)))
Хм...интересно, интересно, а не подскажешь, как защитить приложение от взлома? Да и еще интересно чем ломал?
DanZ вне форума Ответить с цитированием
Старый 13.02.2014, 12:37   #5
Malriser
xor esp, esp
Форумчанин
 
Регистрация: 11.02.2014
Сообщений: 135
По умолчанию

Цитата:
Сообщение от DanZ Посмотреть сообщение
Хм...интересно, интересно, а не подскажешь, как защитить приложение от взлома? Да и еще интересно чем ломал?
Декомпиляция с помощью Hex Rays, отладка и патчинг вывода результатов с помощью OllyDbg

Защитить? Ну против отладчика есть функция IsDebuggerPresent() из Kernel32, но согласись - палевно в программе такое вызывать. Лично мне смешно, когда меня пытаются этим остановить. Просто вместо call IsDebuggerPresent написать mov eax, 0 и вся антиотладка убита.

Можно замерять время исполнения программы, но это тоже смешно: жмем F4 в OllyDbg до туда где заканчивается замер времени и антиотладка в дауне).

P.S.

Замер с помощью GetTickCount функции

Антидекомпилирование - обфускация кода + полиморфизм.


Против дизассемблирования можно попробовать команды jmp со смещением от текущего адреса на предыдущий. Например команда push занимает два байта, а мы делаем прыжок на 1 байт назад и процессор это обрабатывает, а дизассемблеры не знают какой код строить.
Malriser вне форума Ответить с цитированием
Старый 13.02.2014, 22:04   #6
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,601
По умолчанию

Цитата:
Хм...интересно, интересно, а не подскажешь, как защитить приложение от взлома? Да и еще интересно чем ломал?
1. Писать под Linux. Мало кто умеет пользоваться gdb.
2. Выложить исходный код в общий доступ, как это делали (и делают) с крипто алгоритмами.
3. Сделать запутанную функцию проверки значения, и не хранить искомое число в памяти. Этот пункт лишь усложнит процесс "взлома".
4. Забить на горе-взломщиков и делать программы для людей. Данный пункт подойдет только для Open Sources программ, не смотря на все, это самый верный путь. Даже если ваша программа полностью открыта - вы можете продавать диски. Не все люди эгоисты. Кто-то купит диск из-за уважения к Вам. Только этого уважения необходимо добиться бинарником находящимся на CD.

Если собираетесь зарабатывать деньги на своих программах - стройте планы обороны. Без этого в коммерции никак. Факт касается не только программирования.

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог
_PROGRAMM_ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Игра apelsun Общие вопросы Delphi 2 16.11.2012 09:12
Игра Bulnaz Общие вопросы по Java, Java SE, Kotlin 0 16.02.2012 12:03
Игра Кристинка89 C++ Builder 2 17.03.2011 01:39
С# ИГРА Rusmen Общие вопросы .NET 9 16.03.2010 15:53