Raised This Month: $ Target: $400
 0% 

[PLUGIN] Empêcher quelqu'un de faire planter son serveur


  
 
 
Thread Tools Display Modes
Arkshine
AMX Mod X Plugin Approver
Join Date: Oct 2005
Old 01-01-2012 , 19:36   Re: [PLUGIN] Empêcher quelqu'un de faire planter son serveur
#11

Ah ben oui, effectivement, ça marche déjà mieux.

Ca plante dans CBasePlayer::AutoBuy() et au moment d'appeler CBasePlayer::ParseAutoBuyString() apparemment, bien que je ne discerne pas encore exactement la cause.
EDIT: Ah ben, avant Parse, CBasePlayer::PrioritizeAutoBuyString() est appelé et si je lis bien les premières lignes de codes, ça copie chaque string délimité avec un espace, dans un string de 32, mias voilà, ça ne vérifie même pas que le string découpé peut être > 32. Du coup ça doit passer un pointeur invalide et ça doit se chier dessus quand il faut pousser l'argument pour l'appel de la fonction Parse. Pourtant dans celle-ci, ça semble vérifier que tu ne dépasses pas 32. Bizarre qu'ils aient pu louper ça.
__________________

Last edited by Arkshine; 01-01-2012 at 19:46.
Arkshine is offline
PsYChOPaTiQuE
Veteran Member
Join Date: Jan 2009
Location: Paris
Old 01-01-2012 , 19:39   Re: [PLUGIN] Empêcher quelqu'un de faire planter son serveur
#12

En recherchant sur google on peut voir pas mal de sites russes où la commande est mentionnée, la raison y est peut être aussi.
Mais je doute de voir venir une update de la part de valve corrigeant ce problème^^
__________________
PsYChOPaTiQuE is offline
Arkshine
AMX Mod X Plugin Approver
Join Date: Oct 2005
Old 01-01-2012 , 19:48   Re: [PLUGIN] Empêcher quelqu'un de faire planter son serveur
#13

Valve a déjà corrigé pas mal de bugs récemment avec la hlbeta. Suffit d'envoyer un email à Alfred. Les exploits de ce genre sont en général pris en compte, surtout que c'est facile à réparer.
__________________
Arkshine is offline
Kidev
Veteran Member
Join Date: Jun 2010
Location: France
Old 01-02-2012 , 06:40   Re: [PLUGIN] Empêcher quelqu'un de faire planter son serveur
#14

Les gens ont vraiment que ça faire... Minable.
Moi des ****** fausaient crash un de mes serveur, mais avec un fix (qui a été unapproved) il ne crash plus.

Sinon Ark c'est ce plugin dont il parlait je crois: https://forums.alliedmods.net/showthread.php?t=163883

EDIT: J'ai lu vos posts sur le forum. Affligeant. Pas un pour rattraper l'autre. Vous vous rendez compte que c'est un jeu à la base?
__________________

Last edited by Kidev; 01-02-2012 at 06:51.
Kidev is offline
Arkshine
AMX Mod X Plugin Approver
Join Date: Oct 2005
Old 01-02-2012 , 07:02   Re: [PLUGIN] Empêcher quelqu'un de faire planter son serveur
#15

