Announcement

Collapse
No announcement yet.

Echte Tastatureingaben von softwaregesteuerter Tastatursimulation unterscheiden

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Echte Tastatureingaben von softwaregesteuerter Tastatursimulation unterscheiden

    Hallo zusammen,

    wie kann ich innerhalb eines selbstgeschriebenen Programms erkennen, ob ein realer Benutzer eigenhändig Tastatureingaben durchführt oder ob mein Programm mittels eines anderen Programms softwaregesteuert mit simulierten Tastenanschlagen gefüttert wird?

    Hintergrund:
    Ich habe ein Spiel geschrieben, bei dem es u.a. auf eine hohe Tippgeschindigkeit ankommt.
    Das Spiel wird über einen lokal installierten Client durchgeführt, der die erzielte Punktezahl (und andere Detaildaten) an den Server übermittelt.
    Auf dem Server wird die Highscoreliste geführt, die sich jeder Spieler online über HTTP anzeigen lassen kann.

    Problem:
    Inzwischen erfreut sich das Spiel immer größerer Beliebtheit und lockt Cheater an.
    Diese versuchen ihre Punktezahl dadurch in die Höhe zu schrauben, dass sie die erforderlichen Tastatureingaben nicht selbst durchführen, sondern mit selbstgestrickten Cheat-Programmen die menschliche Reaktions- und Tippzeit sowie die Eingabe simulieren.

    Wer kann mir helfen, simulierte Tastatureingaben zu erkennen ???

    Vielen Dank im Voraus!
    debugger

  • #2
    Hm.
    Da man es AFAIK nicht in den Windows-Messages feststellen kann, ob es sich um einen "realen" oder simulierten Auslöser handelt, wird dir wohl nichts anderes übrig bleiben, als einen eigenen Interrupthandler aufzustülpen, der dann eine Art "Signal" hinterlegt, wenn es einen Tastendruck gab. Also ASM ist von nöten, aber nicht allzu schlimm.
    Eventuell ginge es irgendwie über geschicktes Hooking aber das will ich nicht versprechen, das müsstest du ausprobieren. Ich vermute aber, dass das bereits über die Systemnachrichten angesteuert ist und somit recht leicht überlistbar. Im Endeffekt ist selbst ein Interrupthandler überlistbar. Es ist nur eine Frage, ob der Aufwand wirklich lohnt...die Sache ist nur, dass Leute, die sich in Assembler sozusagen "zu Hause fühlen" die durchaus nicht komplexe Angelegenheit ohne großen Aufwand von der Interruptseite angehen könnten und dann hast du wirklich keine Chance mehr, zwischen HW- und SW-generiertem Aufruf zu unterscheiden...
    mov ax,4c00h
    int 21h
    http://avgp.selfip.org

    Comment

    Working...
    X