Auto Hot Key
Auto Hot Key
Auto Hot Key
Resumo
Entre as diversas formas de realizarem um processo ilícito em jogos on-line, a que foi estudada é
Auto-Hot-Key(AHK), trata-se de um script (e um software) utilizado para automatização de sistemas
operacionais na Microsoft. Este projeto se propôs a construir um catálogo de padrões de identificação
de ações em jogos online que, potencialmente, possam ser implementados. O que após uma serie de
testes em um servidor privado, descobrimos como o AHK trabalha sobre o servidor, no qual era algo
completamente diferente do que esperávamos, e tivemos que revisar todo o trabalho para com isto
obtiver uma progressão. Por fim, a idéia de compreender metodologias de segurança e
desenvolvimento de jogos on-line, para estudarmos o melhor caminho de impedir futuras ações
ilícitas de adquirir poder, nos levou a um resultado inesperado, podemos identificar a forma que ele é
executado e não como é controlado, o que surgiu a nós disponibilizar uma lógica inédita em relação a
este problema de detectar usuários de AHK.
Abstract
Among the various forms of performing an illegal process in online gaming there is the Auto Hot-Key
(AHK). It is a script (and software) used for automation in Microsoft operating systems. This project is
proposed to build a catalog of patterns for identification of actions in online games that potentially
could be implemented. What after a series of tests on a private server, we discovered how AHK works
on the server, which was something completely different than we expected and we had to revise all
the work that we get to a progression. Finally the idea of methodologies to understand security and
development of online gaming, to study the best way to prevent future illegal actions to gain power, led
to an unexpected result, we can identify the way it runs and is not as controlled, which came us
provide arationale for this unprecedented problem of detecting AHK users.
1
I Mostra de Iniciação em Tecnologia e Inovação - 2011
1. Introdução
2
Universidade Presbiteriana Mackenzie
2. Referencial Teórico
Existem dois referenciais teóricos importantes para este projeto: o mecanismo de AHK
genérico e a sua ação dentrode um jogo genérico.
AHK(Autohotkey, 2009)é um software open source, mais conhecido como macro. Realiza a
função de automatização de software utilitário, que permite aos usuários automatizar tarefas
repetitivas. Qualquer aplicativo do usuário pode ser modificado pelo AHK. O software possui
características e ações de um costume scripting (linhas de comandos), que se destina
especificamente a proporcionar atalhos de teclado ou teclas de atalho.
Para exemplificar alguns destes usos, a seguir são apresentados dois exemplos:
• Buscas automáticas: O script a seguir permitirá que um usuário para pesquisar uma
determinada palavra ou frase usando o Google.
3
I Mostra de Iniciação em Tecnologia e Inovação - 2011
Script:
g #:; Win + g
Run http://www.google.com/search?q=%clipboard%
Return
• Auto-char: Quando uma URL é copiada para a Área de Transferência, o atalho Alt +
x vai verificar a URL de qualquer / todos os parênteses e substituí-las com caracteres
alternados antes de colar a URL da área de transferência:
Script:
! X:; + Alt x
URLReplace()
Send ^v ;Ctrl+v
Return
URLReplace() {
StringReplace, Clipboard, Clipboard, (, `%28, All
StringReplace, Clipboard, Clipboard, ), `%29, All)
}
Porém, é importante destacar que AHK também é usado para atos ilícitos como, por
exemplo:
4
Universidade Presbiteriana Mackenzie
O AHK é normalmente utilizado para poupar esforço e para executar certas ações que não
seriam possíveis pelos eventuais compromissos do usuário Além de que, ele tem liberdade
de usar mais de um AHK, possibilitando assim varias ações que seria impossível de um
humano fazer ao mesmo tempo com tanta velocidade em relação ao tempo (Alexander,
2005). Estas são as características principais do AHK para chamar atenção de jogadores
extremamente competitivos e comércios ilegais (Hoglung, 2007).
Alguns jogos de MMORPG como Risin Force e Cabal online já disponibilizam a instalação
do Client-Path certo tipos de macros, que não afetaria no desenvolvimento do game, como
por exemplo, o macro de chat.Outros como jogos de FPS proíbem a utilização de macros,
como The Duel e CombatArms.
Tanto MMORPG quanto FPS, o AHK pode ser executado, e não existe um sistema de
segurança atual que identifique e/ou impeça tal processo (Hoglung, 2007).Não existe uma
fonte oficial para informações deste método, as informações foram obtidas pelas análises de
ataques detectados em servidores privados.Para todos os meios, o AHK possui a finalidade
de desenvolver uma automatização das ações do jogador em relação ao servidor, por
exemplo:
5
I Mostra de Iniciação em Tecnologia e Inovação - 2011
Script:
(F5)::
Loop,100000000000
{
Send{F1}
sleep,80
Send{Enter}
sleep,55
send{Enter}
sleep,55
}
F6::Pause
return
Script:
(LCTRL)
{
loop
{
GetKeyState,state,(CTRL)
if state = D
Send, {F7}
}
}
6
Universidade Presbiteriana Mackenzie
local de segurança, armazenar os itens adquiridos, e começar tudo de novo. Estes scripts
são de alto nível para pessoas que não conhecem a biblioteca dos comandos de AHK,
logo muita atenção nas instruções.Para funcionar é preciso alterar o arquivo Data.grf no
qual tem quase todas as configurações principais do jogo, A única que será modificada é
os sprites (Imagem/Cor/movimentos) dos monstros, é preciso transformá-los em
perfeitos quadrados azuis, facilitando o comando de detecção da sentença HexColor.
Script:
F5::
SetKeyDelay, 100
SetMouseDelay, 10
SetWinDelay, 500
WinGet, active_id, ID, A
WinGetTitle, ro_title
CoordMode, Pixel, Relative
CoordMode, Mouse, Relative
; Tamanho da resolução da sua tela
Res_X:=1024
Res_Y:=768
heal_x:= res_x/2
heal_y:= res_y/2
; É Necessário tele portar pelo mapa?
; 1 = Sim, 0 = Não
warp:=1
; FalconEyes é necessário?
; 1 = Sim, 0 = Não
eyes:=1
; ================== Cores ===================
; -----------------------Monstros-----------------------
; Azul do quadrado azul
HexColor:= 0xFF0000
adicional:= 5
; ===========================================
; Fator Lag, se o server estiver lagado, tire o comment da linha abaixo
; LagFactor:= 800
7
I Mostra de Iniciação em Tecnologia e Inovação - 2011
8
Universidade Presbiteriana Mackenzie
}
}
9
I Mostra de Iniciação em Tecnologia e Inovação - 2011
F6:: Pause
F7:: Reload
^F8:: ExitApp
3. Metodologia do Projeto
O projeto teve como proposta desenvolver um sistema de detecção de AHK e outros futuros
processos similares a macros, tendo como processo a observação pelos pacotes de dados
recebidos e enviadosao servidor.
Mas antes de desenvolvermos, segundo Greg Hoglund em seu livro Explointing Online
Games: Cheating Massively Distributed Systems, precisamos levantar informações de
comportamento, como por exemplo: Todo jogador que utiliza Auto hot-key, tem por
finalidade produzir poder (dinheiro) no jogo, e a forma de adquirir dinheiro é matando os
monstros, logo o players utiliza isto para melhorar sua produção de poder(Greg Hoglund,
2007)
Este projeto estabeleceu uma base para o desenvolvimento dos métodos de proteção de
jogos online, sendo possível assim uma competitividade mais justa para todos os clientes.
Durante o inicioda pesquisa Alguns desafios computacionais foram detectados:
• Como adicionar o sistema Anti-AHK de forma que não haja Lag no servidor ou
alguma outra danificação na qualidade do serviço para os jogadores ?
Isto é um grande problema, pois qualquer jogador interessado em usar umscript de AHK tem
ciência de que é facilmente editado, tendo a matriz como base para funcionar com as
características de um usuário comum, aplicando uma velocidade menor de repetição. Mas
10
Universidade Presbiteriana Mackenzie
isto pode ser resolvido aplicando um método que identifica o padrão que ocorre a ação
ilícita(Greg Hoglund, 2007), e executa uma verificação periódica.
O script desenvolvido, determina que após certa quantidade de monstros mortos, ele é
ativado, e solicita o jogador a responder o que esta escrita na mensagem enviada.
Script:
- script BotCheck -1,{
OnPCLoginEvent:
if(getgmlevel() > 99) end;
set fakenamechoice,rand(1,10);
atcommand "@option 2 0 0";
atcommand "@mute 1440 "+strcharinfo(0);
atcommand "@monsterignore";
mes "Sorry to disturb you, but I need to check if you're a bot.";
mes "Please don't get alarmed, I had changed your name temporarily";
mes "Just look at your name by pointing at your character";
mes "Then type EXACTLY what it says(case sensitive), or else you will be kicked.";
switch(fakenamechoice) {
case 1:
atcommand "@fakename BotCheck1";
input botname$;
if(botname$ != "BotCheck1") atcommand "@kick "+strcharinfo(0);
break;
case 2:
atcommand "@fakename Bot2Check";
input botname$;
if(botname$ != "Bot2Check") atcommand "@kick "+strcharinfo(0);
break;
case 3:
atcommand "@fakenameiamnotabot";
input botname$;
if(botname$ != "iamnotabot") atcommand "@kick "+strcharinfo(0);
11
I Mostra de Iniciação em Tecnologia e Inovação - 2011
break;
case 4:
atcommand "@fakenamepiderman";
input botname$;
if(botname$ != "piderman") atcommand "@kick "+strcharinfo(0);
break;
case 5:
atcommand "@fakenamebaman";
input botname$;
if(botname$ != "baman") atcommand "@kick "+strcharinfo(0);
break;
case 6:
atcommand "@fakenamebotsux";
input botname$;
if(botname$ != "botsux") atcommand "@kick "+strcharinfo(0);
break;
case 7:
atcommand "@fakenamewhoaimaplayer";
input botname$;
if(botname$ != "whoaimaplayer") atcommand "@kick "+strcharinfo(0);
break;
case 8:
atcommand "@fakenamethankyouarigato";
input botname$;
if(botname$ != "thankyouarigato") atcommand "@kick "+strcharinfo(0);
break;
case 9:
atcommand "@fakenameihatebots";
input botname$;
if(botname$ != "ihatebots") atcommand "@kick "+strcharinfo(0);
break;
default:
atcommand "@fakenameBotLastCheck";
input botname$;
if(botname$ != "BotLastCheck") atcommand "@kick "+strcharinfo(0);
break;
}
mes "Thank you for your patience, you can now move on.";
12
Universidade Presbiteriana Mackenzie
4 Resultados e Discussão
• Estudo das técnicas de AHK: logono inicio do projeto, era necessário conhecer
profundamente a capacidade que o AHK temde produzir ações no Sistema Operacional
Windows, foi descoberto que este software é capaz de produzir em alta velocidade, um
loop de comandos básicos como clicks e digitações, no qual pode ser usado para realizar
operações complexas, e simultaneamente de acordo com cada janela. A partir desta
idéia, pode-se começar os estudos do uso deste software em jogos.
13
I Mostra de Iniciação em Tecnologia e Inovação - 2011
5. Conclusões
Referências
14
Universidade Presbiteriana Mackenzie
15