Чудеса инжекта.
Posted: 2004-07-22 16:20:30
Недавно я заметил у себя на шарде, что серийники у игров не меняются. И решил провести ряд тестов. Наверно вы тоже замечали, что серийник чара не изменяется, когда он сделает на себя спел incognito. В некоторых случаях команда info мне высвечивала реальные имена этих игроков, но не всегда.. Вот я и решил немного схитрить. Этот скрипт использует базу с никами и серийниками, и, сверив сериал игрока, умело спрятовшего свой ник магией, с базой, может высветить его истиный ник. Относительно скриптинга, мой скрипт один не из лучших, да и доработать его немного надо, но идею, я думаю, вы уловили
Ниже я привожу свой скрипт и образец файла, базы ников/серийников. Проверяет он по последнему статусу..
Файл начинается с колличества игроков, которые у вас занесены в файл, причем перед колличеством надо поставить cm. И после того как вы занесли эту информацию, со след. строки начинаются сами данные. Информация об игроке (в одну строку пишется) начинается с sn, дальше идет его серийник, потом маленький промежуток и ник игрока. Ниже пример

Code: Select all
sub inkognito()
Var inkLine, inkLineNum, inkSNCur, inkTab, inkLineLast, inkLineCur, inkObjCur
Var inkBase = File("C:\Program Files\Ultima Online\Progs\Injection\inkBase.dat") # путь к файлу
inkBase.Open()
While Not inkBase.Eof()
inkLine = inkBase.ReadLn()
If Mid(inkLine, 0, 2) == "cm" Then
Dim inkBaseS[Val(Mid(inkLine, 2, (StrLen(inkLine) - 2)))]
Dim inkBaseN[Val(Mid(inkLine, 2, (StrLen(inkLine) - 2)))]
inkLineNum = Val(Mid(inkLine, 2, (StrLen(inkLine) - 2)))
inkSNCur = 0
End If
If Mid(inkLine, 0, 2) == "sn" Then
inkTab = 0
inkLineLast = 2
For inkLineCur = 2 To StrLen(inkLine)
If Mid(inkLine, inkLineCur, 1) == " " Then
If inkTab == 0 Then
# UO.Print(Str(inkSNCur))
inkBaseS[inkSNCur] = Mid(inkLine, inkLineLast, inkLineCur - 2)
inkTab = inkTab + 1
inkLineLast = inkLineCur + 1
End If
If inkTab == 1 Then
inkBaseN[inkSNCur] = Mid(inkLine, inkLineLast, inkLineCur - 2)
inkTab = inkTab + 1
inkLineLast = inkLineCur + 1
End If
End If
Next
inkSNCur = inkSNCur + 1
End If
Wend
inkBase.Close()
UO.Print("Starting search")
For inkObjCur = 0 To inkLineNum - 1
If (inkBaseS[inkObjCur]) == (UO.GetSerial("laststatus")) Then
UO.Print("-------------")
UO.Print(inkBaseN[inkObjCur])
# UO.Print(inkBaseS[inkObjCur])
UO.Print("-------------")
End If
Next
end sub
Файл начинается с колличества игроков, которые у вас занесены в файл, причем перед колличеством надо поставить cm. И после того как вы занесли эту информацию, со след. строки начинаются сами данные. Информация об игроке (в одну строку пишется) начинается с sn, дальше идет его серийник, потом маленький промежуток и ник игрока. Ниже пример
Code: Select all
cm5
sn0x00035907 Red Baron
sn0x00036314 imperator
sn0x0000A79E Morphyz
sn0x0001D267 TURAL
sn0x00011935 Angel