Jump to content
Fórum Script Brasil
  • 0

Ajuda com script em C++


Mauricio_Lima

Question

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

Edited by Mauricio_Lima
Link to comment
Share on other sites

5 answers to this question

Recommended Posts

  • 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

Edited by Marcelo Utikawa da Fonseca
Link to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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

Edited by Marcelo Utikawa da Fonseca
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152k
    • Total Posts
      651.5k
×
×
  • Create New...