Compare it to the one posted at PH and you'll see the difference...
Header
Code:
#NoTrayIcon #RequireAdmin #region #AutoIt3Wrapper_icon=F:UsersAdministratorDocumentsfavicon.ico #AutoIt3Wrapper_outfile=..TBotSro1106TServer1106b.exe #AutoIt3Wrapper_compression=4 #AutoIt3Wrapper_useansi=y #endregion
Source
Code:
If _SINGLETON("tservertserver", 1) = 0 Then
Exit
EndIf
Opt("TrayMenuMode", 1)
HotKeySet("{F8}", "run_tbot")
($)CONNECTEDSOCKET = -1
($)PACKETS = "6B4C8194B597BA3306408D1D59EC103E36ED5DD5C5231CDDB2D85E6F621EB540F6C210AD7EDABE887B0EED4B914A3A52627DA737AD1A8D2E313A2CCC08FF8DD9963966949A17E939030F1CE2BEE6F043012C6BC4D397EC0CB82001544B3B8D53C759B873A00304982F599D738B90BE693221CAACBFD11AEF20214C71EFD49C94"
($)VAR_1 = RegRead("HKEY_LOCAL_MACHINESOFTWARE 218studioSilkRoadGamePath", "GamePath")
($)VAR_2 = RegRead("HKEY_LOCAL_MACHINESOFTWARE 218studioSilkRoadUser", "User")
($)START = 0
($)HIDE = 0
Local ($)SOCKET
Local ($)TRAY_MSG
Global ($)TBOT_ID = "COGITATOR"
Global ($)TBOT_ADD
Global ($)PROGRESS
Global ($)PATCHER
Global ($)SLOW
Global ($)NORMAL
Global ($)FAST
Global ($)SEARCH = 0
Global ($)PATCH = 0
($)STATUSITEM = TrayCreateItem("Show")
($)ABOUTITEM = TrayCreateItem("About")
($)EXITITEM = TrayCreateItem("Exit")
If FileExists("TbotSro.exe") = 0 Then
MsgBox(16, "Error", "Cannot locate TbotSro.exe!" & @CRLF & "Place this file in your Tbot Folder.")
Exit
EndIf
($)MAIN = GUICreate("TServer", 200, 70, @DesktopWidth / 2 - 100, 5)
GUISetState()
GUICtrlCreateGroup("", 0, 0, 200, 35)
GUICtrlCreateLabel("SRO Username:", 5, 13, 100, 20)
GUICtrlSetFont(-1, 8.5, 800)
($)USERNAME = GUICtrlCreateInput("", 100, 10, 96, 20)
Global ($)SRO_ID = StringUpper(GUICtrlRead(($)USERNAME))
GUICtrlCreateGroup("", 0, 30, 200, 35)
($)LOAD_SRO = GUICtrlCreateButton("Load SRO Client", 5, 40, 93, 20)
($)LAUNCH_TBOT = GUICtrlCreateButton("Run Tbot [F8]", 100, 40, 95, 20)
If ($)VAR_1 = "" Then
GUICtrlSetState(($)LAUNCH_TBOT, ($)GUI_DISABLE)
Else
GUICtrlSetState(($)LAUNCH_TBOT, ($)GUI_ENABLE)
EndIf
If ($)VAR_2 <> "" Then
GUICtrlSetData(($)USERNAME, ($)VAR_2)
EndIf
While 1
($)DATA = TCPRecv(($)CONNECTEDSOCKET, 512)
($)GUI_MSG = GUIGetMsg()
($)TRAY_MSG = TrayGetMsg()
Select
Case ($)GUI_MSG = ($)GUI_EVENT_MINIMIZE
TraySetState()
GUISetState(@SW_HIDE)
Case ($)GUI_MSG = ($)GUI_EVENT_CLOSE
Exit
Case ($)TRAY_MSG = ($)EXITITEM
Exit
Case ($)TRAY_MSG = ($)ABOUTITEM
MsgBox(0, "TServer", "TServer by: MandarK")
Case ($)TRAY_MSG = ($)STATUSITEM
TraySetState(2)
GUISetState(@SW_SHOW)
GUISetState(@SW_RESTORE)
WinActivate("TServer")
Case ($)GUI_MSG = ($)LOAD_SRO
($)SRO_DIR = FileOpenDialog("sro_client.exe", @WorkingDir, "(sro_client.exe)")
If @error Then
ContinueLoop
Else
RegWrite("HKEY_LOCAL_MACHINESOFTWARE 218studioSilkRoadGamePath", "GamePath", "REG_EXPAND_SZ", ($)SRO_DIR)
MsgBox(0, "TServer", "Succesfully loaded")
GUICtrlSetState(($)LAUNCH_TBOT, ($)GUI_ENABLE)
EndIf
Case ($)GUI_MSG = ($)LAUNCH_TBOT
RUN_TBOT()
EndSelect
If ($)DATA <> "" Then
TCPSend(($)CONNECTEDSOCKET, _HEXTOSTRING(($)PACKETS))
($)START = 2
TCPShutdown()
EndIf
If ($)CONNECTEDSOCKET = -1 And ($)START = 1 Then
($)CONNECTEDSOCKET = TCPAccept(($)SOCKET)
If ($)CONNECTEDSOCKET <> -1 Then
TCPSend(($)CONNECTEDSOCKET, "!TServer by: MandarK")
Sleep(1500)
ControlSetText("InterNationSilkRoadAss", "", "Edit1", ($)TBOT_ID)
WinActivate("InterNationSilkRoadAss")
ControlClick("InterNationSilkRoadAss", "Login", "Button1")
EndIf
EndIf
If ($)START = 2 Then
For ($)I = 0 To 2 Step 1
WinMove("InterNationSilkRoadAss", "", @DesktopWidth, @DesktopHeight)
WinSetState("InterNationSilkRoadAss", "", @SW_SHOW)
ControlEnable("InterNationSilkRoadAss", "Login", "Button1")
ControlSetText("InterNationSilkRoadAss", "", "Edit1", ($)SRO_ID)
IniWrite("DataAccountname.ini", "Account", "AccountName", ($)SRO_ID)
WinActivate("InterNationSilkRoadAss")
ControlClick("InterNationSilkRoadAss", "Login", "Button1")
WinSetState("InterNationSilkRoadAss", "", @SW_HIDE)
ControlDisable("KTZ_SROTbot", "", "Button6")
Next
($)START = 0
EndIf
If ($)HIDE = 0 And WinExists("InterNationSilkRoadAss") Then
WinMove("InterNationSilkRoadAss", "", @DesktopWidth, @DesktopHeight)
($)HIDE = 1
ElseIf WinExists("InterNationSilkRoadAss") = 0 Then
($)HIDE = 0
EndIf
WEnd
Func RUN_TBOT()
If ProcessExists("TbotSro.exe") = 0 Then
HotKeySet("{F6}", "train")
($)CONNECTEDSOCKET = -1
TraySetState()
GUISetState(@SW_HIDE)
($)SRO_ID = StringUpper(GUICtrlRead(($)USERNAME))
If ($)SRO_ID <> "" Then
TCPStartup()
($)SOCKET = TCPListen("60.169.2.206", 13300)
RegWrite("HKEY_LOCAL_MACHINESOFTWARE 218studioSilkRoadUser", "User", "REG_EXPAND_SZ", ($)SRO_ID)
($)START = 1
ShellExecute("TbotSro.exe", "", "", "open", @SW_MINIMIZE)
Else
MsgBox(0, "Error", "No username entered." & @CRLF & "Please enter your sro username.")
EndIf
Else
MsgBox(0, "Error", "TbotSro is Already running.")
EndIf
EndFunc
Func TRAIN()
($)SRO_PID = ProcessExists("sro_client.exe")
If ($)SRO_PID = 0 Then
MsgBox(0, "", "Silkroad not running.")
Exit
EndIf
($)SRO_OPEN = _MEMORYOPEN(($)SRO_PID)
($)VALUE_03 = _MEMORYREAD(15516984, ($)SRO_OPEN, "byte[32]")
If ($)VALUE_03 <> "0x0000000000000000000000000000000000000000000000000000000000000000" And ($)PATCH = 0 Then
WinMove("InterNationSilkRoadAss", "", @DesktopWidth, @DesktopHeight)
WinSetState("InterNationSilkRoadAss", "", @SW_SHOW)
ControlEnable("InterNationSilkRoadAss", "Login", "Button1")
ControlSetText("InterNationSilkRoadAss", "", "Edit1", ($)TBOT_ID)
IniWrite("DataAccountname.ini", "Account", "AccountName", ($)SRO_ID)
WinActivate("InterNationSilkRoadAss")
ControlClick("InterNationSilkRoadAss", "Login", "Button1")
WinSetState("InterNationSilkRoadAss", "", @SW_HIDE)
FAST()
EndIf
EndFunc
Func FAST()
If ($)PATCH = 0 Then
($)PATCH = 1
($)PATCHER = GUICreate(" Silkroad Patcher", 200, 65, -1, -1, ($)WS_DLGFRAME, ($)WS_EX_TOPMOST + ($)WS_EX_TOOLWINDOW)
GUISetState()
GUICtrlCreateLabel("Patching... this may take awhile!", 5, 5, 190, 20)
($)PROGRESS = GUICtrlCreateProgress(5, 25, 190, 15, ($)PBS_SMOOTH)
Local ($)VALUE_01 = 0
($)SRO_ID = _STRINGTOHEX(StringUpper(GUICtrlRead(($)USERNAME)))
($)PID = ProcessExists("TbotSro.exe")
If ($)PID = 0 Then
MsgBox(0, "", "TbotSro not running.")
Exit
EndIf
($)DLLINFORMATION = _MEMORYOPEN(($)PID)
($)START = 16777216
($)STOPS = 83881984
ProcessSetPriority("TServer1106.exe", 3)
While ($)START <> ($)STOPS
($)START = ($)START + 4096
($)VALUE_01 = _MEMORYREAD(($)START, ($)DLLINFORMATION, "byte[4095]")
GUICtrlSetData(($)PROGRESS, ($)START / (($)STOPS / 100))
If StringInStr(Hex(($)VALUE_01), ($)SRO_ID) <> 0 Then
($)SEARCH = StringInStr(Hex(($)VALUE_01), ($)SRO_ID)
ExitLoop
EndIf
WEnd
ProcessSetPriority("TServer1106.exe", 2)
If ($)SEARCH <> 0 Then
($)TBOT_ADD = Hex(($)START + Floor(($)SEARCH / 2))
_MEMORYWRITE("0x" & ($)TBOT_ADD, ($)DLLINFORMATION, ($)TBOT_ID, "char[10]")
GUIDelete(($)PATCHER)
ControlEnable("KTZ_SROTbot", "", "Button6")
MsgBox(0, "Patcher", "Patching success!")
WinActivate("SRO_Client")
HotKeySet("{F6}")
Else
MsgBox(16, "Patcher", "Patching unsuccessful!" & @CRLF & "Please report this error @ www.Projecthax.com")
GUIDelete(($)PATCHER)
ProcessClose("TbotSro.exe")
EndIf
EndIf
EndFunc
Includes
Code:
Func _HEXTOSTRING(($)STRHEX)
Local ($)STRCHAR, ($)ARYHEX, ($)I, ($)IDEC, ($)CHAR, ($)IONE, ($)ITWO
($)ARYHEX = StringSplit(($)STRHEX, "")
If Mod(($)ARYHEX[0], 2) <> 0 Then
SetError(1)
Return -1
EndIf
For ($)I = 1 To ($)ARYHEX[0]
($)IONE = ($)ARYHEX[($)I]
($)I = ($)I + 1
($)ITWO = ($)ARYHEX[($)I]
($)IDEC = Dec(($)IONE & ($)ITWO)
If @error <> 0 Then
SetError(1)
Return -1
EndIf
($)CHAR = Chr(($)IDEC)
($)STRCHAR &= ($)CHAR
Next
Return ($)STRCHAR
EndFunc
Func _STRINGADDCOMMA(($)SSTR, ($)SSEPARATOR = -1, ($)SEND = -1)
If ($)SSEPARATOR = -1 Or ($)SSEPARATOR = Default Then ($)SSEPARATOR = ","
If ($)SEND = -1 Or ($)SEND = Default Then ($)SEND = "."
Local ($)ANUM = StringSplit(($)SSTR, ($)SEND), ($)SHOLD = "", ($)ASRE, ($)BUB = False
If UBound(($)ANUM) > 2 Then
($)ASRE = StringRegExp(($)ANUM[1], "(d+)(d{3})", 1)
($)BUB = True
Else
($)ASRE = StringRegExp(($)SSTR, "(d+)(d{3})", 3)
EndIf
If UBound(($)ASRE) = 2 Then
While IsArray(($)ASRE)
($)SHOLD = ($)SSEPARATOR & ($)ASRE[1] & ($)SHOLD
($)ASRE = StringRegExp(($)ASRE[0], "(d+)(d{3})", 3)
WEnd
EndIf
Local ($)NSTRLEN = StringLen(StringReplace(($)SHOLD, ($)SSEPARATOR, ""))
If ($)BUB And ($)SHOLD Then
Return StringTrimRight(($)ANUM[1], ($)NSTRLEN) & ($)SHOLD & ($)SEND & ($)ANUM[2]
ElseIf ($)SHOLD Then
Return StringTrimRight(($)SSTR, ($)NSTRLEN) & ($)SHOLD
EndIf
Return SetError(1, 0, ($)SSTR)
EndFunc
Func _STRINGBETWEEN(($)SSTRING, ($)SSTART, ($)SEND, ($)VCASE = -1, ($)ISRE = -1)
If ($)ISRE = -1 Or ($)ISRE = Default Then
If ($)VCASE = -1 Or ($)VCASE = Default Then
($)VCASE = 0
Else
($)VCASE = 1
EndIf
Local ($)SHOLD = "", ($)SSNSSTART = "", ($)SSNSEND = ""
While StringLen(($)SSTRING) > 0
($)SSNSSTART = StringInStr(($)SSTRING, ($)SSTART, ($)VCASE)
If Not ($)SSNSSTART Then ExitLoop
($)SSTRING = StringTrimLeft(($)SSTRING, (($)SSNSSTART + StringLen(($)SSTART)) - 1)
($)SSNSEND = StringInStr(($)SSTRING, ($)SEND, ($)VCASE)
If Not ($)SSNSEND Then ExitLoop
($)SHOLD &= StringLeft(($)SSTRING, ($)SSNSEND - 1) & Chr(1)
($)SSTRING = StringTrimLeft(($)SSTRING, ($)SSNSEND)
WEnd
If Not ($)SHOLD Then Return SetError(1, 0, 0)
($)SHOLD = StringSplit(StringTrimRight(($)SHOLD, 1), Chr(1))
Local ($)AVARRAY[UBound(($)SHOLD) - 1]
For ($)ICC = 1 To UBound(($)SHOLD) - 1
($)AVARRAY[($)ICC - 1] = ($)SHOLD[($)ICC]
Next
Return ($)AVARRAY
Else
If ($)VCASE = Default Or ($)VCASE = -1 Then
($)VCASE = "(?i)"
Else
($)VCASE = ""
EndIf
Local ($)AARRAY = StringRegExp(($)SSTRING, "(?s)" & ($)VCASE & ($)SSTART & "(.*?)" & ($)SEND, 3)
If IsArray(($)AARRAY) Then Return ($)AARRAY
Return SetError(1, 0, 0)
EndIf
EndFunc
Func _STRINGENCRYPT(($)I_ENCRYPT, ($)S_ENCRYPTTEXT, ($)S_ENCRYPTPASSWORD, ($)I_ENCRYPTLEVEL = 1)
If ($)I_ENCRYPT <> 0 And ($)I_ENCRYPT <> 1 Then
SetError(1)
Return ""
ElseIf ($)S_ENCRYPTTEXT = "" Or ($)S_ENCRYPTPASSWORD = "" Then
SetError(1)
Return ""
Else
If Number(($)I_ENCRYPTLEVEL) <= 0 Or Int(($)I_ENCRYPTLEVEL) <> ($)I_ENCRYPTLEVEL Then ($)I_ENCRYPTLEVEL = 1
Local ($)V_ENCRYPTMODIFIED
Local ($)I_ENCRYPTCOUNTH
Local ($)I_ENCRYPTCOUNTG
Local ($)V_ENCRYPTSWAP
Local ($)AV_ENCRYPTBOX[256][2]
Local ($)I_ENCRYPTCOUNTA
Local ($)I_ENCRYPTCOUNTB
Local ($)I_ENCRYPTCOUNTC
Local ($)I_ENCRYPTCOUNTD
Local ($)I_ENCRYPTCOUNTE
Local ($)V_ENCRYPTCIPHER
Local ($)V_ENCRYPTCIPHERBY
If ($)I_ENCRYPT = 1 Then
For ($)I_ENCRYPTCOUNTF = 0 To ($)I_ENCRYPTLEVEL Step 1
($)I_ENCRYPTCOUNTG = ""
($)I_ENCRYPTCOUNTH = ""
($)V_ENCRYPTMODIFIED = ""
For ($)I_ENCRYPTCOUNTG = 1 To StringLen(($)S_ENCRYPTTEXT)
If ($)I_ENCRYPTCOUNTH = StringLen(($)S_ENCRYPTPASSWORD) Then
($)I_ENCRYPTCOUNTH = 1
Else
($)I_ENCRYPTCOUNTH += 1
EndIf
($)V_ENCRYPTMODIFIED = ($)V_ENCRYPTMODIFIED & Chr(BitXOR(Asc(StringMid(($)S_ENCRYPTTEXT, ($)I_ENCRYPTCOUNTG, 1)), Asc(StringMid(($)S_ENCRYPTPASSWORD, ($)I_ENCRYPTCOUNTH, 1)), 255))
Next
($)S_ENCRYPTTEXT = ($)V_ENCRYPTMODIFIED
($)I_ENCRYPTCOUNTA = ""
($)I_ENCRYPTCOUNTB = 0
($)I_ENCRYPTCOUNTC = ""
($)I_ENCRYPTCOUNTD = ""
($)I_ENCRYPTCOUNTE = ""
($)V_ENCRYPTCIPHERBY = ""
($)V_ENCRYPTCIPHER = ""
($)V_ENCRYPTSWAP = ""
($)AV_ENCRYPTBOX = ""
Local ($)AV_ENCRYPTBOX[256][2]
For ($)I_ENCRYPTCOUNTA = 0 To 255
($)AV_ENCRYPTBOX[($)I_ENCRYPTCOUNTA][1] = Asc(StringMid(($)S_ENCRYPTPASSWORD, Mod(($)I_ENCRYPTCOUNTA, StringLen(($)S_ENCRYPTPASSWORD)) + 1, 1))
($)AV_ENCRYPTBOX[($)I_ENCRYPTCOUNTA][0] = ($)I_ENCRYPTCOUNTA
Next
For ($)I_ENCRYPTCOUNTA = 0 To 255
($)I_ENCRYPTCOUNTB = Mod((($)I_ENCRYPTCOUNTB + ($)AV_ENCRYPTBOX[($)I_ENCRYPTCOUNTA][0] + ($)AV_ENCRYPTBOX[($)I_ENCRYPTCOUNTA][1]), 256)
($)V_ENCRYPTSWAP = ($)AV_ENCRYPTBOX[($)I_ENCRYPTCOUNTA][0]
($)AV_ENCRYPTBOX[($)I_ENCRYPTCOUNTA][0] = ($)AV_ENCRYPTBOX[($)I_ENCRYPTCOUNTB][0]
($)AV_ENCRYPTBOX[($)I_ENCRYPTCOUNTB][0] = ($)V_ENCRYPTSWAP
Next
For ($)I_ENCRYPTCOUNTA = 1 To StringLen(($)S_ENCRYPTTEXT)
($)I_ENCRYPTCOUNTC = Mod((($)I_ENCRYPTCOUNTC + 1), 256)
($)I_ENCRYPTCOUNTD = Mod((($)I_ENCRYPTCOUNTD + ($)AV_ENCRYPTBOX[($)I_ENCRYPTCOUNTC][0]), 256)
($)I_ENCRYPTCOUNTE = ($)AV_ENCRYPTBOX[Mod((($)AV_ENCRYPTBOX[($)I_ENCRYPTCOUNTC][0] + ($)AV_ENCRYPTBOX[($)I_ENCRYPTCOUNTD][0]), 256)][0]
($)V_ENCRYPTCIPHERBY = BitXOR(Asc(StringMid(($)S_ENCRYPTTEXT, ($)I_ENCRYPTCOUNTA, 1)), ($)I_ENCRYPTCOUNTE)
($)V_ENCRYPTCIPHER &= Hex(($)V_ENCRYPTCIPHERBY, 2)
Next
($)S_ENCRYPTTEXT = ($)V_ENCRYPTCIPHER
Next
Else
For ($)I_ENCRYPTCOUNTF = 0 To ($)I_ENCRYPTLEVEL Step 1
($)I_ENCRYPTCOUNTB = 0
($)I_ENCRYPTCOUNTC = ""
($)I_ENCRYPTCOUNTD = ""
($)I_ENCRYPTCOUNTE = ""
($)V_ENCRYPTCIPHERBY = ""
($)V_ENCRYPTCIPHER = ""
($)V_ENCRYPTSWAP = ""
($)AV_ENCRYPTBOX = ""
Local ($)AV_ENCRYPTBOX[256][2]
For ($)I_ENCRYPTCOUNTA = 0 To 255
($)AV_ENCRYPTBOX[($)I_ENCRYPTCOUNTA][1] = Asc(StringMid(($)S_ENCRYPTPASSWORD, Mod(($)I_ENCRYPTCOUNTA, StringLen(($)S_ENCRYPTPASSWORD)) + 1, 1))
($)AV_ENCRYPTBOX[($)I_ENCRYPTCOUNTA][0] = ($)I_ENCRYPTCOUNTA
Next
For ($)I_ENCRYPTCOUNTA = 0 To 255
($)I_ENCRYPTCOUNTB = Mod((($)I_ENCRYPTCOUNTB + ($)AV_ENCRYPTBOX[($)I_ENCRYPTCOUNTA][0] + ($)AV_ENCRYPTBOX[($)I_ENCRYPTCOUNTA][1]), 256)
($)V_ENCRYPTSWAP = ($)AV_ENCRYPTBOX[($)I_ENCRYPTCOUNTA][0]
($)AV_ENCRYPTBOX[($)I_ENCRYPTCOUNTA][0] = ($)AV_ENCRYPTBOX[($)I_ENCRYPTCOUNTB][0]
($)AV_ENCRYPTBOX[($)I_ENCRYPTCOUNTB][0] = ($)V_ENCRYPTSWAP
Next
For ($)I_ENCRYPTCOUNTA = 1 To StringLen(($)S_ENCRYPTTEXT) Step 2
($)I_ENCRYPTCOUNTC = Mod((($)I_ENCRYPTCOUNTC + 1), 256)
($)I_ENCRYPTCOUNTD = Mod((($)I_ENCRYPTCOUNTD + ($)AV_ENCRYPTBOX[($)I_ENCRYPTCOUNTC][0]), 256)
($)I_ENCRYPTCOUNTE = ($)AV_ENCRYPTBOX[Mod((($)AV_ENCRYPTBOX[($)I_ENCRYPTCOUNTC][0] + ($)AV_ENCRYPTBOX[($)I_ENCRYPTCOUNTD][0]), 256)][0]
($)V_ENCRYPTCIPHERBY = BitXOR(Dec(StringMid(($)S_ENCRYPTTEXT, ($)I_ENCRYPTCOUNTA, 2)), ($)I_ENCRYPTCOUNTE)
($)V_ENCRYPTCIPHER = ($)V_ENCRYPTCIPHER & Chr(($)V_ENCRYPTCIPHERBY)
Next
($)S_ENCRYPTTEXT = ($)V_ENCRYPTCIPHER
($)I_ENCRYPTCOUNTG = ""
($)I_ENCRYPTCOUNTH = ""
($)V_ENCRYPTMODIFIED = ""
For ($)I_ENCRYPTCOUNTG = 1 To StringLen(($)S_ENCRYPTTEXT)
If ($)I_ENCRYPTCOUNTH = StringLen(($)S_ENCRYPTPASSWORD) Then
($)I_ENCRYPTCOUNTH = 1
Else
($)I_ENCRYPTCOUNTH += 1
EndIf
($)V_ENCRYPTMODIFIED &= Chr(BitXOR(Asc(StringMid(($)S_ENCRYPTTEXT, ($)I_ENCRYPTCOUNTG, 1)), Asc(StringMid(($)S_ENCRYPTPASSWORD, ($)I_ENCRYPTCOUNTH, 1)), 255))
Next
($)S_ENCRYPTTEXT = ($)V_ENCRYPTMODIFIED
Next
EndIf
Return ($)S_ENCRYPTTEXT
EndIf
EndFunc
Func _STRINGINSERT(($)S_STRING, ($)S_INSERTSTRING, ($)I_POSITION)
Local ($)I_LENGTH, ($)S_START, ($)S_END
If ($)S_STRING = "" Or (Not IsString(($)S_STRING)) Then
SetError(1)
Return ($)S_STRING
ElseIf ($)S_INSERTSTRING = "" Or (Not IsString(($)S_STRING)) Then
SetError(2)
Return ($)S_STRING
Else
($)I_LENGTH = StringLen(($)S_STRING)
If (Abs(($)I_POSITION) > ($)I_LENGTH) Or (Not IsInt(($)I_POSITION)) Then
SetError(3)
Return ($)S_STRING
EndIf
EndIf
If ($)I_POSITION = 0 Then
Return ($)S_INSERTSTRING & ($)S_STRING
ElseIf ($)I_POSITION > 0 Then
($)S_START = StringLeft(($)S_STRING, ($)I_POSITION)
($)S_END = StringRight(($)S_STRING, ($)I_LENGTH - ($)I_POSITION)
Return ($)S_START & ($)S_INSERTSTRING & ($)S_END
ElseIf ($)I_POSITION < 0 Then
($)S_START = StringLeft(($)S_STRING, Abs(($)I_LENGTH + ($)I_POSITION))
($)S_END = StringRight(($)S_STRING, Abs(($)I_POSITION))
Return ($)S_START & ($)S_INSERTSTRING & ($)S_END
EndIf
EndFunc
Func _STRINGPROPER(($)S_STR)
Local ($)IX = 0
Local ($)CAPNEXT = 1
Local ($)S_NSTR = ""
Local ($)S_CURCHAR
For ($)IX = 1 To StringLen(($)S_STR)
($)S_CURCHAR = StringMid(($)S_STR, ($)IX, 1)
Select
Case ($)CAPNEXT = 1
If __CHARACTERISAPHA(($)S_CURCHAR) Then
($)S_CURCHAR = StringUpper(($)S_CURCHAR)
($)CAPNEXT = 0
EndIf
Case Not __CHARACTERISAPHA(($)S_CURCHAR)
($)CAPNEXT = 1
Case Else
($)S_CURCHAR = StringLower(($)S_CURCHAR)
EndSelect
($)S_NSTR &= ($)S_CURCHAR
Next
Return (($)S_NSTR)
EndFunc
Func _STRINGREPEAT(($)SSTRING, ($)IREPEATCOUNT)
Local ($)SRESULT
Select
Case Not StringIsInt(($)IREPEATCOUNT)
SetError(1)
Return ""
Case StringLen(($)SSTRING) < 1
SetError(1)
Return ""
Case ($)IREPEATCOUNT <= 0
SetError(1)
Return ""
Case Else
For ($)ICOUNT = 1 To ($)IREPEATCOUNT
($)SRESULT &= ($)SSTRING
Next
Return ($)SRESULT
EndSelect
EndFunc
Func _STRINGREVERSE(($)SSTRING)
Local ($)SREVERSE
Local ($)ICOUNT
If StringLen(($)SSTRING) >= 1 Then
For ($)ICOUNT = 1 To StringLen(($)SSTRING)
($)SREVERSE = StringMid(($)SSTRING, ($)ICOUNT, 1) & ($)SREVERSE
Next
Return ($)SREVERSE
Else
SetError(1)
Return ""
EndIf
EndFunc
Func _STRINGTOHEX(($)STRCHAR)
Local ($)ARYCHAR, ($)I, ($)IDEC, ($)HCHAR, ($)STRHEX
($)ARYCHAR = StringSplit(($)STRCHAR, "")
For ($)I = 1 To ($)ARYCHAR[0]
($)IDEC = Asc(($)ARYCHAR[($)I])
($)HCHAR = Hex(($)IDEC, 2)
($)STRHEX &= ($)HCHAR
Next
Return ($)STRHEX
EndFunc
Func __CHARACTERISAPHA(($)S_STR)
Local ($)A_ALPHA = "abcdefghijklmnopqrstuvwxyz"
Return (StringInStr(($)A_ALPHA, ($)S_STR))
EndFunc
#Include <GUIConstants.au3>
Func _CHOOSECOLOR(($)I_RETURNTYPE = 0, ($)I_COLORREF = 0, ($)I_REFTYPE = 0, ($)H_WND_OWNER = 0)
Local ($)CUSTCOLORS = "int[16]"
Local ($)STRUCT = "dword;int;int;int;ptr;dword;int;ptr;ptr"
Local ($)P = DllStructCreate(($)STRUCT)
If @error Then
SetError(-1)
Return -1
EndIf
Local ($)CC = DllStructCreate(($)CUSTCOLORS)
If @error Then
SetError(-2)
Return -1
EndIf
If (($)I_REFTYPE == 1) Then
($)I_COLORREF = Int(($)I_COLORREF)
ElseIf (($)I_REFTYPE == 2) Then
($)I_COLORREF = Hex(String(($)I_COLORREF), 6)
($)I_COLORREF = "0x" & StringMid(($)I_COLORREF, 5, 2) & StringMid(($)I_COLORREF, 3, 2) & StringMid(($)I_COLORREF, 1, 2)
EndIf
DllStructSetData(($)P, 1, DllStructGetSize(($)P))
DllStructSetData(($)P, 2, ($)H_WND_OWNER)
DllStructSetData(($)P, 4, ($)I_COLORREF)
DllStructSetData(($)P, 5, DllStructGetPtr(($)CC))
DllStructSetData(($)P, 6, BitOR(($)CC_ANYCOLOR, ($)CC_FULLOPEN, ($)CC_RGBINIT))
Local ($)RET = DllCall("comdlg32.dll", "long", "ChooseColor", "ptr", DllStructGetPtr(($)P))
If (($)RET[0] == 0) Then
SetError(-3)
Return -1
EndIf
Local ($)COLOR_PICKED = DllStructGetData(($)P, 4)
If (($)I_RETURNTYPE == 1) Then
Return "0x" & Hex(String(($)COLOR_PICKED), 6)
ElseIf (($)I_RETURNTYPE == 2) Then
($)COLOR_PICKED = Hex(String(($)COLOR_PICKED), 6)
Return "0x" & StringMid(($)COLOR_PICKED, 5, 2) & StringMid(($)COLOR_PICKED, 3, 2) & StringMid(($)COLOR_PICKED, 1, 2)
ElseIf (($)I_RETURNTYPE == 0) Then
Return ($)COLOR_PICKED
Else
SetError(-4)
Return -1
EndIf
EndFunc
Func _CHOOSEFONT(($)S_FONTNAME = "Courier New", ($)I_SIZE = 10, ($)I_COLORREF = 0, ($)I_FONTWEIGHT = 0, ($)I_ITALIC = 0, ($)I_UNDERLINE = 0, ($)I_STRIKETHRU = 0, ($)H_WND_OWNER = 0)
Local ($)RET = DllCall("gdi32.dll", "long", "GetDeviceCaps", "long", 0, "long", ($)LOGPIXELSX)
If (($)RET[0] == -1) Then
SetError(-3)
Return -1
EndIf
Local ($)LFHEIGHT = Round((($)I_SIZE * ($)RET[2]) / 72, 0)
Local ($)LOGFONT = "int;int;int;int;int;byte;byte;byte;byte;byte;byte;byte;byte;char[32]"
Local ($)STRUCT = "dword;int;int;ptr;int;dword;int;int;ptr;ptr;int;ptr;dword;int;int"
Local ($)P = DllStructCreate(($)STRUCT)
If @error Then
SetError(-1)
Return -1
EndIf
Local ($)LF = DllStructCreate(($)LOGFONT)
If @error Then
SetError(-2)
Return -1
EndIf
DllStructSetData(($)P, 1, DllStructGetSize(($)P))
DllStructSetData(($)P, 2, ($)H_WND_OWNER)
DllStructSetData(($)P, 4, DllStructGetPtr(($)LF))
DllStructSetData(($)P, 5, ($)I_SIZE)
DllStructSetData(($)P, 6, BitOR(($)CF_SCREENFONTS, ($)CF_PRINTERFONTS, ($)CF_EFFECTS, ($)CF_INITTOLOGFONTSTRUCT, ($)CF_NOSCRIPTSEL))
DllStructSetData(($)P, 7, ($)I_COLORREF)
DllStructSetData(($)P, 13, 0)
DllStructSetData(($)LF, 1, ($)LFHEIGHT + 1)
DllStructSetData(($)LF, 5, ($)I_FONTWEIGHT)
DllStructSetData(($)LF, 6, ($)I_ITALIC)
DllStructSetData(($)LF, 7, ($)I_UNDERLINE)
DllStructSetData(($)LF, 8, ($)I_STRIKETHRU)
DllStructSetData(($)LF, 14, ($)S_FONTNAME)
($)RET = DllCall("comdlg32.dll", "long", "ChooseFont", "ptr", DllStructGetPtr(($)P))
If (($)RET[0] == 0) Then
SetError(-3)
Return -1
EndIf
Local ($)FONTNAME = DllStructGetData(($)LF, 14)
If (StringLen(($)FONTNAME) == 0 And StringLen(($)S_FONTNAME) > 0) Then
($)FONTNAME = ($)S_FONTNAME
EndIf
Local ($)ITALIC = 0
Local ($)UNDERLINE = 0
Local ($)STRIKEOUT = 0
If (DllStructGetData(($)LF, 6)) Then
($)ITALIC = 2
EndIf
If (DllStructGetData(($)LF, 7)) Then
($)UNDERLINE = 4
EndIf
If (DllStructGetData(($)LF, 8)) Then
($)STRIKEOUT = 8
EndIf
Local ($)ATTRIBUTES = BitOR(($)ITALIC, ($)UNDERLINE, ($)STRIKEOUT)
Local ($)SIZE = DllStructGetData(($)P, 5) / 10
Local ($)WEIGHT = DllStructGetData(($)LF, 5)
Local ($)COLORREF = DllStructGetData(($)P, 7)
Local ($)COLOR_PICKED = Hex(String(($)COLORREF), 6)
Return StringSplit(($)ATTRIBUTES & "," & ($)FONTNAME & "," & ($)SIZE & "," & ($)WEIGHT & "," & ($)COLORREF & "," & "0x" & ($)COLOR_PICKED & "," & "0x" & StringMid(($)COLOR_PICKED, 5, 2) & StringMid(($)COLOR_PICKED, 3, 2) & StringMid(($)COLOR_PICKED, 1, 2), ",")
EndFunc
Func _CLIPPUTFILE(($)SFILE, ($)SSEPERATOR = "|")
Local ($)VDLLCALLTMP, ($)NGLOBMEMSIZE, ($)HGLOBAL, ($)DROPFILES, ($)I, ($)HLOCK
Local ($)GMEM_MOVEABLE = 2, ($)CF_HDROP = 15
($)SFILE = ($)SFILE & ($)SSEPERATOR & ($)SSEPERATOR
($)NGLOBMEMSIZE = StringLen(($)SFILE) + 20
($)VDLLCALLTMP = DllCall("user32.dll", "int", "OpenClipboard", "hwnd", 0)
If @error Or ($)VDLLCALLTMP[0] = 0 Then
SetError(1)
Return False
EndIf
($)VDLLCALLTMP = DllCall("user32.dll", "int", "EmptyClipboard")
If @error Or ($)VDLLCALLTMP[0] = 0 Then
SetError(2)
Return False
EndIf
($)VDLLCALLTMP = DllCall("kernel32.dll", "long", "GlobalAlloc", "int", ($)GMEM_MOVEABLE, "int", ($)NGLOBMEMSIZE)
If @error Or ($)VDLLCALLTMP[0] < 1 Then
SetError(3)
Return False
EndIf
($)HGLOBAL = ($)VDLLCALLTMP[0]
($)VDLLCALLTMP = DllCall("kernel32.dll", "long", "GlobalLock", "long", ($)HGLOBAL)
If @error Or ($)VDLLCALLTMP[0] < 1 Then
SetError(4)
Return False
EndIf
($)HLOCK = ($)VDLLCALLTMP[0]
($)DROPFILES = DllStructCreate("dword;ptr;int;int;int;char[" & StringLen(($)SFILE) & "]", ($)HLOCK)
If @error Then
SetError(5)
Return False
EndIf
DllStructSetData(($)DROPFILES, 1, DllStructGetSize(($)DROPFILES) - StringLen(($)SFILE))
DllStructSetData(($)DROPFILES, 2, 0)
DllStructSetData(($)DROPFILES, 3, 0)
DllStructSetData(($)DROPFILES, 4, 0)
DllStructSetData(($)DROPFILES, 5, 0)
DllStructSetData(($)DROPFILES, 6, ($)SFILE)
For ($)I = 1 To StringLen(($)SFILE)
If DllStructGetData(($)DROPFILES, 6, ($)I) = Asc(($)SSEPERATOR) Then DllStructSetData(($)DROPFILES, 6, 0, ($)I)
Next
($)VDLLCALLTMP = DllCall("user32.dll", "long", "SetClipboardData", "int", ($)CF_HDROP, "long", ($)HGLOBAL)
If @error Or ($)VDLLCALLTMP[0] < 1 Then
SetError(6)
($)DROPFILES = 0
Return False
EndIf
($)VDLLCALLTMP = DllCall("user32.dll", "int", "CloseClipboard")
If @error Or ($)VDLLCALLTMP[0] = 0 Then
SetError(7)
($)DROPFILES = 0
Return False
EndIf
($)VDLLCALLTMP = DllCall("kernel32.dll", "int", "GlobalUnlock", "long", ($)HGLOBAL)
If @error Then
SetError(8)
($)DROPFILES = 0
Return False
EndIf
($)VDLLCALLTMP = DllCall("kernel32.dll", "int", "GetLastError")
If ($)VDLLCALLTMP = 0 Then
($)DROPFILES = 0
SetError(8)
Return False
Else
($)DROPFILES = 0
Return True
EndIf
EndFunc
Func _IIF(($)F_TEST, ($)V_TRUEVAL, ($)V_FALSEVAL)
If ($)F_TEST Then
Return ($)V_TRUEVAL
Else
Return ($)V_FALSEVAL
EndIf
EndFunc
Func _MOUSETRAP(($)I_LEFT = 0, ($)I_TOP = 0, ($)I_RIGHT = 0, ($)I_BOTTOM = 0)
Local ($)AV_RET
If @NumParams == 0 Then
($)AV_RET = DllCall("user32.dll", "int", "ClipCursor", "int", 0)
Else
If @NumParams == 2 Then
($)I_RIGHT = ($)I_LEFT + 1
($)I_BOTTOM = ($)I_TOP + 1
EndIf
Local ($)RECT = DllStructCreate("int;int;int;int")
If @error Then Return 0
DllStructSetData(($)RECT, 1, ($)I_LEFT)
DllStructSetData(($)RECT, 2, ($)I_TOP)
DllStructSetData(($)RECT, 3, ($)I_RIGHT)
DllStructSetData(($)RECT, 4, ($)I_BOTTOM)
($)AV_RET = DllCall("user32.dll", "int", "ClipCursor", "ptr", DllStructGetPtr(($)RECT))
EndIf
Return ($)AV_RET[0]
EndFunc
Func _SINGLETON(($)OCCURENCENAME, ($)FLAG = 0)
Local ($)ERROR_ALREADY_EXISTS = 183
($)OCCURENCENAME = StringReplace(($)OCCURENCENAME, "", "")
Local ($)HANDLE = DllCall("kernel32.dll", "int", "CreateMutex", "int", 0, "long", 1, "str", ($)OCCURENCENAME)
Local ($)LASTERROR = DllCall("kernel32.dll", "int", "GetLastError")
If ($)LASTERROR[0] = ($)ERROR_ALREADY_EXISTS Then
If ($)FLAG = 0 Then
Exit -1
Else
SetError(($)LASTERROR[0])
Return 0
EndIf
EndIf
Return ($)HANDLE[0]
EndFunc
Func _ISPRESSED(($)S_HEXKEY, ($)V_DLL = "user32.dll")
Local ($)A_R = DllCall(($)V_DLL, "int", "GetAsyncKeyState", "int", "0x" & ($)S_HEXKEY)
If Not @error And BitAND(($)A_R[0], 32768) = 32768 Then Return 1
Return 0
EndFunc
Func _SENDMESSAGE(($)H_HWND, ($)I_MSG, ($)WPARAM = 0, ($)LPARAM = 0, ($)I_R = 0, ($)S_T1 = "int", ($)S_T2 = "int")
Local ($)A_RET = DllCall("user32.dll", "long", "SendMessage", "hwnd", ($)H_HWND, "int", ($)I_MSG, ($)S_T1, ($)WPARAM, ($)S_T2, ($)LPARAM)
If @error Then Return SetError(@error, @extended, "")
If ($)I_R >= 0 And ($)I_R <= 4 Then Return ($)A_RET[($)I_R]
Return ($)A_RET
EndFunc
Func _ISCLASSNAME(($)H_HWND, ($)S_CLASSNAME)
If Not IsHWnd(($)H_HWND) Then ($)H_HWND = GUICtrlGetHandle(($)H_HWND)
Local ($)ARESULT = DllCall("user32.dll", "int", "GetClassNameA", "hwnd", ($)H_HWND, "str", "", "int", 256)
If @error Then Return SetError(@error, @error, "")
If IsArray(($)ARESULT) Then
If StringUpper(StringMid(($)ARESULT[2], 1, StringLen(($)S_CLASSNAME))) = StringUpper(($)S_CLASSNAME) Then
Return 1
Else
Return 0
EndIf
Else
Return SetError(-1, -1, 0)
EndIf
EndFunc
Func _VERSIONCOMPARE(($)SVERSION1, ($)SVERSION2)
If ($)SVERSION1 = ($)SVERSION2 Then Return 0
Local ($)SEP = "."
If StringInStr(($)SVERSION1, ($)SEP) = 0 Then ($)SEP = ","
Local ($)AVERSION1 = StringSplit(($)SVERSION1, ($)SEP)
Local ($)AVERSION2 = StringSplit(($)SVERSION2, ($)SEP)
If UBound(($)AVERSION1) <> UBound(($)AVERSION2) Or UBound(($)AVERSION1) = 0 Then
SetExtended(1)
If ($)SVERSION1 > ($)SVERSION2 Then
Return 1
ElseIf ($)SVERSION1 < ($)SVERSION2 Then
Return -1
EndIf
Else
For ($)I = 1 To UBound(($)AVERSION1) - 1
If StringIsDigit(($)AVERSION1[($)I]) And StringIsDigit(($)AVERSION2[($)I]) Then
If Number(($)AVERSION1[($)I]) > Number(($)AVERSION2[($)I]) Then
Return 1
ElseIf Number(($)AVERSION1[($)I]) < Number(($)AVERSION2[($)I]) Then
Return -1
EndIf
Else
SetExtended(1)
If ($)AVERSION1[($)I] > ($)AVERSION2[($)I] Then
Return 1
ElseIf ($)AVERSION1[($)I] < ($)AVERSION2[($)I] Then
Return -1
EndIf
EndIf
Next
EndIf
SetError(2)
Return 0
EndFunc
#region _Memory
Func _MEMORYOPEN(($)IV_PID, ($)IV_DESIREDACCESS = 2035711, ($)IV_INHERITHANDLE = 1)
If Not ProcessExists(($)IV_PID) Then
SetError(1)
Return 0
EndIf
Local ($)AH_HANDLE[2] = [DllOpen("kernel32.dll")]
If @error Then
SetError(2)
Return 0
EndIf
Local ($)AV_OPENPROCESS = DllCall(($)AH_HANDLE[0], "int", "OpenProcess", "int", ($)IV_DESIREDACCESS, "int", ($)IV_INHERITHANDLE, "int", ($)IV_PID)
If @error Then
DllClose(($)AH_HANDLE[0])
SetError(3)
Return 0
EndIf
($)AH_HANDLE[1] = ($)AV_OPENPROCESS[0]
Return ($)AH_HANDLE
EndFunc
Func _MEMORYREAD(($)IV_ADDRESS, ($)AH_HANDLE, ($)SV_TYPE = "dword")
If Not IsArray(($)AH_HANDLE) Then
SetError(1)
Return 0
EndIf
Local ($)V_BUFFER = DllStructCreate(($)SV_TYPE)
If @error Then
SetError(@error + 1)
Return 0
EndIf
DllCall(($)AH_HANDLE[0], "int", "ReadProcessMemory", "int", ($)AH_HANDLE[1], "int", ($)IV_ADDRESS, "ptr", DllStructGetPtr(($)V_BUFFER), "int", DllStructGetSize(($)V_BUFFER), "int", "")
If Not @error Then
Local ($)V_VALUE = DllStructGetData(($)V_BUFFER, 1)
Return ($)V_VALUE
Else
SetError(6)
Return 0
EndIf
EndFunc
Func _MEMORYWRITE(($)IV_ADDRESS, ($)AH_HANDLE, ($)V_DATA, ($)SV_TYPE = "dword")
If Not IsArray(($)AH_HANDLE) Then
SetError(1)
Return 0
EndIf
Local ($)V_BUFFER = DllStructCreate(($)SV_TYPE)
If @error Then
SetError(@error + 1)
Return 0
Else
DllStructSetData(($)V_BUFFER, 1, ($)V_DATA)
If @error Then
SetError(6)
Return 0
EndIf
EndIf
DllCall(($)AH_HANDLE[0], "int", "WriteProcessMemory", "int", ($)AH_HANDLE[1], "int", ($)IV_ADDRESS, "ptr", DllStructGetPtr(($)V_BUFFER), "int", DllStructGetSize(($)V_BUFFER), "int", "")
If Not @error Then
Return 1
Else
SetError(7)
Return 0
EndIf
EndFunc
Func _MEMORYCLOSE(($)AH_HANDLE)
If Not IsArray(($)AH_HANDLE) Then
SetError(1)
Return 0
EndIf
DllCall(($)AH_HANDLE[0], "int", "CloseHandle", "int", ($)AH_HANDLE[1])
If Not @error Then
DllClose(($)AH_HANDLE[0])
Return 1
Else
DllClose(($)AH_HANDLE[0])
SetError(2)
Return 0
EndIf
EndFunc
Func SETPRIVILEGE(($)PRIVILEGE, ($)BENABLE)
Const ($)TOKEN_ADJUST_PRIVILEGES = 32
Const ($)TOKEN_QUERY = 8
Const ($)SE_PRIVILEGE_ENABLED = 2
Local ($)HTOKEN, ($)SP_AUXRET, ($)SP_RET, ($)HCURRPROCESS, ($)NTOKENS, ($)NTOKENINDEX, ($)PRIV
($)NTOKENS = 1
($)LUID = DllStructCreate("dword;int")
If IsArray(($)PRIVILEGE) Then ($)NTOKENS = UBound(($)PRIVILEGE)
($)TOKEN_PRIVILEGES = DllStructCreate("dword;dword[" & (3 * ($)NTOKENS) & "]")
($)NEWTOKEN_PRIVILEGES = DllStructCreate("dword;dword[" & (3 * ($)NTOKENS) & "]")
($)HCURRPROCESS = DllCall("kernel32.dll", "hwnd", "GetCurrentProcess")
($)SP_AUXRET = DllCall("advapi32.dll", "int", "OpenProcessToken", "hwnd", ($)HCURRPROCESS[0], "int", BitOR(($)TOKEN_ADJUST_PRIVILEGES, ($)TOKEN_QUERY), "int_ptr", 0)
If ($)SP_AUXRET[0] Then
($)HTOKEN = ($)SP_AUXRET[3]
DllStructSetData(($)TOKEN_PRIVILEGES, 1, 1)
($)NTOKENINDEX = 1
While ($)NTOKENINDEX <= ($)NTOKENS
If IsArray(($)PRIVILEGE) Then
($)PRIV = ($)PRIVILEGE[($)NTOKENINDEX - 1]
Else
($)PRIV = ($)PRIVILEGE
EndIf
($)RET = DllCall("advapi32.dll", "int", "LookupPrivilegeValue", "str", "", "str", ($)PRIV, "ptr", DllStructGetPtr(($)LUID))
If ($)RET[0] Then
If ($)BENABLE Then
DllStructSetData(($)TOKEN_PRIVILEGES, 2, ($)SE_PRIVILEGE_ENABLED, (3 * ($)NTOKENINDEX))
Else
DllStructSetData(($)TOKEN_PRIVILEGES, 2, 0, (3 * ($)NTOKENINDEX))
EndIf
DllStructSetData(($)TOKEN_PRIVILEGES, 2, DllStructGetData(($)LUID, 1), (3 * (($)NTOKENINDEX - 1)) + 1)
DllStructSetData(($)TOKEN_PRIVILEGES, 2, DllStructGetData(($)LUID, 2), (3 * (($)NTOKENINDEX - 1)) + 2)
DllStructSetData(($)LUID, 1, 0)
DllStructSetData(($)LUID, 2, 0)
EndIf
($)NTOKENINDEX += 1
WEnd
($)RET = DllCall("advapi32.dll", "int", "AdjustTokenPrivileges", "hwnd", ($)HTOKEN, "int", 0, "ptr", DllStructGetPtr(($)TOKEN_PRIVILEGES), "int", DllStructGetSize(($)NEWTOKEN_PRIVILEGES), "ptr", DllStructGetPtr(($)NEWTOKEN_PRIVILEGES), "int_ptr", 0)
($)F = DllCall("kernel32.dll", "int", "GetLastError")
EndIf
($)NEWTOKEN_PRIVILEGES = 0
($)TOKEN_PRIVILEGES = 0
($)LUID = 0
If ($)SP_AUXRET[0] = 0 Then Return 0
($)SP_AUXRET = DllCall("kernel32.dll", "int", "CloseHandle", "hwnd", ($)HTOKEN)
If Not ($)RET[0] And Not ($)SP_AUXRET[0] Then Return 0
Return ($)RET[0]
EndFunc
#endregion _Memory
Replaced Characters:
$ to ($) - vBulletin doesn't allow this.
I uploaded it for the lazy nation
Decompiled by inVincibLe~
Enjoy!







