Você está na página 1de 15

Universidade Presbiteriana Mackenzie

PADRÕES DE AUTO HOT-KEY(AHK) EM JOGOS ONLINE


Leonard Colusso Oliveira (IC) e Luciano Silva (Orientador)
Apoio: PIBITI Mackenzie

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.

Palavras-chave: segurança, jogos, Auto Hot-Key

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.

Keywords: security, games, Auto Hot Key

1
I Mostra de Iniciação em Tecnologia e Inovação - 2011

1. Introdução

Existemmuitas formas de realizarem um processo ilícito em jogos on-line (Alexander, 2005;


Hoglung, 2007). Uma das formas é a utilização de Auto Hot-Key(AHK) (Autohotkey, 2009):
trata-se de um script (e um software) utilizado para automatização de sistemas operacionais,
mas que se tornou comum devido ao fácil acesso do script e das formas de utilização.
Quando foi divulgada a sua descoberta, a sua presença em jogos tornou-se um assunto
polêmico para tomada de decisões na administração de segurança de servidores de jogos
on-line.Embora os mecanismos de AHK em jogos sejam bem conhecidos, padrões de
segurança para sua detecção ainda são muito primitivos.

A segurança em jogos online é uma área de pouco avanço tecnológico e interesse de


desenvolvimento, é preciso combater os métodos variados e muito avançados dos crackers
(Alexander, 2009). AHK foi uma das formas encontradas para “automatizar um jogador”, e
que virou um software muito utilizado para bastantes jogadores, mas um problema para o
desenvolvimento da economia em games (Hoglung, 2007).

Empresas como nProtect (www.nprotect.com) e Game Fort (www.gamefort.com.br) são


especializadas em desenvolver sistemas de segurança para jogos on-line, mas ainda não é
suficiente para a demanda. Neste contexto, é de grande interesse computacional e
comercial o estabelecimento de padrões que permitam identificar ações em jogos on-line
que se configurem como ataques AHK dentro do jogo.

Este projeto se propôs a construir um catálogo de padrões de identificação de ações em


jogos on-line que, potencialmente, possam se configurar como uso não-autorizado de AHK
dentro do ambiente do jogo. A partir da simulação de uso de AHK dentro de jogos online
bem conhecidos, buscar-se-ão índices que permitam caracterizar ações oriundas de AHK. A
partir destes índices, será construído um catálogo dos padrões de ações que possam
evidenciar a presença de AHK em um jogo.

Ainda não existe, na literatura técnica de segurança ou jogos digitais, um catálogo de


caracterização de ações AHK. Assim, este trabalho torna-se pioneiro na área de jogos
digitais on-line e permitirá estabelecer as bases padrão estudo de mecanismos de contra-
ataque ao AHK.

Este artigo está organizado da seguinte forma:

• A Seção 2 apresenta o referencial teórico;

• A Seção 3 trata da metodologia do projeto;

• A Seção 4apresenta resultados e discussões;

2
Universidade Presbiteriana Mackenzie

• Finalmente, a Seção 5 traz a conclusão.

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.

2.1 Auto Hot-Key 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.

Uma característica da programação de um AHK é a linguagem C (Damas,2007)e, na


maioria das vezes, os programas são compilados com Visual Studio Express, sendo
possível assim, quando compilados, executarem em qualquer máquina sem necessidade de
instalação. No contexto legal, o AHK genérico é bastante utilizado para:

• Atalhos para preencher nomes freqüentemente usados ou outras frases

• Controlar o cursor do mouse com um teclado ou joystick

• Abrir programas, documentos e sites com teclas simples

• Abrir automaticamente sem necessidade de alguma tecla após a execução

• Como um sistema de acompanhamento e fechar automaticamente programas


indesejados

• Agendamento automático de lembrete, dentre outras funções como Backup.

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

Depois de copiar o texto a partir de qualquer aplicativo para a área de transferência,


pressionando a tecla de atalho configuráveis Win + g abrirá o navegador da Web e realizará
a pesquisa.

• 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:

• Automatizar um sistema de controle de dados, que informaria todos os dados para o


endereço configurado fora ou não da rede,

• Desconfigurar todo o OBDC do sistema, atalhos e teclados, ou seja, aparenta ações


respectivas de vírus, porem dificilmente perceptível por um antivírus, mas facilmente
detectável e eliminado por um usuário de conhecimento básico em Software.

4
Universidade Presbiteriana Mackenzie

Resumidamente, o AHK é um software de grande capacidade para automatizar sistemas, e


funções rapidamente, tanto para fins honestos quanto desonestos, depende então do
objetivo e conhecimento do programador.

2.2 Auto-Hot-Key em Jogos Online

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:

• Auto-creator:utilizado para criar pot’s e outros itens consumíveis. Este macro é


capaz de utilizar os atalhos de habilidades do jogo, no caso o Enter como descrito no
script, além da capacidade de utilizar um ciclo infinito de ações até que o usuário aperte a
tecla que pare o processo.

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

• Auto-poter: possibilidade de se utilizar o mesmo atalho (F7) sem delay, apertando


CRTL esquerdo.Este macro pode ser usado para qualquer jogo, com pequenos ajustes
ele pode com uma tecla, executar mais de uma ação, rapidamente, sendo necessário
somente o usuário apertar o botão programado, quantas e quais vezes forem desejadas
a realizar.Este script desenvolve uma desvantagem ao adversário, afinal velocidade e
precisão in-game é o objetivo de grande massa dos jogos MMORPG:

Script:
(LCTRL)
{
loop
{
GetKeyState,state,(CTRL)
if state = D
Send, {F7}
}
}

• Sniper-Booter: realização de um ciclo de farmin, ou seja, o personagem realiza um


processo que se resume em: Matar monstros por determinado tempo, voltar para um

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.

Para mudar os sprites é preciso um arquivo chamado GrfTools, de fácil utilização:

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

; Numero de DSsFullbuffado pra matar


N_DS:= 1
ds_count_1:=11
ds_count_2:=31
ds_count_3:=51
ds_count_4:=0
Loop
{
;Sniper se buffa
if( ds_count_1 > 5 && eyes == 1 )
{
ds_count_1:=0
send {F4}
sleep 500
}
if( ds_count_2 > 30 )
{
ds_count_2:=0
send {F3}
sleep 500
}
; Recuperar SP
if( ds_count_3 > 40 )
{
ds_count_3:= 0
send !{3}
sleep 2000
sleep LagFactor
MouseClick, left, 323, 257
sleep 100
MouseClick, left, 323, 257
sleep 100
ds_count_4++
if( ds_count_4 > 13 )
{
; Awakening Potion
ds_count_4:=0
send {F1}

8
Universidade Presbiteriana Mackenzie

; Usar mais Flechas -Via Quiver


send {F8}
sleep 800
send {F9} ; Equipa a flecha denovo
}
sleep 2000
Send !{2}
}
if( warp == 1 )
{
Send !{2}
sleep 1500
sleep %LagFactor%
}
counter:= 0
Loop
{
PixelSearch, click_x, click_y, 9, 95, 633, 421, %HexColor%, %adicional%, Fast

if ( ErrorLevel || counter > 5 )


break
else
Loop, %N_DS%
{
Send {F2}
sleep 100
Click, %click_x%, %click_y%
Click
sleep 500
ds_count_1++
ds_count_2++
ds_count_3++
}
sleep 1000
counter++

}
}

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 ?

Segundo os estudos desenvolvidos no Eathena(Eathena, 2008), na grande maioria, as


tecnologias desenvolvidas no jogo são divididas em 3 extremos: via desenvolvimento de
aplicativo no Client-Path(alexander, 2005), pode-se também ser adicionado um plugin
que execute de forma paralela ao servidor, ou, desenvolver no próprio código fonte do
servidor, um método de identificação via linguagem C(Damas, 1999)

• Qual é a forma mais simples de implementação e manutenção?

A forma mais simples de implementação e manutenção é via Script(Eathena, 2008), ou


seja um arquivo de texto, com uma linguagem de programação especifica do jogo, que
serve como um plugin.(alexander, 2005)

• Como detectar um usuário de AHK, independente da configuração de delay


configurado ?

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.

Após uma série de testes para implementação do servidor, e de tentativas de


desenvolvimento docódigo identificador, percebemos que o método mais cabível para esta
pesquisa é desenvolvendo o plugin e ligando com o servidor(Eathena, 2008), assim
facilitaria o processo de manutenção, implementação, compatibilidade,
portabilidade(alexander, 2005).

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

atcommand "@unmute "+strcharinfo(0);


atcommand "@monsterignore";
atcommand "@fakename";
atcommand "@option 0 0 0";
close;
end;
}

4 Resultados e Discussão

O trabalho foi dividido por etapas, descritas a seguir:

• 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.

• Estudo das técnicas de AHK para jogos: quandocomeçamos este período do


projeto, criamos os scripts com as funções usadas para serem aplicados os ataques no
jogo. Porem para realizarmos estes testes, precisou criar nosso servidor de testes, no
qual utilizamos o servidor do Eathena com conexão local para teste em rede fechada, o
procedimento foi realizado com sucesso, os scripts funcionaram perfeitamente, e
descobrimos que o servidor não produzia nem um log que facilitaria a identificação, ou
seja, o AHK trabalha, de acordo com o servidor, livremente como se fosse um jogador
padrão, no qual nos levaria ao próximo passo, desenvolver uma forma de identificação.

• Identificação de ataques padrões de AHK para jogos: objetivo principal do projeto


é identificar um AHK, por meio de conclusões científicas, e aplicando assim ações
especificas para cada eventualidade do usuário. A identificação destes ataques foi
desenvolvida inicialmente com a idéia de identificar o tempo de transmissão de dados no
servidor via desenvolvimento direto ao código fonte, o que posteriormente descobrimos
que o AHK possui variáveis randômicas que dificultaria esta identificação. Logo com isto
descartamos a idéia de desenvolver um software probabilístico pela teoria das Cadeias
de Markov. Foi um processo estritamente analítico e cauteloso, no qual re-estudamos
todos os processos passados, com a finalidade de encontrar uma nova estratégia, e
aplicarmosem umaseries de testes e níveis de ataques de AHK. Finalmente encontramos
uma solução, no qual adotamos que, o importante é identificar em quais momentos o

13
I Mostra de Iniciação em Tecnologia e Inovação - 2011

AHK é usado, e não quando ele é executado, ou seja, surgiu a necessidade de


aplicarmos um sistema de prevenção e não de detecção.

• Formalização do padrão AHK: devido aos estudos realizados, podemos aplicar


uma formalização da função de AHK em jogos on-line, ele é usado internamente ou
externamente, isto é: Desenvolvido para executar ações do jogo sem que
estejamaparente o uso (macros in-game) para o cliente, ou quando o AHK(aplicativo) é
aberto durante a execução do game. A diferença é que o uso externo desta técnica
prejudica a qualidade e a economia do jogo, devido suas funções em loop.

5. Conclusões

Foi estudado que o AHK é extremamente útil para automatização de operações em


plataforma Windows, sendo importante para execuções pré planejadas constantes, sem
necessidade de esforço e tempo, uma de suas funções, a que estudaremos profundamente
é a em jogos on-line.

Pode-se concluir que 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, obteve sucesso. Devido aos testes realizados no servidor,
podemos identificar a forma que ele é executado e não como é controlada, esta tecnologia é
poderosa, capaz de realizar operações semi-perfeitas de um jogador comum, o que surgiu a
nós disponibilizar uma lógica inédita em relação a este problema, no qual levou ao
desenvolvimento do script que é capaz de detectar usuários de AHK, alem de ser
relativamente fácil em questão de customizações e manutenções, e executar em qual quer
plataforma que execute qual quer tipo de servidor de Ragnarok.

Referências

Alexander, T. (2005). Massively Multiplayer Game Development 1 edition. California:


HardCover.

Autohotkey. (2009). Linguagem de Autohotkey. Retrieved 04 25, 2010, from


http://www.autohotkey.com/docs/Tutorial-Portuguese.html

Damas, l. (1999). Linguagem C - 10° Edição. Rio de Janeiro: LTC.

Eathena. (2008, 02 15). Eathena. Retrieved 06 15, 2011, from Eathena:


http://www.eathena.ws/board/index.php?s=de2079db66f084ce201e22ee3775d9c5&

14
Universidade Presbiteriana Mackenzie

Greg Hoglund, G. M. (2007). Explointing Online Games: Cheating Massively Distributed


Systems. United States: Addison Wesley Professional.

Contato: leonardcolusso@hotmail.com e luciano.silva@mackenzie.br

15

Você também pode gostar