Модераторы: feodorv, GremlinProg, xvr, Fixin

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> надежный способ идентифицировать программу. 
:(
    Опции темы
boostcoder
Дата 16.7.2011, 01:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: нет
Всего: 110



угу. нужно пробовать.
PM WWW   Вверх
Dik0n
Дата 16.7.2011, 01:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 153
Регистрация: 11.5.2011

Репутация: 1
Всего: 10



Цитата(ASMatic @  16.7.2011,  00:17 Найти цитируемый пост)
но задачка опенсорс чит деактивировать

Ну дак я написал 
Цитата

Наверное так-же, как это делают антивирусные программы по сигнатурам, определенных участков файла (кода)

Так-как в коде присутствуют определенные участки кода, которые не меняются при перекомпиляции, например ключевая функция чита, без которой он не будет работать, главное найти ее и составить сигнатуру.

Вывод: берем OpenSource антивирус и ковыряем как там и что...

Вот например моя прога с исходниками, можно посмотреть (правда на Delphi), определяет по сигнатурам на чем написана программа или чем упакована. http://my-soft.ucoz.ru/pe_sniffer.html
--------------------
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ◄◄◄ Сотри монеткой защитный слой
PM MAIL WWW   Вверх
ASMatic
Дата 16.7.2011, 02:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 254
Регистрация: 14.3.2009

Репутация: 1
Всего: 1



запаковал чемнить безоплатным, выложил на форум и опять ищи сигнатуру = тупая аверская "работа" от которой толку на пол дня.
Код

BOOL
WndCtrlCompareWndPos(
    IN      HWND        hWnd1,
    IN      HWND        hWnd2,
    IN      DWORD       Method
    )
{
    RECT    Rect1,
            Rect2;
    BOOL    result;

    result = FALSE;
    if (GetWindowRect( hWnd1, &Rect1 ) && GetWindowRect( hWnd2, &Rect2 )) {
        result = TRUE;

        if (FlagOn( Method, WND_CTRL_COMPARE_WND1_HAVE_LEFT)) {
            if (Rect1.left >= Rect2.left)
                result = FALSE;
        }

        if (FlagOn( Method, WND_CTRL_COMPARE_WND1_HAVE_DOWN)) {
            if (Rect1.top <= Rect2.top)
                result = FALSE;
        }

        if (FlagOn( Method, WND_CTRL_COMPARE_WND1_HAVE_UP)) {
            if (Rect1.top >= Rect2.top)
                result = FALSE;
        }

        if (FlagOn( Method, WND_CTRL_COMPARE_XPOS_EQUAL)) {
            if (Rect1.left != Rect2.left)
                result = FALSE;
        }

        if (FlagOn( Method, WND_CTRL_COMPARE_YPOS_EQUAL)) {
            if (Rect1.top != Rect2.top)
                result = FALSE;
        }
    }

    return result;
}

добавляем WND_CTRL_COMPARE_WND1_LONGER и т.п. (количество окон по типам и т.п. и с какими стилями) + вашу тулзу по определению компалера == делфик?отдыхай_радимый:и пусть те дельфекомпиляторщики поймут что нужно добавить окно на форму дабы детект снять.)
PM MAIL   Вверх
Dik0n
Дата 16.7.2011, 02:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 153
Регистрация: 11.5.2011

Репутация: 1
Всего: 10



Цитата

пусть те дельфекомпиляторщики поймут что нужно добавить окно на форму дабы детект снять.)

ASMatic, Они как раз и поймут так и сделают, потому как любят добавлять всякие кнопки и надписи типа (этот чит сделал мега крутой ламер вася пупкин) да и стили могут подправить графики накидать что-бы круче смотрелось) и это только для отдельного случая а читов то вагон что для каждого свой способ придумывать, тут надо что-то универсальное!!!

Это сообщение отредактировал(а) Dik0n - 16.7.2011, 03:00
--------------------
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ◄◄◄ Сотри монеткой защитный слой
PM MAIL WWW   Вверх
volatile
Дата 16.7.2011, 03:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 13
Всего: 85



Цитата(ASMatic @  16.7.2011,  02:35 Найти цитируемый пост)
запаковал чемнить безоплатным, выложил на форум и опять ищи сигнатуру = тупая аверская "работа"

Сигнатуру нужно искать в памяти процесса, а не на диске. Там он не запакован.

Тупая - не тупая
Острая - не острая.
 

PM MAIL   Вверх
ASMatic
Дата 16.7.2011, 03:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 254
Регистрация: 14.3.2009

Репутация: 1
Всего: 1



Цитата(volatile @  16.7.2011,  01:08 Найти цитируемый пост)
Там он не запакован.

в случае с бесплатными, да (скорей всего).
PM MAIL   Вверх
bass
Дата 16.7.2011, 19:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 315
Регистрация: 5.8.2007

Репутация: 2
Всего: 2



А как чит к твоей игрушке обращаеться???? Мне кажеться туда надо копать..... Например если через окошко то менять его название переодически..... Если в код длл инжектит то проверять на список модулей , можно конечно длл внедрить чтоб в списке модулей не торчала(тут пока не чего в голову не приходит...)..... Если создает сокет поковыряться в списке открытых хендолов программы......
PM MAIL   Вверх
ZVano
Дата 18.7.2011, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 259
Регистрация: 11.12.2006
Где: Украина, Кривой Р ог

Репутация: 1
Всего: 4



Цитата(bass @  16.7.2011,  19:00 Найти цитируемый пост)
А как чит к твоей игрушке обращаеться???

Действительно, дельный вопрос.
Если чит представляется модулем игры (плагином или аддоном), то достаточно встроить систему верификации.
Мне видится такой ход событий:
1. Игра грузит плагин-чит
2. Игра инициализирует плагин.
3. Игра идентифицирует плагин
3.1. Игра: Плагин, ты хто?
3.2. Плагин: Я плагин X системы такой то, версии такой то, мой приватный ключ имеет ID Y.
3.3. Игра: Подтверди свой статус. Вот тебе рандомная строка для проверки.
3.4. Плагин: Подтверждение. Вот тебе твоя строка, зашифрованая моим приватным ключем.
3.5. Игра: Такс, посмотрим что нам тут прислали... Берем публичный ключ для плагина X, расшифровываем сообщение, сверяем с первичным...
3.6.1. Игра: проверка успешна: Плагин, проходи.
3.6.2. Игра: проверка неудачна: Таксс... где то у меня были мои любимые бозар и гаусовка...

PS: публичные ключи нужно поставлять вкомпиленые в exe. 
В новых версиях exe следует добавлять невалидные ключи, которые злоумышленники сумели отыскать в бинарнике и использовать в своих читах.
PPS: зачем геморится с кючами? 
Потому что злоумышленнику сложно будет взламывать такую защиту. Попробуйте найти в памяти кусок данных, который соответствует ключику smile


--------------------
НЕ ФЛУДИМ. Пользуемся кнопками "+" или "-" для выражения своего отношения к теме или сообщению.
Гуглим "Как правильно задавать вопросы"
PM MAIL Skype   Вверх
shara
Дата 5.8.2011, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 29.6.2004
Где: печенье?

Репутация: нет
Всего: 2



boostcoder

Цитата(bass @  16.7.2011,  18:00 Найти цитируемый пост)
А как чит к твоей игрушке обращаеться?


Поддерживаю, сия инфа будет весьма не лишней в процессе выработки коллективного решения проблемы. Еще неплохо было бы услышать в чем именно заключается "читерство"... Игрушка ведь как я понял он-лайн -> значитцо метод аля ArtMoney некатит

Цитата(ZVano @  18.7.2011,  09:35 Найти цитируемый пост)
Попробуйте найти в памяти кусок данных, который соответствует ключику 

А я вот нисагласен  smile  
Всевозможные отладчики с реверсинжинирингом никто не отменял. Но соглашусь что многим кулцхакерам такая защита заметно остудит пыл.


--------------------
   с точки зрения аэродинамики шмель не может летать  
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.1096 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.