[Guide] Хваща хакерите в съръра

hrisiz

Active Member
Joined
Feb 3, 2010
Messages
429
Reaction score
81
Така заглавието не знам дали е най-подходящото но не знаех как да го опиша това което е :D
Ето го и нещото :D
това е SQL JOB които проверява всеки един от героите неговия level на всяка минута и го сверява с level-a му преди една минута и така ако даден играч е вдигнал повече от възможното за една минута то тази програма ще го запише в една таблица и ще видите колко нива е вдигнал за тази една минута :D този JOB не е от най-полезните и ефективни начини за ловене на хакери но понеже разбрах че за да имаш добра зашита трябва да си платиш а аз не искам да плащам :D затова ползвам това :)


да престъпим как да го запишем :)
има 2 стъпки №1 DateBase Update и №2 JOB install
№1 DataBase Update​
1.отваряте Query Analyzer ще ви се отвори прозорче на него избирате Windows authentication a на Sql Server трябва да е "."(или поне при мен е така) след което избирате OK
2. в голямото празно бяло поле въвеждате следния код
Use MuOnline
CREATE TABLE CharLevel
(
CharName char(10) NOT NULL,
CharLevel int,
CharRR int,
CharGR int,
DatA datetime NOT NULL
)
CREATE TABLE Hackers
(
CharName char(10) NOT NULL,
CharLevel1 int,
CharLevel2 int,
CharRR1 int,
CharRR2 int,
CharGR1 int,
CharGr2 int,
DatA datetime NOT NULL
)
ALTER TABLE Character
ADD Nomer bigint
3. Зареждате го като натиснете F5 а след това Ctrl+F5 накрая трябва отдолу да ви изпише "The command(s) completed successfully." ако го видите това значи всичко е наред
№2 JOB install​
1. влизате в Enterprise Manager ->Microsoft SQL Server->SQL Server Group ->(local)(Windows NT)->Managment->SQL Server Agent->JOB
2. натискате десен бутон върху празното поле след което изберете New JOB
3. на Name напишете някакво име пример:Hackers и на Discription напишете същото :)
4.отивате на раздел Steps там избирате NEW и пишете някакво име на Step Name пример:Hacker и на DateBase избирате MuOnline
5.на Command въвеждате следния код
DECLARE @maxchars int
DECLARE @i bigint
DECLARE @next nvarchar(50)
DECLARE @check nvarchar(50)
DECLARE @next1 bigint
DECLARE @Level2 int
DECLARE @Level1 int
DECLARE @res2 int
DECLARE @res1 int
DECLARE @gr2 int
DECLARE @gr1 int
SET @maxchars=(Select Count(Name) From Character)
SET @i=0
While @maxchars>@i
Begin
SET @i=@i+1;
SET @next=(Select TOP 1 Name From Character Where Nomer=0)
SET @Level1=(Select cLevel From Character Where Name=@next)
SET @res1=(Select Resets From Character Where Name=@next)
SET @gr1=(Select GrandResets From Character Where Name=@next)
SET @Level2=(Select CharLevel From CharLevel Where CharName=@next)
SET @res2=(Select CharRR From CharLevel Where CharName=@next)
SET @gr2=(Select CharGR From CharLevel Where CharName=@next)
Update Character Set Nomer=@i Where Name=@next
SET @check=(Select CharName From CharLevel Where CharName=@next)
IF ((@Level1>@level2+70)and (@Level1<=100))
or ((@Level1>@level2+50)and (@Level1>100)and (@Level1<=200))
or ((@Level1>@level2+40)and (@Level1>200) and (@Level1<=300))
or ((@Level1>@level2+30)and (@Level1>300) and (@Level1<=400))
or ((@Level1>@level2+27)and (@Level1>400) and (@Level1<=500))
or ((@Level1>@level2+25)and (@Level1>500) and (@Level1<=600))
or ((@Level1>@level2+23)and (@Level1>600) and (@Level1<=700))
or ((@Level1>@level2+20)and (@Level1>700) and (@Level1<=800))
or ((@Level1>@level2+15)and (@Level1>800) and (@Level1<=900))
or ((@Level1>@level2+10)and (@Level1>900))
or ((@res1>@res2+1) and (@Level1>20))
or (@res1>@res2+1)
or ((@gr1>=@gr2+1) and (@res1>0) )
or (@gr1>@gr2+1)
Begin
Insert Into Hackers (CharName,CharLevel1,CharLevel2,CharRR1,CharRR2,CharGR1,CharGR2,DatA) values(@next,@Level2,@Level1,@res2,@res1,@gr2,@gr1,GetDate())
END
if (@check IS null)
BEGIN
Insert Into CharLevel (CharName,CharLevel,CharRR,CharGR,DatA) values(@next,@Level1,@res1,@gr1,GetDate())
END
Else
Begin
Update CharLevel Set CharName=@next,CharLevel=@Level1,DatA=GetDate(),CharRR=@res1,CharGR=@gr1 Where CharName=@next
END

