Domanda [Fix]Come fixare l'Exploit Cambia nome dal database

Stato
Discussione chiusa ad ulteriori risposte.

Doctor85

Utente Silver
7 Dicembre 2012
113
6
8
67
Cosa fa questo script?. Quando qualcosa cambia all'interno del TCHARTABLE entra in scena questo script che controlla se il nome è quello del bug, se è lui lo cambia, se non lo è, no.

Scarica la tabella e inseriscila in TGAME_GSP.
TCHARTABLE_BACK

PS: ("Verifica se il Currenty identity value del TCHARTABLE_BACK è identico a quello del TCHARTABLE,").

Adesso apri il TCreateChar in TGAME_GSP e metti questo codice dopo "COMMIT TRAN TCREATECHAR".

Codice:
INSERT INTO TCHARTABLE_BACK
    (
        dwUserID,
        bSlot,
        szNAME,
        bRace,
        bCountry,
        bOriCountry,
        bSex,
        bRealSex,
        bClass,
        bLevel,
        bHair,
        bFace,
        bBody,
        bPants,
        bHand,
        bFoot,
        dwEXP,
        dwHP,
        dwMP,
        wSkillPoint,
        dwGold,
        dwSilver,
        dwCooper,
        wMapID,
        wSpawnID,
        wTemptedMon,
        bAftermath,
        fPosX,
        fPosY,
        fPosZ,
        wDIR
    ) 
    VALUES
    (
        @dwUserID,    -- dwUserID
        @bSlot,        -- bSlot
        @szNAME,    -- szNAME
        @bRace,    -- bRace
        @bCountry,    -- bCountry
        @bOriCountry,
        @bSex,        -- bSex
        @bRealSex,    -- bRealSex
        @bClass,    -- bClass
        @bLevel,    -- bLevel
        @bHair,        -- bHair
        @bFace,
        @bBody,
        @bPants,
        @bHand,
        @bFoot,
        @dwExp,
        @dwHP,
        @dwMP,
        @wSkillPoint,
        0,
        0,
        0,
        2010,
        @wSpawnID,
        0,
        0,
        @fPosX,
        @fPosY,
        @fPosZ,
        @wDIR
    )



Adesso crea una nuova procedura ed inserisci questo.
PS: ricordati di cambiare questo ("SET @fakename = 'put_here_the_fake_name'"), devi inserire il nome che compare quando si crea il bug.
Codice:
CREATE PROCEDURE [dbo].[PRTName]
AS
BEGIN
DECLARE @name1 VARCHAR(50)
DECLARE @name2 VARCHAR(50)
DECLARE @szNAME VARCHAR(50)
DECLARE @szNAME2 VARCHAR(50)
DECLARE @dwCharID INT
DECLARE @dwUserID INT
DECLARE @fakename VARCHAR(50)

SET @fakename =[COLOR="DarkRed"] 'put_here_the_fake_name'[/COLOR]

DECLARE bGroup_Cursor CURSOR FOR SELECT dwUserID,dwCharID,szNAME FROM TCHARTABLE
OPEN bGroup_Cursor
FETCH NEXT FROM bGroup_Cursor INTO @dwUserID,@dwCharID,@szNAME
WHILE @@FETCH_STATUS = 0
   BEGIN    
          SELECT @szNAME2 = szNAME FROM TCHARTABLE_BACK WHERE dwCharID = @dwCharID  
            IF(@szNAME = @fakename)
    BEGIN
UPDATE TCHARTABLE SET szNAME = @szNAME2 WHERE dwCharID = @dwCharID 
    END
            FETCH NEXT FROM bGroup_Cursor INTO @dwUserID,@dwCharID,@szNAME
END
CLOSE bGroup_Cursor
DEALLOCATE bGroup_Cursor

END

Adesso vai su TCHARTABLE --> design table, premi su trigger, e fai come ho fatto io nello screen.

1jte.png
 
  • Mi piace
Reazioni: Aldo_97
Stato
Discussione chiusa ad ulteriori risposte.