Ir para conteúdo

Featured Replies

Postado

Atualmente estou fazendo um ipchanger em Python e estou com um problema para identificar a versão. Resumidamente o código faz isso:

>>> import ptrace
>>> ptrace.attach(22876)
>>> ptrace.peekdata(22876, 0x8048000 + 0x3320d4)
2336927755350992214
>>> hex(2336927755350992214)
'0x206e6f6973726556'
>>> ptrace.peekdata(22876, 0x8048000 + 0x3320d6)
7216209636618761074
>>> hex(7216209636618761074)
'0x6425206e6f697372'
>>> ptrace.detach(22876, 18)

Usando a biblioteca ptrace 1.0.1 que pode ser encontrada aqui: https://pypi.python.org/pypi/ptrace/1.0.1

 

Bom, indo direto ao problema: Nesse caso acima "0x6425" deveria ser o número da versão antes do ponto. Tipo 10, 9, 8 e etc mas na verdade vem um %d. Onde posso achar a versão do Tibia usando um hexeditor?

 

A propósito, quando este ipchanger estiver pronto ele vai suportar até a versão mais nova lançada, e ainda vai ser open-source. Tem outras pessoas da OTBr fazendo ipchanger também, como o Lordfire que está fazendo em C++ usando ptrace também.

Editado por elwyn (veja o histórico de edições)

Resolvido por Elwyn

Ir para solução
  • Respostas 9
  • Visualizações 487
  • Created
  • Última resposta

Top Posters In This Topic

Postado

que boa ideia cara, eu sinceramente não sei como faz ... frequento uma faculdade federal, faço TSI...

vou pedir pra um professor me dar uma help, quem sabe eles saibam phyton..

ou eles podem fazer um change ip pra gente :)

vou ver o que consigo

Se Ajudei Rep+ pra mim ^^

tumblr_lyd1xtGgx81qf9l6uo1_500.gif

Postado
  • Autor

Se eles souberem sobre Python e não for muito incomodo, pergunta também se eles conhecem alguma lib para process tracing em windows. A que estou usando funciona apenas para linux. E se ele conhece algum método bom de se conseguir o pid de um processo através do nome dele, o atual método que estou usando é baseado no ipchanger do Lordfire em C++, iterando sobre todos os processos procurando aquele que tem o nome Tibia.

Editado por elwyn (veja o histórico de edições)

Postado
  • Autor
  • Solução

Resolvido. A versão correta estava em outra parte da memória. O executável fica em duas partes da memória, creio que um seja o esqueleto e outro seja o corpo atual do programa.

 

08048000-0841f000 r-xp 00000000 08:04 9438516                            /home/gugah/devel/cpp/tibia/tibia-client/860/Tibia
0841f000-08420000 rw-p 003d7000 08:04 9438516                            /home/gugah/devel/cpp/tibia/tibia-client/860/Tibia

 

Em 0841f000-08420000 fica o corpo do programa depois de substituir todos %s e %d se eu estiver correto.

 

Um pequeno programa em python mostrando o funcionamento:

 

import ptrace
import os
import binascii

process = os.popen("pidof -s Tibia")
pid = process.readlines()
pid = int(pid[0])
print pid

ptrace.attach(pid)
base_addr = 0x841f000

data = ptrace.peekdata(pid, base_addr + 0x9213 + 8)
data = hex(data)

data = binascii.unhexlify(data[2:])
data = ''.join(reversed(data))
data = data[:4]
print data

ptrace.detach(pid, 18)

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo