Трохи про злом і захист банерів

Раніше тут була інструкція jnz, що обходить блок коду, що працює тільки при
активному банері. Очевидно, в исходниках було щось на кшталт:

if (banner_active ())
if (timercnt ++ == 0x78) addpoints ();
refreshwindow ();
timercnt = 0;
>

Здавалося б, гарного захисту від подібних надувательств немає, хоча ... У
софт-банерах вся система нарахування поінтів і перевірки на обман чомусь зосереджена в клієнтської
частини, єдине, що робить серверна - перевіряє, щоб
НЕ воможно було нарахувати нереальну суму очок. А могло
бути гірше ...

Страшна казка про server-side захисту.

Клієнт (софт-банер) не вважає окуляри сам. Він тільки посилає на сервер
інформацію про пересування мишки і отримує від сервера відповіді - кількість очок на даний момент. тепер
задача серверного ПО - забезпечити захист від емуляції банера і емуляції присутності людини за
комп'ютером. Зрозуміло, що хорошу емуляцію можна відрізнити від реальності. Але хто зможе
зробити хорошу емуляцію, коли критерії «гарності» невідомі, тому що перевірка на емуляцію
здійснюється серверної частиною, до якої немає доступу?
Професійний математик + програміст з кілобаксовой
зарплатою, можливо, зможе, але чи варто свічок така гра? А від рядового
програміста, позавчора побачив Delphi / MSVC і полезшего писати «бармена»,
перевірка на емуляцію напевно врятує.

Всі «бармени» побудовані по приблизно таким принципом: у випадкові інтервали
часу миша подорожує в випадкові області екрану. Це виглядає так: береться випадкова
точка, і курсор починає переміщатися до неї. Складемо статистику нахождунія миші в кожній
конкретній точці екрану. Так як точка, до якої буде рухатися миша, вибирається як значення функції,
дає випадкову величину з рівномірним розподілом, ймовірність знаходження миші в кожній
точці екрану мінімум - симетрична щодо осей X, Y і центральної частини екрана, а максимум - при
досить рідкісному пересуванні миші - рівномірно розподілена по всьому екрану. Це якщо за
машиною «сидить» емулятор людини.

А якщо за машиною сидить справжня людина, розподіл буде яке завгодно, але
Не близько до такого «правильному». У мене, наприклад, миша з імовірністю 90% знаходиться в правій
половині екрану, і з імовірністю 80% - притиснута до краю. У разі емулятора все повинно було б
бути навпаки: ймовірність знаходження миші ліворуч і праворуч - 50/50, і
ймовірність знаходження близько до кордону екрану - менше, ніж ймовірність знаходження у центру. Уявіть,
що людина, яка написала «бармена», просто отримає через пару днів лист без пояснень: «ваш екаунт
закритий за спробу шахрайство ». Чи зможе він зрозуміти, що проблема - в неприродному
розподілі ймовірностей?

Звичайно, описана захист - страшна казка, реально я не отримав листа
«Екаунт закритий» незважаючи на таку відверту нахабність, як втручання в код банера, збільшення
швидкості нарахування поінтів і відсутність активності щодо завантаження банерів. Можливо, нинішні
вкладення в захист софт-банерів вважаються (і справедливо) достатніми, тому що зарубіжні
фахівці, здатні хоча б написати «бармена», цінуються вже на два порядки вище, ніж можуть принести
шахрайства.

Хоча ... Якщо цим займатися централізовано ...

Покажи цю статтю друзям: