Robot - Focus - Windows API?

Opa pessoal…
To fazendo um bot para um jogo, só para brincar msmo…
Fiz uma função chamada looter (ele pega um item que o bixo “dá” quando morre e coloca na bp)
Eu uso a classe robot, que bate fotos da tela do jogo, procura determinada foto do item que a pessoa quer que pegue na pasta do projeto…
Ae ele compara, se for igual ele move o mouse até o lugar, clica, e arrasta para onde a pessoa deseja…
Mas eh limitado trabalhar com a classe robot pq ele não interage com a aplicação… Se a pessoa diminui a tela do jogo por exemplo, ele vai parar…

Exemplo: Quando aperto f1 o bot inicia, e f2 ele para (seta o flag para false)…

private void iniciaRobo() { new Thread(new Runnable() { public void run() { while (flag == true) { robot.mouseMove(1135, 540); // leva o mouse ateh o item robot.mousePress(InputEvent.BUTTON1_MASK); // clica nele robot.mouseMove(540, 395); //arrasta ele robot.mouseRelease(InputEvent.BUTTON1_MASK); //solta ele robot.delay(2000); } } }).start(); }
Mas quando ele começa a pegar os itens, o “focus” vai para a aplicação, então se eu apertar o f2, o bot logicamente não vai parar…

[color=red]Eu quero:[/color]
Que o mouse fique parado durante a aplicacao… Ele vai ficar movimentando os itens, mas a seta do mouse fica parado para o usuario… Ele pode ficar mechendo em suas aplicacoes, enquanto o Bot realiza o trabalho no jogo…

Existe algum modo de fazer isso usando java? (A pessoa pode ficar mechendo em outras aplicações)
Se não, que linguagem eu deveria usar?

Eu estava fazendo isso antes das férias, e até criei um tópico, e me lembro que disseram para:

  1. Usar a API do Windows
  2. Manipular o protocolo do jogo
  3. Usar um “sniffer”

Não entendi nada disso…
Então, venho pedir a ajuda de vocês… Não quero código pronto, quero entender como funciona…

Estou disposto a aprender uma outra linguagem caso necessário.
Mas quero um ponto de iniciação, para eu poder ter 1 base!

Alguém pode me ajudar?

Dê uma olhada no AutoHotKey (http://www.autohotkey.com). Uso esta ferramenta para em vários cenários de automação de aplicativos Windows e ela oferece vários recursos que permitem um controle “malha fechada”, ao contrário do controle “malha aberta” oferecido pelo Robot.

Outra opção é uma ferramenta que conheci há pouco, o Sikuli: http://sikuli.csail.mit.edu/

Opa…
No site (http://www.autohotkey.com/download/)
Tem essas opções:

[list][color=red]AutoHotkey Installer[/color](1.95 MB): It is not necessary to uninstall your old version first. If you prefer not to run the installer, download this zip file instead.[/list]
[list][color=red]Source Code (C++)[/color] (1.03 MB, self-extracting RAR)[/list]
[list][color=red]SmartGUI Creator 4.0 [/color](273 KB): A visual layout tool that automatically generates GUI scripts. For Windows 9x, get this version instead.[/list]
[list][color=red]SciTE4AutoHotkey[/color]: A free editor for AutoHotkey scripts that offers syntax highlighting, AutoComplete, IntelliSense, code folding, and other features.[/list]
[list][color=red]Other Downloads[/color]: Contains AutoHotkey.dll, AutoCorrect, other source code, miscellaneous utilities, and older versions.
[/list]

Qual deles que eu baixo?

O instalador (1a opção).

Blz…
Baixei, comecei a ver uns “tutoriaiszinhos”, to fazendo umas GUI aqui…
Bem legal ele, facil de mecher e tal…

Vo ver se consigo fazer utilizando ele…
Brigado ae…

Opa…

Tipo, eu fiz um script com o autohotkey só para logar no tibia automaticamente:

[code]
IfWinExist, Tibia

WinActivate
else
{
MsgBox Please Open Game First.
exit
}

#z::
MouseClick, left, 116, 560
Sleep, 100
Send, 723238pp
Send, {TAB}
Send,723238
Send,{ENTER}
Sleep, 2000
Send, {ENTER}
Return[/code]
(Account = 723238pp e senha = 723238)
Mas ele também move o mouse, assim como a classe robot do java…
Alguma outra solução?

Andei dando uma olhada por aki, e descubri que alguns bots são feitos em visual basic…
Ae fui procurar e fiquei confuso…
Aparece tanto visual basic, visual basic c, visual basic c++…
Qual deles que é? Onde posso baixar o certo? Vlw !

Engraçado…

Me desculpa mas estour curioso.

Voce quer criar um bot para seu proprio jogo ou um bot pro tibia?
Por que ambas as ideias nao parecem ter muito sentido pra mim.

Também tem a saída de usar engenharia reversa para estudar os estranhos protocolos desses joguinhos e conseguir criar algum aplicativo que finja ser cliente desse seus joguinhos, daí é só controlar o seu joguinho direto pelo protocolo, sem ter que passar pela interface gráfica.
Acredito que alguns dos emuladores de servidores de jogos onlines surgiram via engenharia reversa.

Inté.

Para que o bot não interfira no uso do computador, será preciso:

  1. Manipular o protocolo do jogo diretamente. Será preciso analisar o protocolo do jogo e fazer engenharia reversa sobre ele para se conseguir cria um programa que simule um cliente.

  2. Rodar o programa sob um máquina virtual. Nesse caso o mouse seria movido somente dentro da VM, não atrapalhando o uso do computador.

  3. Rodar o programa em um sistema operacional que suporte múltiplos servidores de interface gráfica ao mesmo tempo. Um exemplo é o Linux, no qual se pode ter várias instâncias do servidor X rodando ao mesmo tempo. O bot rodaria numa dessas instâncias, não interferindo absolutamente em nada nas outras (ideia similar a da máquina virtual).

Querias. Se o tal jogo é em Windows, você não pode fazer isso na própria sessão do usuário; você teria de deixar rodando esse jogo em uma outra sessão com o Remote Desktop (por exemplo, em uma máquina Windows 2003/2008, que admitem vários usuários logados simultaneamente, mas não em uma máquina Windows XP/Vista/7, que não aceitam mais de um usuário logado em uma determinada máquina de cada vez.)

Opa…
O bot é para tibia sim, e todos os que eu já vi são desse modo…
Mas ele roda em windows xp e vista normalmente…

Perguntei aos autores, e são feito em Visual Basic 2008…
Alguém pode me mostrar um tutorial de engenharia reversa para eu poder controlar os protocolos do jogo?

Vlws !

Opaaa!!
Consegui a API!!!

Consegui até uns exemploss ! ! !

Soh preciso saber:
Que programa que abre arquivos .resx ??
(no exemplo tem o Form1.resx / Program.cs / TestBot.csproj / Form1.Designer.cs / Form1.cs // E mais 3 pastas {bin, obj,Properties})

Você precisa do Microsoft Visual Studio. Esses arquivos (.resx, .cs etc.) são para um programa em C#.

Eu tenho aqui o Microsoft Visual C++, e o Microsoft Visual Basic 2008…

Mas nenhum deles quis abrir o projeto… poderia passar o link de download?

Ou do MonoDevelop (quem disse que para desenvolver na linguagem da MS é preciso estar preso à IDE deles :wink: ).

E pra voce estudar o protocolo voce pode baixar servidores de OTserver e ver os protocolos lá.

Lembro que a muito tempo eu contribuia para desenvolver esses servidores mas nunca mais fiz nada e não sei mais onde voce encontra.

Se me permite a pergunta.

Voce esta fazendo para voce mesmo utilizar ou comercial?
Sei que Bots fazem sucesso no tibia hoje em dia.
Esse jogo já deixou de ser o que era a uns 3 anos atraz =/

Bom, o desenvolvedor do TibiaBotNG e do Elfbot (é o mesmo), já faturou 12 milhões de dólares, em 4 anos…
Seria uma boa fazer um bot para competir, mas minha inteção não é essa…

Eu tou fazendo só para aprender mesmo, a minha intenção é ser o primeiro a fazer um bot para um jogo ae que tá chegando com tudo, e que vai acabar com o tibia… Meu lvl 148 do tibia ta banido por conta do bot :stuck_out_tongue:
Então vou tentar lucrar em cima desse outro jogo ae, que geral ta só esperando abrir… De vez enquando abre uns test server deles, mas a previsão é para abrir em 2012, então nos test servers eu vou testando as coisas que to fazendo…

Já consegui fazer várias funções no meu bot do Tibia, como de “full light”, “spell trainer”, “auto healing”, “looter” e “atk combo”…
Mas utilizei API’s do tibia, que um cara disponibilizou (tibiaapi.com), e uns tutoriais aí na net…

Mas para esse outro jogo eu não teria API, então iria ter que aprender a manipular o protocolo do jogo msmo, utilizando engenharia reversa (o que eu não sei porra nenhuma), mas vou começar a usar…

Vlws !

Hmm… até eu fiquei interessado nisso… hehe…

Mas que jogo novo tão surpreendente é esse? É 2D ou 3D?

E hoje em dia todos jogos estão melhores que tibia, virou um lixo justamente por causa dos updates sem graça e a quantidade irritante de booters.

E existem programas que interceptam os pacotes de rede que saem e que chegam do seu computador, com isso voce pode procurar o padrão e descobrir o protocolo.

Para você descobrir como o protocolo funciona:

  1. Tenha o cliente original instalado.
  2. Instale um sniffer de rede (sugiro o Wireshark).
  3. Execute o sniffer (é intuitivo, mas caso precise procure um tutorial pela Internet).
  4. Execute o cliente do jogo. Você verá todos os pacotes que entram e saem da sua máquina (é recomendável filtrar para que mostrem só os pacotes de determinada porta que o jogo usa).
  5. Você pode analisar os dados que esses pacotes, descobrindo que determinado conjunto de bytes é enviado quando se faz a ação X ou Y.
  6. Se você realmente quer fazer isso, pode investir muito tempo nisso, pois quase sempre esses dados são criptografados e transmitidos na forma de bytes (aparentemente incompreensíveis se você não souber o algoritmo de descriptografia).

[quote=marcobiscaro2112]Para você descobrir como o protocolo funciona:

  1. Tenha o cliente original instalado.
  2. Instale um sniffer de rede (sugiro o Wireshark).
  3. Execute o sniffer (é intuitivo, mas caso precise procure um tutorial pela Internet).
  4. Execute o cliente do jogo. Você verá todos os pacotes que entram e saem da sua máquina (é recomendável filtrar para que mostrem só os pacotes de determinada porta que o jogo usa).
  5. Você pode analisar os dados que esses pacotes, descobrindo que determinado conjunto de bytes é enviado quando se faz a ação X ou Y.
  6. Se você realmente quer fazer isso, pode investir muito tempo nisso, pois quase sempre esses dados são criptografados e transmitidos na forma de bytes (aparentemente incompreensíveis se você não souber o algoritmo de descriptografia).[/quote]
    Acho que nem sempre é preciso ter criptografia, basta ter um protocolo que tenha um jeitão beeeem estranho e isso pode servir para deixar quem faz engenharia reversa beeeem confuso. Se usar muita criptografia ou uma criptografia muito pesada, o servidor pode acabar aguentando uma quantidade de usuários razoávelmente menor.

Inté.