Сейчас на форуме: _MBK_, vsv1, ut2004 (+6 невидимых)

 eXeL@B —› Вопросы новичков —› Защита от ArtMoney и т.п.
Посл.ответ Сообщение

Ранг: 1.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 18 января 2007 04:24
· Личное сообщение · #1

Здравствуйте.

Подскажите как можно защить данные в программе от изменения их ломалками игр в памяти (ArtMoney, Сheatfinder, Magic Trainer Creator и т. п.).
Если как-нибудь хитро закодировать переменную, то это поможет?
И можно ли как-то отслеживать что врублены эти программы и их отрубать?

Спасибо.




Ранг: 240.5 (наставник)
Активность: 0.190
Статус: Участник
Author of ACKiller

Создано: 18 января 2007 06:59
· Личное сообщение · #2

lyolik пишет:
Если как-нибудь хитро закодировать переменную, то это поможет?

Да хоть примитивнейшей математикой - при чтении добавлять например 57ВА8870h, при записи - отнимать. Можно ксорить и т.д. Главное чтобы они хранились не в открытом виде.

lyolik пишет:
И можно ли как-то отслеживать что врублены эти программы и их отрубать?

Конечно! Так же как и детектить ольгу (хотя и не надежно) - поиск окна с опр. названием класса, поиск по названию процесса, по названию модуля, по сигнатуре в процессе (придется открывать процесс). Можно определять названия (или положение) дочерних элементов окна и т.д.



Ранг: 1.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 18 января 2007 11:56
· Личное сообщение · #3

А если использовать такой метод:
Перед вычислением переменной(x) находим случайное число(r) (1-100), затем, вычислив переменную, умножить на случайное. А при выводе на экран/записью в файл и тд делить это число на случайное.
Например так:
r = rand(1,100);
x=25;//Наше значение для работы
x*=r;
printf(x/r);
Такая схема работает, в ArtMoney 7 искал как кодированное значение, ничего не нашёл.
Действительно ли такая схема надёжна?




Ранг: 240.5 (наставник)
Активность: 0.190
Статус: Участник
Author of ACKiller

Создано: 19 января 2007 02:18
· Личное сообщение · #4

lyolik пишет:
printf(x/r);

Тогда уж printf("%f", x/r);

lyolik пишет:
Действительно ли такая схема надёжна?

От простого поиска в памяти процесса - да. Ведь ломалки тупо ищут введенное число, если оно зашифровано - естейственно не найдут.



Ранг: 1.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 19 января 2007 08:26
· Личное сообщение · #5

"Тогда уж printf("%f", x/r); "
Это понятно конечно), так, для примера написал..

"От простого поиска в памяти процесса - да. Ведь ломалки тупо ищут введенное число, если оно зашифровано - естейственно не найдут."
ArtMoney как раз ищет И зашифрованные значения. Алгоритм примерно такой: для начала сохраняет все значения в памяти от ломаемой проги. Затем, получив новое число в проге, вызываешь ArtMoney и отсеиваешь, выбирая опцию изменилось число либо не изменилось. И так оно отсеивает за шагов 20. У меня ни нашло, что нужно, но мало ли.
Так можно ли найти число с помощью этого алгоритма ArtMoney?




Ранг: 240.5 (наставник)
Активность: 0.190
Статус: Участник
Author of ACKiller

Создано: 19 января 2007 08:50
· Личное сообщение · #6

lyolik
Дык ты сам же сказал что оно просто сравнивает число с нужным.

lyolik пишет:
ArtMoney как раз ищет И зашифрованные значения.

На сайте artmoney нашел только Extra feature: Filter by formula. The most powerful searching! You will find any coded value! - т.е. по определенной формуле (и только в зареганной версии ). Если использовать рандом, не основанный на хранении ключа расшифровки (хотя бы ксор значения) в статической области памяти (ну например в регистре или в СЛУЧАЙНОЙ области стека), я так понимаю эта фича ничего не сделает.

ЗЫ Кривовато выразился, но думаю понятно. Развить идею тоже никто не мешает.



Ранг: 214.1 (наставник)
Активность: 0.130
Статус: Участник

Создано: 19 января 2007 20:11
· Личное сообщение · #7

