[Source]Tserver 1.06b

05/31/2008 14:55 InvincibleNoOB#1
The true source...
Compare it to the one posted at PH and you'll see the difference... :o

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_MACHINESOFTWARE218studioSilkRoadGamePath", "GamePath")
($)VAR_2 = RegRead("HKEY_LOCAL_MACHINESOFTWARE218studioSilkRoadUser", "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_MACHINESOFTWARE218studioSilkRoadGamePath", "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_MACHINESOFTWARE218studioSilkRoadUser", "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!
05/31/2008 14:57 InvincibleNoOB#2
Before posting please read the FAQ
Q:What is this
A:Source code of an old crack,can be updated.

Q:Is it working
A:No.

Q:How to use the files
A:You need AutoIt 3
05/31/2008 15:37 candyblade#3
i hope someone will work on it :D
05/31/2008 15:58 Dark_Xero9#4
Quote:
Originally Posted by candyblade View Post
i hope someone will work on it :D

yea hopefully
05/31/2008 16:21 ZotoM#5
O_O invi you made a double-post
TRATOR ^^
05/31/2008 16:22 wallfex#6
just... WOW
05/31/2008 16:28 edwerd#7
nice dude i hope some 1 crack it
05/31/2008 20:31 Cha0sBG#8
well i coud try but currently i'm working on a project of mine learning c++ and studying for exams >.<
05/31/2008 20:43 Hero2Freeze#9
Oh yea it's the old Tbot crack xD
missin' this old days <3
06/01/2008 01:38 slyfoxman#10
[Only registered and activated users can see links. Click Here To Register...]
use this link to get the torrent MUST HAVE BITCOMMET OR BITTORRENT
06/01/2008 03:03 xMedeia#11
I'll hit thanks for whoever cracks it :D..

Anyway, Good luck to anyone who is trying to.. Hope we can get back to the old cracked Tbot again..
06/01/2008 04:41 _Stryder_#12
what must you learn to be able to create cracks and stuff?
06/01/2008 15:52 juffyt#13
Quote:
Originally Posted by _Stryder_ View Post
what must you learn to be able to create cracks and stuff?
2 Words Vill Gates =)
06/01/2008 16:51 LightField#14
isn't the only thing you need the initial packets tthat are sent to tbot's server ?

aren't those packets encrypted with a time stamp nowadays?

in anyways at the moment tbot creators are struggling to get out tbot 0529 and tbot 0527 doesn't work or something!

it would be nice to be proved wrong and return to before last christmas when we all botted using tbot :D
06/02/2008 05:22 miromirion#15
Quote:
Originally Posted by LightField View Post
isn't the only thing you need the initial packets tthat are sent to tbot's server ?

aren't those packets encrypted with a time stamp nowadays?

in anyways at the moment tbot creators are struggling to get out tbot 0529 and tbot 0527 doesn't work or something!

it would be nice to be proved wrong and return to before last christmas when we all botted using tbot :D
i think that why we use loopback