Hey, Leute ich wollte euch mal fragen ob dieser Sourcecode funktionieren würde? Der folgende Source ist zum bypassen eines Hackshields.
Ist ein Bypass für Gameguard. Würde der Code funktionieren oder fehlt da was.
MfG
Code:
#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 _memoryscanex($ah_handle, $pattern, $mask, $after = False, $iv_addrstart = 4194304, $iv_addrend = 16777215, $step = 51200)
If NOT IsArray($ah_handle) Then
SetError(1)
Return - 1
EndIf
$pattern = StringRegExpReplace($pattern, "[^0123456789ABCDEFabcdef.]", "")
If StringLen($pattern) = 0 Then
SetError(2)
Return - 2
EndIf
If StringLen($pattern) / 2 <> StringLen($mask) Then
SetError(4)
Return - 4
EndIf
Local $formatedpattern = ""
Local $bufferpattern
Local $buffermask
For $i = 0 To StringLen($mask) - 1
$bufferpattern = StringLeft($pattern, 2)
$pattern = StringRight($pattern, StringLen($pattern) - 2)
$buffermask = StringLeft($mask, 1)
$mask = StringRight($mask, StringLen($mask) - 1)
If $buffermask = "?" Then $bufferpattern = ".."
$formatedpattern = $formatedpattern & $bufferpattern
Next
$pattern = $formatedpattern
For $addr = $iv_addrstart To $iv_addrend Step $step-(StringLen($pattern) / 2 )
StringRegExp(_memoryread($addr, $ah_handle, "byte[" & $step & "]"), $pattern, 1, 2)
If NOT @error Then
If $after Then
Return StringFormat("0x%.8X", $addr + ((@extended - 2) / 2))
Else
Return StringFormat("0x%.8X", $addr + ((@extended - StringLen($pattern) - 2) / 2))
EndIf
EndIf
Next
SetError(3)
Return - 3
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 _memorypointerread($iv_address, $ah_handle, $av_offset, $sv_type = "dword")
If IsArray($av_offset) Then
If IsArray($ah_handle) Then
Local $iv_pointercount = UBound($av_offset) - 1
Else
SetError(2)
Return 0
EndIf
Else
SetError(1)
Return 0
EndIf
Local $iv_data[2], $i
Local $v_buffer = DllStructCreate("dword")
For $i = 0 To $iv_pointercount
If $i = $iv_pointercount Then
$v_buffer = DllStructCreate($sv_type)
If @error Then
SetError(@error + 2)
Return 0
EndIf
$iv_address = "0x" & Hex($iv_data[1] + $av_offset[$i])
DllCall($ah_handle[0], "int", "ReadProcessMemory", "int", $ah_handle[1], "int", $iv_address, "ptr", DllStructGetPtr($v_buffer), "int", DllStructGetSize($v_buffer), "int", "")
If @error Then
SetError(7)
Return 0
EndIf
$iv_data[1] = DllStructGetData($v_buffer, 1)
ElseIf $i = 0 Then
DllCall($ah_handle[0], "int", "ReadProcessMemory", "int", $ah_handle[1], "int", $iv_address, "ptr", DllStructGetPtr($v_buffer), "int", DllStructGetSize($v_buffer), "int", "")
If @error Then
SetError(7)
Return 0
EndIf
$iv_data[1] = DllStructGetData($v_buffer, 1)
Else
$iv_address = "0x" & Hex($iv_data[1] + $av_offset[$i])
DllCall($ah_handle[0], "int", "ReadProcessMemory", "int", $ah_handle[1], "int", $iv_address, "ptr", DllStructGetPtr($v_buffer), "int", DllStructGetSize($v_buffer), "int", "")
If @error Then
SetError(7)
Return 0
EndIf
$iv_data[1] = DllStructGetData($v_buffer, 1)
EndIf
Next
$iv_data[0] = $iv_address
Return $iv_data
EndFunc
Func _memorypointerwrite($iv_address, $ah_handle, $av_offset, $v_data, $sv_type = "dword")
If IsArray($av_offset) Then
If IsArray($ah_handle) Then
Local $iv_pointercount = UBound($av_offset) - 1
Else
SetError(2)
Return 0
EndIf
Else
SetError(1)
Return 0
EndIf
Local $iv_structdata, $i
Local $v_buffer = DllStructCreate("dword")
For $i = 0 To $iv_pointercount
If $i = $iv_pointercount Then
$v_buffer = DllStructCreate($sv_type)
If @error Then
SetError(@error + 3)
Return 0
EndIf
DllStructSetData($v_buffer, 1, $v_data)
If @error Then
SetError(8)
Return 0
EndIf
$iv_address = "0x" & Hex($iv_structdata + $av_offset[$i])
DllCall($ah_handle[0], "int", "WriteProcessMemory", "int", $ah_handle[1], "int", $iv_address, "ptr", DllStructGetPtr($v_buffer), "int", DllStructGetSize($v_buffer), "int", "")
If @error Then
SetError(9)
Return 0
Else
Return $iv_address
EndIf
ElseIf $i = 0 Then
DllCall($ah_handle[0], "int", "ReadProcessMemory", "int", $ah_handle[1], "int", $iv_address, "ptr", DllStructGetPtr($v_buffer), "int", DllStructGetSize($v_buffer), "int", "")
If @error Then
SetError(3)
Return 0
EndIf
$iv_structdata = DllStructGetData($v_buffer, 1)
Else
$iv_address = "0x" & Hex($iv_structdata + $av_offset[$i])
DllCall($ah_handle[0], "int", "ReadProcessMemory", "int", $ah_handle[1], "int", $iv_address, "ptr", DllStructGetPtr($v_buffer), "int", DllStructGetSize($v_buffer), "int", "")
If @error Then
SetError(3)
Return 0
EndIf
$iv_structdata = DllStructGetData($v_buffer, 1)
EndIf
Next
EndFunc
Func _memoryscan($ah_handle, $pattern, $after = False, $iv_addrstart = 4194304, $iv_addrend = 16777215, $step = 51200)
If NOT IsArray($ah_handle) Then
SetError(1)
Return - 1
EndIf
$pattern = StringRegExpReplace($pattern, "\?", ".")
$pattern = StringRegExpReplace($pattern, "[^0123456789ABCDEFabcdef.]", "")
If StringLen($pattern) = 0 Then
SetError(2)
Return - 2
EndIf
For $addr = $iv_addrstart To $iv_addrend Step $step-(StringLen($pattern) / 2 )
StringRegExp(_memoryread($addr, $ah_handle, "byte[" & $step & "]"), $pattern, 1, 2)
If NOT @error Then
If $after Then
Return StringFormat("0x%.8X", $addr + ((@extended - 2) / 2))
Else
Return StringFormat("0x%.8X", $addr + ((@extended - StringLen($pattern) - 2) / 2))
EndIf
EndIf
Next
Return - 3
EndFunc
Func _modulegetbaseaddress($hprocess, $smodulename)
Local $modulesmax = DllStructCreate("ptr[1024]")
Local $iprocessmodules = DllCall("psapi.dll", "BOOL", "EnumProcessModules", "HANDLE", $hprocess, "ptr", DllStructGetPtr($modulesmax), "DWORD", DllStructGetSize($modulesmax), "DWORD*", "")
Local $smodulebasename
For $i = 1 To $iprocessmodules[4] / 4
$smodulebasename = DllCall("psapi.dll", "DWORD", "GetModuleBaseNameW", "HANDLE", $hprocess, "ptr", DllStructGetData($modulesmax, 1, $i), "wstr", "", "DWORD", 256)
If $smodulebasename[3] = $smodulename Then Return DllStructGetData($modulesmax, 1, $i)
Next
EndFunc
If NOT FileExists(@ScriptDir & "\....exe") Then
MsgBox(0, "", "Please put Bypass in ... Folder!")
Exit
EndIf
FileDelete(@ScriptDir & "\...2.exe")
FileDelete(@ScriptDir & "\...3.exe")
FileCopy(@ScriptDir & "\....exe", @ScriptDir & "\....exe")
FileCopy(@ScriptDir & "\....exe", @ScriptDir & "\...3.exe")
$gameguardmessage = 14631678
$gameinitfail = 14355456
$gamealreadyopen = 14355104
ToolTip("Waiting for ....exe...", 0, 0)
If NOT ProcessExists("....exe") Then
Run(@ScriptDir & "\....exe", @ScriptDir)
ProcessWait("....exe")
bypassit(ProcessExists("....exe"))
ElseIf NOT ProcessExists("...2.exe") Then
Run(@ScriptDir & "\...2.exe", @ScriptDir)
ProcessWait("...2.exe")
bypassit(ProcessExists("...2.exe"))
ElseIf NOT ProcessExists("...3.exe") Then
Run(@ScriptDir & "\...3.exe", @ScriptDir)
ProcessWait("...3.exe")
bypassit(ProcessExists("...3.exe"))
EndIf
Func bypassit($pid)
$open = _memoryopen($pid)
While NOT _memoryread($gameguardmessage, $open, "byte") = 116
Sleep(1)
WEnd
_memorywrite($gameguardmessage, $open, 235, "byte")
_memorywrite($gameinitfail, $open, 235, "byte")
_memorywrite($gamealreadyopen, $open, 235, "byte")
ToolTip("Bypassed!", 0, 0)
Sleep(2000)
Exit
EndFunc
Ist ein Bypass für Gameguard. Würde der Code funktionieren oder fehlt da was.
MfG