END
Update Character Set Nomer=0
6.Избирате Parse и ако няма проблем запазвате с Apply и OK
7. Отиваме на раздел Schedules там избирате New Schedule...
8. На Name въвеждате отново някакво име :D за пример отново Hackers :D
9. избирате Recurring и след това цъкате на Change
9. в началото избирате Daily и там нека да си е Every 1 Day
10. Избирате Occurs every 1 Minute(s) Starting at 00:00:00 Ending at : 23:59:59
11. Избирате Start date: да е на днешната и после избирате No end date
12. избирате OK после на другия прозорец отново OK и отново ОК :D след което JOB-a е готов :)

Допълнителни настройки:
1. Този JOB е направен за Normal Server около 250 300 exp за да хваща най-добре намерете това в JOB-a
IF ((@Level1>@level2+70)and (@Level1<=100))
or ((@Level1>@level2+50)and (@Level1>100)and (@Level1<=200))
or ((@Level1>@level2+40)and (@Level1>200) and (@Level1<=300))
or ((@Level1>@level2+30)and (@Level1>300) and (@Level1<=400))
or ((@Level1>@level2+27)and (@Level1>400) and (@Level1<=500))
or ((@Level1>@level2+25)and (@Level1>500) and (@Level1<=600))
or ((@Level1>@level2+23)and (@Level1>600) and (@Level1<=700))
or ((@Level1>@level2+20)and (@Level1>700) and (@Level1<=800))
or ((@Level1>@level2+15)and (@Level1>800) and (@Level1<=900))
or ((@Level1>@level2+10)and (@Level1>900))
or ((@res1>@res2+1) and (@Level1>20))
or (@res1>@res2+1)
or ((@gr1>=@gr2+1) and (@res1>0) )
or (@gr1>@gr2+1)
червените числа са Levels които може да се вдигнат за една минута а с зелено е при кои Нива става въпрос
Пример:
с червено е 70 а с зелено е само 100 тоест ако героят е под 100 level и вдигне 70 levels за една минута то тогава ще го отчете и ще го запише в таблицата Hackers.
Първото и последното има само едно в зелено това е защото при първото е под 100 а при последното е над 900 a при другите са 2 понеже е между 2 Нива примерно
or ((@Level1>@level2+50)and (@Level1>100)and (@Level1<=200))
тук е между 100 и 200 level ако някои вдигне повече от 50 нива ще го засече и ще го запише :)

За да откриете кой е вдигал бързо Levels
1.влизате в Enterprise Manager ->Microsoft SQL Server->SQL Server Group ->(local)(Windows NT)->Datebases->MuOnline->Tables
2.намирате таблица под името Hackers давате десен бутон върху нея отивате на OpenTable->Return all rows и там виждате на първо място името на героя после кои level е отчело първия път след това на трето място е кои level е отчело след една минута и т.н има за GrandResets Resets и накрая пише кога се е случило това.
Скоро ще сложа PHP Modul за да ги следите по лесно :)

Задължително за да работи тази функция трябва да сте пуснали Sql Server Agent

това е тествано на 97d+99i files на DarkMaster Beta 25 и работят на max но мисля че и на други версии няма да има проблем само да спомена че ако нямате GrandReset колона в Character ще имате проблем и затова ви предлагам просто да я сложите понеже иначе ще ви е много по сложно как да я сложите просто въведете този код в SQL Query-то
ALTER TABLE Character
ADD GrandResets int[

Надявам се много подробно да съм описал всичко понеже някои ако иска помощ може и да нямам време да помогна но винаги може да ми пишете на skype: grizismu аз когато мога веднага отговарям :)

Искам да кажа че е полезна но трябва да се следи кои колко е вдигнал за една минута а не да блокирате играчи всеки път като изпише понеже не е изцяло сигурно че е било с хак ами може просто някой да му е помогнал ;)
 
Last edited:
Интересна тема! Браво!
Не се бях замислял за такъв вариант.
 
10-ка за темата :)
 
Имам едно предложение което мисля че също е добро.
Примерно отново за Нормален сървър ако играча хвърли над 20 Box of Kundum за примерно 2 минути да се добавя пак в някаква таблица.
Това ще е с цел примерно ако е дупил боксове.
Естествено като го види Администратор няма да го баннва веднага а ще го проследи дали втори път ще го направи в рамките там на някакви часове.
 
10x
Имам едно предложение което мисля че също е добро.
Примерно отново за Нормален сървър ако играча хвърли над 20 Box of Kundum за примерно 2 минути да се добавя пак в някаква таблица.
Това ще е с цел примерно ако е дупил боксове.
Естествено като го види Администратор няма да го баннва веднага а ще го проследи дали втори път ще го направи в рамките там на някакви часове.
Идеята е добра.Но с тоя 16-тичен код за предметите съм скаран :D, ако някой може да го направи и му се занимава :D.Само ще спомена, че ако го правите с JOB на всяка секунда няма да стане, защото там ще трябва да отчита само когато е метнат BOX.
 
Last edited:
на sql 2008 къде се намира този агент ?
 
на sql 2008 къде се намира този агент ?

съжалявам никога не съм работил с SQL 2008 и не знам :S
 
На 2008 има SQL Agent ако си инсталирал пълната версия "SQL Server 2008 R2 Evaluation".
 
  • Like
Reactions: hrisiz