En fait, je viens de tester, mais ça été corrigé dans la hlbeta. (si quelqu'un peut confirmer).

Mais les changements de CS n'ont pas encore déployés sur la version stable.
__________________
Arkshine is offline
ConnorMcLeod
Veteran Member
Join Date: Jul 2006
Location: France (95)
Old 01-02-2012 , 13:23   Re: [PLUGIN] Empêcher quelqu'un de faire planter son serveur
#16

Ouais normalement c'est corrigé dans la beta, c'est entre autre pour ça que le plugin est pas approuvé, le plugin bloque complètement la commande je crois.

J'utilise ça moi mais pas sûr que ça parse bien, je me retrouvais systématiquement avec un guillemet qui restait en tout début des args.

PHP Code:
#include <amxmodx>
/*
#define MAX_AUTOBUY_ITEM_LENGTH 11
#define MAX_REBUY_ITEM_LENGTH 15
*/
enum {
    
AutoBuy,
    
Rebuy
}

new 
Trie:g_tAutoBuy
new Trie:g_tReBuy

public plugin_init()
{
    
register_plugin("Anti Auto/Rebuy Crash","0.0.4","ConnorMcLeod")

    
g_tAutoBuy TrieCreate()
    
g_tReBuy TrieCreate()

    new 
i

    
new szAutoBuy[][] = {
        
"galil""defender""ak47""cv47""scout"
        
"sg552""krieg552""awp""magnum""g3sg1"
        
"d3au1""famas""clarion""m4a1""aug"
        
"bullpup""sg550""krieg550""usp""km45"
        
"p228""228compact""deagle""nighthawk""elites"
        
"fn57""fiveseven""m3""12gauge""xm1014"
        
"autoshotgun""mac10""tmp""mp""mp5"
        
"smg""ump45""p90""c90""m249",
        
"primammo""secammo""vest""vesthelm""flash",
        
"hegren""sgren""nvgs""defuser""shield"
    
}
    for(
i=0i<sizeof(szAutoBuy); i++)
    {
        
strtolower(szAutoBuy[i])
        
TrieSetCell(g_tAutoBuyszAutoBuy[i], 1)
    }

    new 
szReBuy[][] = {
        
"PrimaryWeapon""PrimaryAmmo""SecondaryWeapon""SecondaryAmmo""Defuser",
        
"Armor""HEGrenade""Flashbang""SmokeGrenade""NightVision"
    
}
    for(
i=0i<sizeof(szReBuy); i++)
    {
        
strtolower(szReBuy[i])
        
TrieSetCell(g_tReBuyszReBuy[i], 1)
    }

    
register_clcmd("cl_setautobuy""CheckStringLength"AutoBuy)
    
register_clcmd("cl_setrebuy""CheckStringLength"Rebuy)
}

public 
CheckStringLength(idiType)
{
    static 
szArgs[256], szItem[32]
    
read_args(szArgscharsmax(szArgs))

    
remove_quotes(szArgs)
    
trim(szArgs)

    new 
Trie:tCheck iType g_tReBuy g_tAutoBuy
    
while( strlen(szArgs) && strtok(szArgsszItemcharsmax(szItem),szArgscharsmax(szArgs), ' ') )
    {
        if( 
szItem[0] == '^"' )
        {
            if(! 
IsArgValid(idszItem[1], tCheck) )
            {
                return 
PLUGIN_HANDLED
            
}
        }
        else if( !
IsArgValid(idszItemtCheck) )
        {
            return 
PLUGIN_HANDLED
        
}
    }
    if( 
szArgs[0] )
    {
        if( !
IsArgValid(idszArgstCheck) )
        {
            return 
PLUGIN_HANDLED
        
}
    }
    return 
PLUGIN_CONTINUE
}

IsArgValid(idszArg[], Trie:trie)
{
    
strtolower(szArg)
    if( !
TrieKeyExists(trieszArg) )
    {
        new 
szAuth[32], szName[32], szCmd[32], szArgs[256]
        
read_argv(0szCmdcharsmax(szCmd))
        
get_user_name(idszNamecharsmax(szName))
        
get_user_authid(idszAuthcharsmax(szAuth))
        
read_args(szArgscharsmax(szArgs))
        
remove_quotes(szArgs)
        
        
log_to_file("AutoBuy.log""<%d><%s><%s><%s><%s><%s>"idszNameszAuthszCmdszArgszArgs)
        return 
0
    
}
    return 
1

Attached Files
File Type: sma Get Plugin or Get Source (autobuy_fix.sma - 509 views - 2.8 KB)
__________________
- tired and retired -

- my plugins -

Last edited by ConnorMcLeod; 11-08-2012 at 15:49.
ConnorMcLeod is offline
rerremi
Junior Member
Join Date: Jun 2009
Old 02-28-2012 , 16:09   Re: [PLUGIN] Empêcher quelqu'un de faire planter son serveur
#17

Coucou tout le monde, ça me fait toujours autant plaisir de revenir ici et voir qu'il y a toujours ConnorMcLeod et Arkshine d'actif .

Cet exploit (setautobuy) existe depuis 2010. J'aimerais bien protéger mon serveur de tout crash (setautobuy, dlfile et d'autre s'il en existe que je ne connais pas) mais sans devoir installé amx car c'est un serveur de match.

J'ai trouvé un code pour générer le fichier md.dll ou cs_i386.so de CS et ainsi modifier les paramètres du serveur mais je n'arrive pas à corriger l'erreur :S.

Je peux partager le code source qui n'est pas de moi si vous le souhaitez. A moins qu'un simple "-beta hlbeta" corrigera tout ?

Et bravo Arkshine pour cssdk c'est vraiment un excellent projet !

Last edited by rerremi; 02-28-2012 at 16:11.
rerremi is offline
Devil259
Veteran Member
Join Date: Dec 2009
Location: France (59)
Old 02-28-2012 , 16:15   Re: [PLUGIN] Empêcher quelqu'un de faire planter son serveur
#18

Quote:
Originally Posted by rerremi View Post
A moins qu'un simple "-beta hlbeta" corrigera tout ?
Pourquoi ne pas tester ?
__________________
You can do anything you set your mind to, man.

Devil259 is offline
rerremi
Junior Member
Join Date: Jun 2009
Old 02-28-2012 , 16:27   Re: [PLUGIN] Empêcher quelqu'un de faire planter son serveur
#19

Quote:
Originally Posted by Devil259 View Post
Pourquoi ne pas tester ?
Comment tester quand on a pas les exploits ;) ? Moi j'ai l'exploit du setautobuy uniquement, les autres comme dlfile je ne les connais pas. Voilà pourquoi je demande
rerremi is offline
Devil259
Veteran Member
Join Date: Dec 2009
Location: France (59)
Old 02-28-2012 , 16:34   Re: [PLUGIN] Empêcher quelqu'un de faire planter son serveur
#20

dlfile "halflife.wad"
__________________
You can do anything you set your mind to, man.

Devil259 is offline
 



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 21:34.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode