$hp1 = _MemoryScanEx($Open, "D9 45 FC 8B E5 5D C3 CC CC CC CC CC CC CC CC CC CC CC CC CC 55 8B EC 51 89 4D FC 8D 45 08 50 8B 0D 54 85","xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx")
$MyHP = _AllocMem(ProcessExists("процесс приложения"), 2048)
$page = _AllocMem(ProcessExists("процесс приложения"), 2048)
Case $HP
If GUICtrlRead($HP) = 1 Then
$hex = Hex($MyHP, 8)
$byte[0] = 4
$step = 1
For $i = 1 To 8
$byte[$step] = StringRight($hex, 2)
$i += 1
$hex = StringLeft($hex, 8 - $i)
$step += 1
Next
_MemoryWrite($hp1, $open, "0xE9" & Byte_Reverse(Calc($page + 1, $hp1+1)), "byte[5]")
_MemoryWrite($page, $open, "0xA1" & $byte[1] & $byte[2] & $byte[3] & $byte[4], "byte[5]")
_MemoryWrite($page + 0x5, $open, "0x8945FCD945FC8BE5E9" & Byte_Reverse(Calc($page + 0xD, $hp1+5, 1)), "byte[13]")
_MemoryWrite($MyHP, $open, "200", "float")
Else
_memorywrite($hp1,$open,0x5DE58BFC45D9,'byte[6]')
EndIf
Func Calc($dwCall, $dwAddress, $i = 0)
If Not IsInt($dwCall) Then $dwCall = Dec(StringReplace($dwCall, "0x", ""))
If Not IsInt($dwAddress) Then $dwAddress = Dec(StringReplace($dwAddress, "0x", ""))
If $i = 1 Then
Local $tmp = $dwCall
$dwCall = $dwAddress
$dwAddress = $tmp
EndIf
Return Hex($dwCall - $dwAddress - 5, 8)
EndFunc ;==>Calc
Func Byte_Reverse($sBytes)
Local $sReversed = ""
For $i = StringLen($sBytes) - 1 To 1 Step -2
$sReversed &= StringMid($sBytes, $i, 2)
Next
Return $sReversed
EndFunc ;==>Byte_Reverse
Func _AllocMem($ProcessId, $size)
If $ProcessId == 0 Then Return SetError(1, "", False)
$Kernel32 = DllOpen("kernel32.dll")
If @error Then Return SetError(4, "", False)
$hProcess = DllCall($Kernel32, "DWORD", "OpenProcess", "DWORD", 0x1F0FFF, "int", 0, "DWORD", $ProcessId)
If @error Then Return SetError(6, "", False)
$hModule = DllCall($Kernel32, "DWORD", "GetModuleHandleA", "str", "kernel32.dll")
If @error Then Return SetError(7, "", False)
$lpStartAddress = DllCall($Kernel32, "DWORD", "GetProcAddress", "DWORD", $hModule[0], "str", "LoadLibraryA")
If @error Then Return SetError(8, "", False)
$lpParameter = DllCall($Kernel32, "DWORD", "VirtualAllocEx", "int", $hProcess[0], "int", 0, "int", $size, "DWORD", 0x3000, "int", 4)
If @error Then Return SetError(9, "", False)
DllCall($Kernel32, "BOOL", "CloseHandle", "DWORD", $hProcess[0])
DllClose($Kernel32)
Return $lpParameter[0]
EndFunc ;==>_AllocMem