SpooflessDialogs - Anti-spoof de Diбlogos (Espйcie de Anti-Cheat) -
Nixtren - 24.08.2015
SpooflessDialogs
Aqui estб um include que inicialmente tinha feito para uso pessoal, e posso dizer tambйm que й o meu primeiro include. A funзгo dele й evitar que cheaters faзam spoof de dialogs.
O que й dialog spoofing?
Dialog spoofing й o nome dado ao ato de responder a diбlogos que o servidor nгo enviou.
Exemplo de um caso de dialog spoofing
Imagine que vocк tem um diбlogo (ID 30) com a mensagem "Pressione OK para receber $100 gratuitamente", e vocк sу mostra esse diбlogo uma vez ao player (por exemplo, durante o registo), e nunca mais o mostra. Um cheater poderia responder a esse diбlogo quantas vezes ele desejasse, vejamos aqui um "mapa" do que aconteceria:
- Cheater recebe diбlogo ID 30 (durante o registo)
- Cheater responde ao diбlogo ID 30 (durante o registo)
- Cheater responde ao diбlogo ID 30
- Cheater responde ao diбlogo ID 30
- Cheater responde ao diбlogo ID 30
Consequкncia? No final o cheater teria $400 gratuitamente, graзas ao "dialog spoofing".
Nгo й normal alguйm praticar dialog spoofing, pois sгo raras as vezes que alguйm consegue tomar vantagem disso, depende muito do seu script. No entanto, й bem possнvel isso acontecer.
Esta include funciona ao fazer hook da callback OnDialogResponse e da funзгo ShowPlayerDialog. Ele armazena numa variбvel o ID que vocк coloca em ShowPlayerDialog, e depois compara-o em OnDialogResponse.
Callbacks opcionais (para colocar no seu GameMode)
Код:
public OnDialogSpoof(playerid, dialogid, SpooflessDialogs_dialogid)
{
// O que vocк quer fazer com o cheater? Banir? Kickar?
return 0; // Para evitar que o spoofing tenha sucesso.
}
Eu primeiramente ia lanзar isto na бrea inglesa, mas decidi primeiro lanзar aqui para obter algum feedback antes de avanзar para o resto do mundo.
Vocк precisa de ter os includes
y_hooks (pode extraнr tudo para a pasta dos includes) e
nhooks para este include funcionar!
No seu GameMode:
Код:
#include <YSI\y_hooks>
#include <nhooks>
#include <SpooflessDialogs> // Meter esta linha antes de qualquer include que faзa uso de diбlogos
Em todos os FilterScripts que faзam uso de diбlogos:
Код:
#define FILTERSCRIPT
#include <YSI\y_hooks>
#include <nhooks>
#include <SpooflessDialogs> // Meter esta linha antes de qualquer include que faзa uso de diбlogos
Gostaram? Alguma sugestгo?
Re: SpooflessDialogs - Anti-spoof de Diбlogos (Espйcie de Anti-Cheat) -
Breno Da Silva Pereira - 25.08.2015
Qual й o nome do hack que explora isso? Nunca li nada em fуrum russo e americano de hack pra samp que falasse algo sobre isso.
Re: SpooflessDialogs - Anti-spoof de Diбlogos (Espйcie de Anti-Cheat) -
Locky_ - 25.08.2015
Jб vi cheating com opзгo assim. Muito bom, merece +rep pela iniciativa.
Re: SpooflessDialogs - Anti-spoof de Diбlogos (Espйcie de Anti-Cheat) -
Nixtren - 25.08.2015
Quote:
Originally Posted by Breno Da Silva Pereira
Qual й o nome do hack que explora isso? Nunca li nada em fуrum russo e americano de hack pra samp que falasse algo sobre isso.
|
Jб vi um cheat para esconder diбlogos (vocк recebe, clica numa tecla e o diбlogo й escondido) , e mais tarde clica nessa tecla e o diбlogo й mostrado novamente. Isto pode ser ъtil para o cheater nesta situaзгo:
/dardinheiro100 - O comando faz a verificaзгo se o player tem $100 na mгo, e depois mostra um dialog a perguntar se temos a certeza que queremos dar $100 a um player (no meu exemplo, vou usar o ID 2).
Vocк tem $100 na mгo, e o diбlogo pergunta "Quer dar $100 para o ID 2?". Vocк esconde esse diбlogo, e executa o comando novamente, assim fica com 2 diбlogos "Quer dar $100 para o ID 2?" abertos (um deles vocк escondeu). Vocк clica "Sim" e dб $100 para o ID 2, e a seguir vocк recupera o diбlogo que tinha escondido anteriormente e clica "Sim". Resultado, ID 2 ganha $200, e vocк fica com -$100. O problema aqui й que vocк pode fazer a verificaзгo no comando /dardinheiro100 (verificar se o player tem dinheiro para dar), mas nгo faz a verificaзгo em OnDialogResponse. Com este include vocк estб salvo contra essas tйcnicas maliciosas
Quote:
Originally Posted by NicK_
Jб vi cheating com opзгo assim. Muito bom, merece +rep pela iniciativa.
|
Valeu
Re: SpooflessDialogs - Anti-spoof de Diбlogos (Espйcie de Anti-Cheat) -
Sky™ - 25.08.2015
Bem organizado, na verdade eu jб tinha visto este tal mйtodo hack porйm nгo imaginava que daria para fazer grandes coisas como a citada na postagem ..
rep+4
Re: SpooflessDialogs - Anti-spoof de Diбlogos (Espйcie de Anti-Cheat) -
ForT - 25.08.2015
Include muito ъtil, mбs acredito que muitos nгo vгo usar, pois precisa das includes
y_hooks, nhooks. Como o code й pequeno e simples, vocк poderia usar o mйtodo hook padrгo.
+3 Rep
Re: SpooflessDialogs - Anti-spoof de Diбlogos (Espйcie de Anti-Cheat) -
n0minal - 25.08.2015
Quote:
Originally Posted by ForT
Include muito ъtil, mбs acredito que muitos nгo vгo usar, pois precisa das includes y_hooks, nhooks. Como o code й pequeno e simples, vocк poderia usar o mйtodo hook padrгo.
+3 Rep
|
Exatamente, usar um hook padrгo seria o ideal, parabйns todavia
Re: SpooflessDialogs - Anti-spoof de Diбlogos (Espйcie de Anti-Cheat) -
Nixtren - 25.08.2015
Obrigado a todos
Em relaзгo ao hook, eu inicialmente ia usar o hook padrгo, mas depois nгo me entendi com aquilo e usei y_hooks/nhooks. Acho que sei como fazer hook ao OnDialogResponse, mas nгo sei como se faz no ShowPlayerDialog. Faзo da mesma maneira exata?
E soube agora que o dialog spoofing foi corrigido numa versгo do SA-MP*, tornando este include desnecessбrio... Bem, o que conta й a intenзгo :/
* 0.3e RC6. Ainda nгo tenho a certeza se previne spoofing ou apenas manda um warning na consola.
Edit: Afinal o servidor SA-MP ainda se encontra vulnerбvel, apenas manda um warning para a consola.
Re: SpooflessDialogs - Anti-spoof de Diбlogos (Espйcie de Anti-Cheat) -
Holl - 26.08.2015
Quote:
Originally Posted by Nixtren
Jб vi um cheat para esconder diбlogos (vocк recebe, clica numa tecla e o diбlogo й escondido) , e mais tarde clica nessa tecla e o diбlogo й mostrado novamente. Isto pode ser ъtil para o cheater nesta situaзгo:
/dardinheiro100 - O comando faz a verificaзгo se o player tem $100 na mгo, e depois mostra um dialog a perguntar se temos a certeza que queremos dar $100 a um player (no meu exemplo, vou usar o ID 2).
Vocк tem $100 na mгo, e o diбlogo pergunta "Quer dar $100 para o ID 2?". Vocк esconde esse diбlogo, e executa o comando novamente, assim fica com 2 diбlogos "Quer dar $100 para o ID 2?" abertos (um deles vocк escondeu). Vocк clica "Sim" e dб $100 para o ID 2, e a seguir vocк recupera o diбlogo que tinha escondido anteriormente e clica "Sim". Resultado, ID 2 ganha $200, e vocк fica com -$100. O problema aqui й que vocк pode fazer a verificaзгo no comando /dardinheiro100 (verificar se o player tem dinheiro para dar), mas nгo faz a verificaзгo em OnDialogResponse. Com este include vocк estб salvo contra essas tйcnicas maliciosas
Valeu ![Smiley](images/smilies/smile.png)
|
Verificaзгo no DialogResponse n resolveria ? nesse caso citado por tu ?
Re: SpooflessDialogs - Anti-spoof de Diбlogos (Espйcie de Anti-Cheat) -
Nixtren - 26.08.2015
Quote:
Originally Posted by Holl
Verificaзгo no DialogResponse n resolveria ? nesse caso citado por tu ?
|
Resolveria, mas muitos scripters nгo fazem essa verificaзгo, pois nгo tкm em conta que o diбlogo pode ser
spoofed. Este include faz a defesa sem os scripters terem de se preocupar com essas verificaзхes