Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Detekce ovládání myši skrz aplikaci v c#, detekce bota v c#

Zdravim,
mám aplikaci, která využívá user32.dll pro manimulaci s myší, účel aplikace je simulovat určitou činnost(prostě bot), ale je nějaká možnost jak druhá strana může odhalit, že instrukce pro myš posílá program? Když pomineme časové intervaly kliknutí, jak se taková věc dá odhalit? Otázka mimo - nějaký rozdíl mezi instrukcí kliknutí myší a kliknutím pomocí dotekového monitoru? Mám za to, že veškeré příkazy jdou stejně přes user32.dll, ale rozhodně si tím nejsem jistý proto prosím o radu. Kdyby byla zjistitelná propojenost aplikace s knihovnou tak by možným řešením bylo vytvoření virtuálního os a aplikaci pouštět z hostujícího systému, ale nejsem si tím jist a navíc jde o pohodlnost, virtuální os s aplikací je pro mnoho lidí velmi neprakticke, proto uvítám jakékoliv bližší informace k tomuto problému.
Druhá část dotazu : řekněme, že mám fungující algoritmus, který hraje v online casinu, podle čeho je možné dále identifikovat, že bota používám? pokud veškeré hodnoty jsou náhodné, intervaly kliknutí, pozice, ale nikde se nemohu dočíst o konkretních způsobech ochrany online casin. Prosím o radu na jakoukoliv z mých otázek. Děkuji, případně kontaktujte : palo.dalo@gmail.com

Předmět Autor Datum
Když pomineme časové intervaly kliknutí, jak se taková věc dá odhalit? Jestliže tyto uživatelské ud…
Flash_Gordon 01.08.2011 05:01
Flash_Gordon
Díky za odpověď, no pokud se ve výsledku nebude jednat o desktopovou aplikaci , ale webovou tak tím… poslední
palo.dalo 01.08.2011 10:50
palo.dalo

Když pomineme časové intervaly kliknutí, jak se taková věc dá odhalit?

Jestliže tyto uživatelské události jsou posílány na server, pak je jejich odhalení prakticky zcela namožné.
Navíc nezapomínejme, že i pro časové intervaly tvorby událostí lze užít generátor náhodných čísel.

Otázka mimo - nějaký rozdíl mezi instrukcí kliknutí myší a kliknutím pomocí dotekového monitoru?

Zda existuje rozdíl v rámci user32.dll si nejsem jistý, ale co se týče konkrétně zpracování událostí v C# jsou zcela totožné.

using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;

public class Form1 : Form
{   
[DllImport("user32.dll",CharSet=CharSet.Auto, CallingConvention=CallingConvention.StdCall)]  
 public static extern void mouse_event(long dwFlags, long dx, long dy, long cButtons, long dwExtraInfo);  
 private const int MOUSEEVENTF_LEFTDOWN = 0x02;  
 private const int MOUSEEVENTF_LEFTUP = 0x04;  
 private const int MOUSEEVENTF_RIGHTDOWN = 0x08;  
 private const int MOUSEEVENTF_RIGHTUP = 0x10;   
public Form1() {   }   

public void DoMouseClick()   
{      //Call the imported function with the cursor's current position     
int X = Cursor.Position.X;      
int Y = Cursor.Position.Y;      
mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, X, Y, 0, 0);   
}
   
//...other code needed for the application}

Díky za odpověď, no pokud se ve výsledku nebude jednat o desktopovou aplikaci , ale webovou tak tím snad odpadá důvod obav ze skenování událostí z myši, nebo se mýlím? Děkuji za připomínku že lze generovat generování, ale na druhou stranu pokud se budu řídit strategií hraní, kde je pevně daná posloupnost, nevím jestli je možné toto splnit tak aby byla zachovaná funkčnost? Napřiklad pro kliknutí na tlačítko vycházím z analýzy podle které jsem určil pravděpodobnost okruhu kliknutí a pod..(okruh se generuje a po vygenerovaném limitu se vygeneruje znovu v určitém rozsahu). Budu rád za Vaše další připomínky.

Zpět do poradny Odpovědět na původní otázku Nahoru