lyolik артманей имеет довольно мощный движок - поиск неизвестного значения - найдет рано или поздно - зависимость только от времени, больше меньше тоже отломать можно
как вариант - цепляй арму она сразу игру завершит



Ранг: 1.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 20 января 2007 01:31
· Личное сообщение · #8

В общем придумал, как защититься. НЕ ВЗЯЛА.
Алгоритм такой(оцените, может есть слабые места, а я их не нашёл):
Сам пример: Допустим, есть float x, который мы защищаем. Есть ф-ия, которая вычисляет его. Ф-ия вызывается на нажатии мыши. Потом эта переменная передаётся в другую ф-ию, но остаётся неизменной до следующего вычисления.
Защита: Вместо float x, вводим float x[2] и каждый раз записываем, поочерёдно на 0-ой или 1-ый элемент нужное значение. +Умножаем его на random, а при передачи этого аргумента ф-ии делим на тот же random и берём нужный индекс.
Что получилось: Артмани ни взяла ни по <>, ни по изменилось/не изменилось. Искал неизвестное значение.
Понятно, что известное искать смысла нет, тк цепочка поиска сразуже и оборвётся.
Выскажите своё мнение пожалуйста.




Ранг: 240.5 (наставник)
Активность: 0.190
Статус: Участник
Author of ACKiller

Создано: 20 января 2007 02:08
· Личное сообщение · #9

lyolik
Универсальный поиск, наверно, не сработает. Но крякалку для конкретно твоей проги заточить будет можно, зареверсив часть кода, отвечающую за эту защиту. Так что рано или поздно...



Ранг: 1.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 20 января 2007 03:54
· Личное сообщение · #10

Понятно, что прогу можно взломать, но это другая тема и другой уровень взламывающего. А пользоваться Артмани может любой школьник.



Ранг: 214.1 (наставник)
Активность: 0.130
Статус: Участник

Создано: 20 января 2007 07:51
· Личное сообщение · #11

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




Ранг: 240.5 (наставник)
Активность: 0.190
Статус: Участник
Author of ACKiller

Создано: 20 января 2007 08:10
· Личное сообщение · #12

gegter пишет:
все форумы этим уже засраны, после им подкинут патч, кот даст им бесконечное что-то. смысл тебе это делать???

Где тонко - там и рвется. Естейственно защита должна быть многосторонняя.

gegter пишет:
вот и скажи зачем тебе это? добавишь себе в игру только глюков и покроешь свою жизнь гемороем (код-то тоже надо игры писать и проверять).

Любая защита должна тщательно проверяться. А то будет как во многих горе-протах - ТЛС не обрабатывается, тонкости формата РЕ заброшены черте куда... Но при должной проверке может получиться действительно хорошая защита.



Ранг: 310.8 (мудрец), 29thx
Активность: 0.430
Статус: Участник

Создано: 21 января 2007 00:38
· Личное сообщение · #13

lyolik пишет:
В общем придумал, как защититься.

Дополнительная идея. Надо обязательно "ложный след" давать. Сделай фальшивые переменные, которые будут вести себя , как реальные. Можно вообще защищенные переменные использовать только по таймеру для восстановления. Таймер лучше использовать существующий, тогда тяжелее будет реверсить.



Ранг: 1.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 21 января 2007 12:45
· Личное сообщение · #14

gegter пишет:
ты им отрежешь путь к кислороду и они забросят игру

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

tundra37 пишет: Надо обязательно "ложный след" давать. Сделай фальшивые переменные, которые будут вести себя , как реальные
В принципе фальшивые переменные делать и не надо. Они уже есть. Например,
float x=0; //переменная которую защищаем
х=function();//вычисляем ее,
потом например отсылаю этот х на сервер или еще куда
Вывожу на экран sprintf(tmp,"%f",x);
x=0; //переменную обнуляем.
Все!.Переменная x не берется, так как для артмани она всегда равна нулю.



Ранг: 310.8 (мудрец), 29thx
Активность: 0.430
Статус: Участник

Создано: 21 января 2007 23:49
· Личное сообщение · #15

:lyolik пишет:
Переменная x не берется, так как для артмани она всегда равна нулю.


"Фальшивые" должны ловится. Понимаешь, если человек ничего не найдет - он будет копать вглубь.
А так - будет долго мучится "переприсваивая" ложные переменные и радуясь на несколько секунд/минут(в зависимости от таймера), что он крутой хакер Только таймер должен что-то полезное делать - иначе он быстро разберется что к чему. Просто в данном случае фальшивые плохой термин. Они как раз основные, но есть еще "теневые" переменные, которые хранят истинное значение и используются для противодействия подстановке. Тут можно другую защиту сделать - сравнивать их и "бяки" строить



Ранг: 1.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 23 января 2007 09:28
· Личное сообщение · #16

tundra37 пишет: "Фальшивые" должны ловится. Понимаешь, если человек ничего не найдет - он будет копать вглубь
Согласен. Ловятся переменные которые выводятся на экран (типа char). Ну и пусть себе их меняют. В расчетах используется int и float. А они при защите, про которую написал выше, отличны от нуля очень короткий промежуток времени (милисекунды). И копай хоть в глубь, хоть в ширь - ничего не найдешь.

В общем, тех нескольких способов, которые я сам придумал и написал выше, на данный момент мне хватает для защиты от артмани. Проверял часами, ничего не нашел. Спасибо всем за обсуждение.



Ранг: 310.8 (мудрец), 29thx
Активность: 0.430
Статус: Участник

Создано: 24 января 2007 00:35
· Личное сообщение · #17

lyolik пишет:
Ловятся переменные которые выводятся на экран (типа char).

Это плохо. Небольшой трассировкой "назад" в отладчике можно отловить истинные переменные. Именно так я игру "Парк Юрского периода" проходил




Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 31 января 2007 23:05
· Личное сообщение · #18

lyolik
На самом деле, не всё так уж просто. ArtMoney последних версий могут искать даже кодированные значения, если кодинг этих значений постоянный, т.е. если к переменной для кодирования постоянно прибавлять одно и то же значение, а потом для декодирования отнимать, то артмани имеет возможность
(хотя, и 100%, но всё же вероятность есть) найти такое значение, про случайное число для кодирования - это уже вариант, а ещё лучше применить немного криптографии, ну, скажем, что-то на основе открытого ключа, и не хэш, а шифр, ведь это значение надо потом восстановить.

-----
Stuck to the plan, always think that we would stand up, never ran.




Ранг: 200.3 (наставник)
Активность: 0.090
Статус: Участник

Создано: 01 февраля 2007 01:25
· Личное сообщение · #19

ARCHANGEL пишет:
а ещё лучше применить немного криптографии, ну, скажем, что-то на основе открытого ключа, и не хэш, а шифр, ведь это значение надо потом восстановить
- а тормозить каждый раз это небудет???

-----
Само плывет в pуки только то, что не тонет.




Ранг: 4.3 (гость)
Активность: 0=0
Статус: Участник

Создано: 09 февраля 2007 10:15 · Поправил: artobstrel95
· Личное сообщение · #20

Есть такой сайт- zgsprojects.narod.ru - там в играх как раз такое и применяется. Всё ищется, но если изменяешь значение- выводится сообщение и игра закрывается. Я в отладчике за 5 минут отломал защиту, но с артманей ничего не выйдет. Можешь написать автору игры-он тебе сырец пришлёт.



Ранг: 214.1 (наставник)
Активность: 0.130
Статус: Участник

Создано: 20 февраля 2007 04:43
· Личное сообщение · #21

artobstrel95 пишет: Есть такой сайт- zgsprojects.narod.ru Можешь написать автору игры-он тебе сырец пришлёт.
это еще бабушка надвое сказала. а сырцы нах не нужны - вся защита в том, что перед внесением ИГРОЙ нового значения денег (или чего там еще) считывается старое значение и сравнивается со старым значением (кэшированным ) если проверка сошлась, то вносится новое значение и все Ok если нет, то GameOver
artobstrel95 пишет: но с артманей ничего не выйдет
эт тоже бабушка надвое сказала. можно подменить и кэшированное значение на новое и само значение на новое (одновременно) - и проверка сойдется
Все, что написано выше - это без отладчика, а если есть отладчик, то защита снимается за 30 секунд


 eXeL@B —› Вопросы новичков —› Защита от ArtMoney и т.п.
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати