Ir para conteúdo
Fórum Script Brasil
  • 0

Ajuda com script em C++


Mauricio_Lima

Pergunta

Olá pessoal, tudo bem? Então, me mandaram scripts em C++ e preciso adequá-lo para ler e atuar com um arquivo .txt externo, geralmente basta colocar o programa .exe e o arquivo .txt no drive C: dai basta abrir o DOS e mandar um "programa.exe > arquivo.txt", dai então ele gera um outro arquivo.

O primeiro script é esse: http://pastebin.com/avvZawUw

O segundo script é esse: http://pastebin.com/GNxrfv48

Dai eu preciso fazer um programa para esses scripts lerem o arquivo.txt, dai então eles gerarão um outro arquivo.txt. Eu manjo muito de lógica, mas quando peguei isso na mão não entendi nada mesmo. Se alguém puder me ajudar a fazer esse programa eu agradeço MUITO.

Obrigado a todos.

OBS.: detalhe pessoal, o arquivo .txt inicial é esse: http://pastebin.com/raw.php?i=YfP8Rac6

Editado por Mauricio_Lima
Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Boa tarde!

Esse código não significa muita coisa... Parece até ter sido gerado automaticamente por algum descompilador ou algo do gênero...

O que você precisa exatamente? Qual o conteúdo desses arquivos .txt e o que você tem que gravar neles?

Se conseguir explicar isso os códigos podem até ser desnecessários... :)

Edit: agora que eu vi o paste do .txt mas também não ajudou muita coisa... Você sabe o que são aqueles dados?

Abraços,

Marcelo Utikawa da Fonseca

Editado por Marcelo Utikawa da Fonseca
Link para o comentário
Compartilhar em outros sites

  • 0

Olá,

Bom, é uma longa história e meio complicado de explicar, basicamente o que eu preciso descobrir são pacotes hexadecimais de 4 dígitos para poder gerar três arquivos necessários para a conexão e o funcionamento de um programa em Perl. A discussão segue a partir da página 22 desse tópico: http://forums.openkore.com/viewtopic.php?f...5&start=210

Mas a ajuda que eu vim buscar aqui era pra poder ajustar essas duas funcções para poderem gerar os arquivos. Tentei compilar de todas as formas mas sempre deu algum erro.

Obrigado e boa noite.

Link para o comentário
Compartilhar em outros sites

  • 0

Eu estava mesmo imaginando que fosse algo relacionado a engenharia reversa e como eu não queria falar nada sobre algo ilegal então apenas fiz as perguntas.

Eu li um pouco do fórum mas agora não vou conseguir ver mais...

Pelo que entendi existe o kore e está sendo desenvolvido o openkore, é isso?

Se der ainda hoje eu lei mais o fórum e tento entender o problema para tentar alguma solução.

Se não der hoje, amanhã eu vejo!

Abraços e boa sorte!

Marcelo Utikawa da Fonseca

Link para o comentário
Compartilhar em outros sites

  • 0

Openkore é um programa opensource que existe há 7 anos e é usado para se conectar à um jogo online chamado Ragnarok, toda a comunicação é feita através de pacotes hexadecimais de 4 dígitos (apesar que todos eles começam com 0). O problema é: descobrir entre uma lista de 790 pacotes (recvpackets.txt) os pacotes usados para se enviar para o jogo.

Ao que parece e que foi relatado por outros usuários, esses dois scripts (juntamente com o Packet Extractor v3 do tópico) basicamente fazem todo o processo e alguns com conhecimento em C++ já o fizeram porém são egoístas e não compartilham com todos.

Obs.: Engenharia reversa pode ser ilegal mas a finalidade de uso do programa é totalmente legal.

Link para o comentário
Compartilhar em outros sites

  • 0

Sim, concordo com você sobre a questão da engenharia reversa. E me pareceu que o que está sendo feito não é problema realmente, esse o motivo de eu comentar que ia tentar ajudar.

Esse código não compila, falta muita coisa. E são nomes meio genéricos, por isso imaginei que era código gerado. Esse código em si não diz muita coisa...

O txt também não diz muito mais pode existir uma relação entre eles e só eu entendendo como funciona a comunicação poderia tentar decifrar o enigma... :P

Assim que eu conseguir ler o fórum tento entender o que precisa ser feito.

E como os dados são enviados para o servidor? Existe um programa, é isso?

Se puder me explicar o procedimento e um servidor em que possa ser feito o teste me fale que eu faço uns testes aqui! :)

Como eu nunca joguei ragnarok eu nem tenho idéia de como pode funcionar. Mas essas coisas assim complicadas é que são mais legais de fazer!! :rolleyes:

Um último comentário sobre o egoísmo:infelizmente muitos ainda pensam apenas em si... Eu acho que sempre devemos ajudar com conhecimento pois ele se multiplica! Quando dividimos dinheiro, cada um fica com metade. Quando dividimos o conhecimento, não perdemos nada!

Edit:

Eu estive lendo o fórum para entender o que eram esses programas e que formato e dados estão no arquivo.txt.

sobre o programa: entendi que oopenkore é um programa para controlar um bot no ragnarok e o servidor mudou a forma de comunicação, embaralhando os dados. E pelo que percebi também, eu não vou conseguir reproduzir aqui pois precisaria rodar o jogo e esses programas em paralelo.

Assim o que vou poder fazer é esclarecer alguns pontos para que você tenha ao menos por onde começar.

O que me parece é que o primeiro código foi extraído da versão anterior e o segundo foi da versão nova. O .txt são os pacotes ordenados conforme definidos pelo segundo código. No .txt estão o PacketID e o Length do pacote.

Existem duas funções que são chamadas pela função do código: sub_58B360 e sub_58B510. Ambas são parecidas e parecem funcionar de modo semelhante. Pelo código os protótipos das funções podem ser:

void sub_58B360(void *this, PacketMap *pm, PacketEntry *pe);

void sub_58B510(void *this, int PacketID, int Length, int MinLength, int ReplayFactor);
Já a estrutura PacketEntry pode ter sido declarada como:
struct PacketEntry {
    int PacketID;
    int Length;
    int MinLength;
    int ReplayFactor;
};

A principal diferença entre as duas funções é que uma recebe os dados diretamente e a outra através da estrutura. A sub_58B360 também recebe esse PacketMap (que pelo código não dá para saber o que é) e parece ser uma versão mais nova da sub_58B510.

Essas duas funções parecem ser métodos da classe CPacketLengthExMgr (mesma classe da função do código em si) devido a este ponteiro void com o nome de this.

Isso é o que eu consegui descobrir pelo código e o texto, espero que te ajude!

Abraços,

Marcelo Utikawa da Fonseca

Editado por Marcelo Utikawa da Fonseca
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...