Postado Outubro 1, 2014 10 anos 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 Outubro 1, 2014 10 anos por elwyn (veja o histórico de edições)
Postado Outubro 1, 2014 10 anos 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
Postado Outubro 1, 2014 10 anos 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 Outubro 1, 2014 10 anos por elwyn (veja o histórico de edições)
Postado Outubro 1, 2014 10 anos 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.