SA-MP Forums Archive
[Tutorial] Encontrando os IDs de RPCs, com IDA Pro. - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+----- Forum: Lançamentos/Releases (https://sampforum.blast.hk/forumdisplay.php?fid=56)
+----- Thread: [Tutorial] Encontrando os IDs de RPCs, com IDA Pro. (/showthread.php?tid=648999)



Encontrando os IDs de RPCs, com IDA Pro. - Jelly23 - 01.02.2018

• Encontrando os IDs de RPCs, com IDA Pro.
IDA й um disassembler e debugger, certifique-se de que vocк o tem instalado, pois ele serб utilizado para conseguir os IDs das chamadas de procedimento remoto (RPC) de funзхes nativas.

Deve-se levar em consideraзгo que algumas funзхes nгo tem RPCs. Um exemplo й SetPlayerVirtualWorld, que nгo manda nenhum RPC ao jogador, apenas muda o valor de dwVirtualWorld nas estruturas internas do servidor (em CPlayerPool). O servidor verifica se o mundo virtual do jogador й o mesmo que outros jogadores ou veнculos, caso contrбrio o servidor manda RPCs como WorldVehicleRemove e WorldPlayerRemove para o cliente, removendo veнculos e jogadores de mundos virtuais diferentes.
• Comeзando com o IDA Pro.
-Ao iniciar o IDA pro, vocк verб as seguintes opзхes:



-Clique em "Go - Work on your own". Apуs, clique na aba "file" e abra seu samp-server.exe, entгo vocк verб o seguinte:



-Apenas clique em "Ok", e logo vocк verб o seguinte:



-Entгo, clique com o botгo direito do mouse e selecione "Text view". Lуgo, vocк verб o seguinte:

• Encontrando RPCs que vem do servidor ao cliente - Outcoming RPCs.
Se vocк chegou aqui, vamos nos certificar que vocк jб seguiu os passos em "Comeзando com o IDA Pro.".

-Aperte SHIFT+F12 para mostrar "Strings window":



-Apуs ter aberto a janela de strings (Strings window), pressione ALT+T para procurar uma string. Nesse caso vamos procurar por SetPlayerFightingStyle:



-Ao clicar em "OK", vocк jб terб seu resultado:



-Clique duas vezes no resultado e vocк verб o seguinte:



-Podemos ver que as referкncias de dados estгo marcadas com a sequкncia "DATA XREF". Vocк vai clicar em 004C90C8, marcado em amarelo. Se vocк estivesse procurando por SetPlayerVelocity, vocк clicaria em 004C908D, e assim vai com outras funзхes nativas. Apуs clicar, vocк verб o seguinte:



-Como vocк pode ver, existem vбrios subs_ (comeзos de sub-rotinas) em baixo de cada nome de funзгo. Cada um pertence a funзгo que estб acima. Nesse caso, clicaremos em sub_47F110, que pertence a SetPlayerFightingStyle. Apуs clicar, vamos ver o seguinte:



-Ao chegarmos a esse ponto, vamos pressionar F5 para gerar pseudo-cуdigo:



-O id de um RPC й Byte, ele estarб sempre dentro de uma sub-rotina, sendo unk_ ou um ъnico caractere como "J". Repetindo novamente, o RPC estarб em uma sub-rotina, NUNCA serб o valor de uma vбriavel no pseudo-cуdigo (ex: v9 = unk_4F5FB8). Na foto acima jб podemos ver aquilo que procuramos:



-Ai estarб nosso RPC, mas vocк deve se perguntar por que ele aparece em duas sub-rotinas. Isso, por que o RPC й mandado nгo sу para vocк, mas para todos os jogadores com o seu ID no primeiro parвmetro do BitStream, assim o seu estнlo de luta tambйm mudarб para os outros jogadores.

-Pode ser que vocк nгo encontre o RPC de primeira ao gerar o pseudo-cуdigo, mas й sу clicar nas outras sob-rotinas no pseudo-cуdigo, como "sub_44D8A0" e procurar, e ele estarб lб .

-Porйm, nгo acaba ai nгo. Vocк vai clicar duas vezes no RPC, e vocк verб o seguinte:



-Agora, й sу clicar na aba View > Open subviews > Hex dump, e entгo, vocк verб o seguinte:



-O nъmero hexadecimal 0x59 (89) й o ID do RPC da funзгo SetPlayerFightingStyle .
• Encontrando RPCs que vem do cliente ao servidor - Incoming RPCs.
-Encontrar RPCs que vem do cliente ao servidor tambйm nгo й nada complicado. Vamos usar OnPlayerRequestClass como exemplo. Em strings window, pressione ALT + T e procure "OnPlayerRequestClass", clique no resultado e vocк verб o seguinte:



-Entгo, vamos clicar na sub-rotina que estб abaixo da sequкncia "DATA XREF", que nesse caso й sub_46DD30+45o, e vamos ver o seguinte:



-Podemos ver a sequкncia "CODE XREF" que й uma referкncia de cуdigo, diferente da sequкncia "DATA XREF" que й uma referкncia de dados. Vamos clicar na sub-rotina que vem apуs a referкncia de cуdigo (CODE XREF), e entгo vamos ver o seguinte:



-Podemos ver outra referкncia de cуdigo e uma sub-rotina apуs ela, vamos clicar nesta sub-rotina, e apуs, gerar o pseudo-cуdigo (F5):

https://i.imgur.com/SzEC7xy.png //Obs: Jб passei do limite de imagens, nгo posso utilizar o tag IMG

-O id de um RPC й Byte, ele estarб sempre dentro de uma sub-rotina, sendo unk_ ou um ъnico caractere como "Y". Repetindo novamente, o RPC estarб em uma sub-rotina, NUNCA serб o valor de uma vбriavel no pseudo-cуdigo (ex: v9 = unk_4F5FB8). Na foto acima jб podemos ver aquilo que procuramos: unk_4B523C.

-Clique duplo em unk_4B523C, e agora й sу clicar na aba View > Open subviews > Hex dump, e entгo, vocк terб o ID do RPC, que й 0x80 (128).



Re: Encontrando os IDs de RPCs, com IDA Pro. - hotspicytaco - 01.02.2018

Obrigado cavalheiro! + REP


Re: Encontrando os IDs de RPCs, com IDA Pro. - RIDE2DAY - 01.02.2018

Um muito bom tutorial.


Re: Encontrando os IDs de RPCs, com IDA Pro. - Marllun - 01.02.2018

Muito bom


Re: Encontrando os IDs de RPCs, com IDA Pro. - Gguiz - 01.02.2018

Um tutorial excepcional, meu amigo. Sem palavras!


Re: Encontrando os IDs de RPCs, com IDA Pro. - renatog - 01.02.2018

Sensacional Jelly. Acho importante deixar o tutorial do kurta999 (https://sampforum.blast.hk/showthread.php?tid=599574) sobre atualizar plugins que usam memory hacking, o procedimento й bem parecido com o explicado aqui, mas com alteraзхes no final.


Re: Encontrando os IDs de RPCs, com IDA Pro. - Dayvison_ - 01.02.2018

Quote:
Originally Posted by renatog
Посмотреть сообщение
Sensacional Jelly. Acho importante deixar o tutorial do kurta999 (https://sampforum.blast.hk/showthread.php?tid=599574) sobre atualizar plugins que usam memory hacking, o procedimento й bem parecido com o explicado aqui, mas com alteraзхes no final.
Aqui ela mantйm o foco apenas no ID de RPCs, no do kurta ele explica sobre os endereзos de memуria, e sim atй a parte do pseudocуdigo o tutorial й o mesmo

@Topic Muito bem Jelly, mita dos raknet.


Re: Encontrando os IDs de RPCs, com IDA Pro. - RodrigoMSR - 01.02.2018

Sensacional


Re: Encontrando os IDs de RPCs, com IDA Pro. - IlanZ - 01.02.2018

Bom tutorial, Jelly23.


Re: Encontrando os IDs de RPCs, com IDA Pro. - Jelly23 - 10.02.2018

Conteъdo atualizado. Agora tambйm explicando como conseguir IDs de RPCs que vem do cliente ao servidor.