Olá a todos, estou tentando criar um bot para um jogo single player (.swf) em Java, estou me aprofundando no Java e queria fazer algo mais simples para entender melhor, porém não há muita coisa na internet referente a Java. Estou trabalhando com 2 opções inicialmente, manipular memoria e usar o JNA ou como eu tenho todo o código do jogo tentar manipulá-lo.
Alguém sabe como essa segundo da opção poderia ser feita ? Talvez através do processo, se tiver links sobre manipulação de memória, processo, etc… Que ajudam nos estudos por favor me envie, apostilas sobre o assunto são bem vindas.
Manipular a memória usando Java?
Complicado. Java não foi feito para isso.
Java não possui ponteiros, mas sim referências. Por exemplo o new
, que aloca um objeto no heap.
A linguagem consegue superficialmente acessar a memória. A ideia é que a JVM faça isso por você.
Na verdade, o que acontece é que quando eu referencio um objeto, de certa forma estou utilizando ponteiros para apontar para o endereço da memória que contém o objeto. No entanto, diferentemente do C e do C++, eu não consigo acessar a memória e fazer operações com ela (ex.: op. aritméticas), portanto, não há como fazer com que um programa escrito em Java veja ‘por baixo dos panos’.
Sim @matheus.cirillo, entendo o que você disse, por isso estou usando JNA, que por meio do Java consigo lidar com alocação de memória como no C/C++, através das classes Memory/Pointer entre outras.
E sobre a outra opção que tenho ? Você tem alguma ideia de como pode ser feita essa alteração já que tenho o código fonte do jogo ?
Esse tema é muito nebuloso no Java, por isso estou tentando reunir qualquer informação que pode servir para me aprofundar no Java.
Olha cara, estudei muito superficialmente sobre memória em Java. Como você disse, esse tema é complicado e mesmo com a JNA, não creio que seja tão efetivo quanto utilizar C ou C++.
Sobre sua segunda opção, talvez fosse legal você dar uma lida no código e ver se consegue aplicar alguma técnica de engenharia reversa. Dê uma olhada em disassemblers e debuggers (ex.: OllyDBG, IDA).
Obrigado matheus.cirillo vou procurar.