;-- TIME_STAMP 2019-03-26 17:48:46 v 0.1 ; ============================================================================= ; AutoIt Binary UDF (2011.9.15) ; Purpose: Functions About Binary Type Variable Management ; Author: Ward ; Modified by: Bitnugger ; 1. Unused variables commented out ; _BinaryReplace(): $BinaryLen, $SearchLen, $ReplaceLen ; _BinaryRandom(): $Ret ; 2. Number of parameters changed for _BitXOR64(), _BitAND64() and _BitOR64() ; From 20 to 255 ; 3. Change the Code in _BinaryAnd, _BinaryOR, _BinaryXOR, _BinaryNot, ; _BinaryShift, _BinaryRotate, _BinaryReverse, _BinaryInBin, _BinaryReplace, ; _BinaryRandom ; From: ; Static $CodeBufferPtr ; If Not $CodeBufferPtr Then ; Local $Code ; If @AutoItX64 Then ; $Code = Binary("0x...") ; Else ; $Code = Binary("0x...") ; EndIf ; $CodeBufferPtr = __BinaryCodeBufferAlloc($Code) ; EndIf ; To: ; Local Static $aCode = ["0x...(X86)", "0x...(X64)"], _ ; $CodeBufferPtr = __BinaryCodeBufferAlloc($aCode[@AutoItX64]) ; ============================================================================= ; ============================================================================= ; Functions List ; _BinaryPeek($Binary, $Start, $Type = "byte") ; _BinaryPoke($Binary, $Start, $Value, $Type = "byte") ; _BinaryAnd($Binary1, $Binary2) ; _BinaryOR($Binary1, $Binary2) ; _BinaryXOR($Binary1, $Binary2) ; _BinaryNot($Binary) ; _BinaryShift($Binary, $Shift) ; _BinaryRotate($Binary, $Shift) ; _BinaryReverse($Binary) ; _BinaryInBin($Binary, $Search, $Occur = 1, $Start = 1) ; _BinaryReplace($Binary, $Search, $Replace, $Occur = 0) ; _BinarySplit($Binary, $Search) ; _BinaryRandom($Length, $Start = 0, $To = 255) ; _BinaryRight($Binary, $Count) ; _BinaryLeft($Binary, $Count) ; _BinaryTrimLeft($Binary, $Count) ; _BinaryTrimRight($Binary, $Count) ; _BinaryToInt16($Binary) ; _BinaryFromInt16($Value) ; _BinaryToInt32($Binary) ; _BinaryFromInt32($Value) ; _BinaryToInt64($Binary) ; _BinaryFromInt64($Value) ; _BinaryToDouble($Binary) ; _BinaryFromDouble($Value) ; _BinaryToMemory($Binary, $Ptr) ; _BinaryFromMemory($Ptr, $Size) ; _BinaryToDLLStruct($Binary) ; _BinaryFromDLLStruct(ByRef $DLLStruct) ; _BinaryFillDLLStruct($Binary, ByRef $DLLStruct) ; _BitShift64($Value, $Shift) ; _BitRotate64($Value, $Shift) ; _BitNOT64($Value) ; _BitOR64($Value1, $Value2, [$Value3, ...]) ; _BitAND64($Value1, $Value2, [$Value3, ...]) ; _BitXOR64($Value1, $Value2, [$Value3, ...]) ; _Hex64($Value, $Length = 16) ; _Dec64($HexString) ; ============================================================================= #Include-once #Include Global $__Binary_Kernel32Dll = DllOpen("kernel32.dll") Global $__Binary_User32Dll = DllOpen("user32.dll") Global $__Binary_MsvcrtDll = DllOpen("msvcrt.dll") Func __Binary_lstrlenA($Ptr) Local $Ret = DllCall($__Binary_Kernel32Dll, "int", "lstrlenA", "ptr", $Ptr) If @Error Then Return SetError(@Error, @Extended, 0) Return $Ret[0] EndFunc ;==>__Binary_lstrlenA Func __Binary_lstrlenW($Ptr) Local $Ret = DllCall($__Binary_Kernel32Dll, "int", "lstrlenW", "ptr", $Ptr) If @Error Then Return SetError(@Error, @Extended, 0) Return $Ret[0] EndFunc ;==>__Binary_lstrlenW Func __Binary_Realloc($Ptr, $Size) Local $Ret = DllCall($__Binary_MsvcrtDll, "ptr:cdecl", "realloc", "ptr", $Ptr, "ulong_ptr", $Size) If @Error Then Return SetError(@Error, @Extended, 0) If $Ret[0] = 0 Then Exit MsgBox(16, "AutoIt Binary UDF Error", "Out of memory !!") Return $Ret[0] EndFunc ;==>__Binary_Realloc Func __Binary_Free($Ptr) DllCall($__Binary_MsvcrtDll, "ptr:cdecl", "free", "ptr", $Ptr) If @Error Then Return SetError(@Error, @Extended, 0) EndFunc ;==>__Binary_Free Func __BinaryCodeBufferAlloc($Code) Local $Ptr = _MemVirtualAlloc(0, BinaryLen($Code), $MEM_COMMIT, $PAGE_EXECUTE_READWRITE) If $Ptr = 0 Then Exit MsgBox(16, "AutoIt Binary UDF Error", "Out of memory !!") Local $Buffer = DllStructCreate("byte[" & BinaryLen($Code) & "]", $Ptr) DllStructSetData($Buffer, 1, $Code) Return $Ptr EndFunc ;==>__BinaryCodeBufferAlloc Func _BinaryPeek($Binary, $Start, $Type = "byte") $Binary = Binary($Binary) If $Start > BinaryLen($Binary) Or $Start = 0 Then Return SetError(1, 0, "") Local $Buffer = DllStructCreate("byte[" & (BinaryLen($Binary) + 8) & "]") DllStructSetData($Buffer, 1, $Binary) Local $Ptr = DllStructGetPtr($Buffer) + $Start - 1, $Len = -1 If $Type = "str" Then $Len = __Binary_lstrlenA($Ptr) $Type = "char[" & $Len & "]" ElseIf $Type = "wstr" Then $Len = __Binary_lstrlenW($Ptr) $Type = "wchar[" & $Len & "]" EndIf If $Len = 0 Then Return "" Local $Target = DllStructCreate($Type, $Ptr) If DllStructGetSize($Target) = 0 Or DllStructGetSize($Target) > BinaryLen($Binary) - $Start + 1 Then Return SetError(1, 0, "") Return DllStructGetData($Target, 1) EndFunc ;==>_BinaryPeek Func _BinaryPoke($Binary, $Start, $Value, $Type = "byte") $Binary = Binary($Binary) If $Start > BinaryLen($Binary) Or $Start = 0 Then Return SetError(1, 0, "") Local $Buffer = DllStructCreate("byte[" & (BinaryLen($Binary)) & "]") DllStructSetData($Buffer, 1, $Binary) Local $Ptr = DllStructGetPtr($Buffer) + $Start - 1 If $Type = "str" Then $Value = String($Value) $Type = "char[" & (StringLen($Value) + 1) & "]" ElseIf $Type = "wstr" Then $Value = String($Value) $Type = "wchar[" & (StringLen($Value) + 1) & "]" EndIf Local $Target = DllStructCreate($Type, $Ptr) If DllStructGetSize($Target) = 0 Or DllStructGetSize($Target) > BinaryLen($Binary) - $Start + 1 Then Return SetError(1, 0, "") DllStructSetData(DllStructCreate($Type, $Ptr), 1, $Value) Return DllStructGetData($Buffer, 1) EndFunc ;==>_BinaryPoke Func _BinaryAnd($Binary1, $Binary2) Local Static $aCode = _ [Binary("0x5589E556578B7D088B75108B4D0C31D289C848F775148A041620440FFFE2EF5F5E5DC21000"), _ Binary("0x4989CA4863CA31D289C8FFC841F7F14863D2418A04104120440AFFE2E9C3")], _ $CodeBufferPtr = __BinaryCodeBufferAlloc($aCode[@AutoItX64]) $Binary1 = Binary($Binary1) $Binary2 = Binary($Binary2) Local $Len1 = BinaryLen($Binary1) Local $Buffer1 = DllStructCreate("byte[" & $Len1 & "]") DllStructSetData($Buffer1, 1, $Binary1) Local $Len2 = BinaryLen($Binary2) Local $Buffer2 = DllStructCreate("byte[" & $Len2 & "]") DllStructSetData($Buffer2, 1, $Binary2) If $Len1 And $Len2 Then DllCall($__Binary_User32Dll, "none", "CallWindowProc", "ptr", $CodeBufferPtr, _ "ptr", DllStructGetPtr($Buffer1), _ "uint", $Len1, _ "ptr", DllStructGetPtr($Buffer2), _ "uint", $Len2) EndIf Return DllStructGetData($Buffer1, 1) EndFunc ;==>_BinaryAnd Func _BinaryOR($Binary1, $Binary2) Local Static $aCode = _ [Binary("0x5589E556578B7D088B75108B4D0C31D289C848F775148A041608440FFFE2EF5F5E5DC21000"), _ Binary("0x4989CA4863CA31D289C8FFC841F7F14863D2418A04104108440AFFE2E9C3")], _ $CodeBufferPtr = __BinaryCodeBufferAlloc($aCode[@AutoItX64]) $Binary1 = Binary($Binary1) $Binary2 = Binary($Binary2) Local $Len1 = BinaryLen($Binary1) Local $Buffer1 = DllStructCreate("byte[" & $Len1 & "]") DllStructSetData($Buffer1, 1, $Binary1) Local $Len2 = BinaryLen($Binary2) Local $Buffer2 = DllStructCreate("byte[" & $Len2 & "]") DllStructSetData($Buffer2, 1, $Binary2) If $Len1 And $Len2 Then DllCall($__Binary_User32Dll, "none", "CallWindowProc", "ptr", $CodeBufferPtr, _ "ptr", DllStructGetPtr($Buffer1), _ "uint", $Len1, _ "ptr", DllStructGetPtr($Buffer2), _ "uint", $Len2) EndIf Return DllStructGetData($Buffer1, 1) EndFunc ;==>_BinaryOR Func _BinaryXOR($Binary1, $Binary2) Local Static $aCode = _ [Binary("0x5589E556578B7D088B75108B4D0C31D289C848F775148A041630440FFFE2EF5F5E5DC21000"), _ Binary("0x4989CA4863CA31D289C8FFC841F7F14863D2418A04104130440AFFE2E9C3")], _ $CodeBufferPtr = __BinaryCodeBufferAlloc($aCode[@AutoItX64]) $Binary1 = Binary($Binary1) $Binary2 = Binary($Binary2) Local $Len1 = BinaryLen($Binary1) Local $Buffer1 = DllStructCreate("byte[" & $Len1 & "]") DllStructSetData($Buffer1, 1, $Binary1) Local $Len2 = BinaryLen($Binary2) Local $Buffer2 = DllStructCreate("byte[" & $Len2 & "]") DllStructSetData($Buffer2, 1, $Binary2) If $Len1 And $Len2 Then DllCall($__Binary_User32Dll, "none", "CallWindowProc", "ptr", $CodeBufferPtr, _ "ptr", DllStructGetPtr($Buffer1), _ "uint", $Len1, _ "ptr", DllStructGetPtr($Buffer2), _ "uint", $Len2) EndIf If $Len1 = 0 Then Return Binary("") Return DllStructGetData($Buffer1, 1) EndFunc ;==>_BinaryXOR Func _BinaryNot($Binary) Local Static $aCode = _ [Binary("0x5589E58B45088B4D0CF65408FFE2FA5DC21000"), _ Binary("0x4887CAF6540AFFE2FAC3")], _ $CodeBufferPtr = __BinaryCodeBufferAlloc($aCode[@AutoItX64]) $Binary = Binary($Binary) Local $Len = BinaryLen($Binary) Local $Buffer = DllStructCreate("byte[" & $Len & "]") DllStructSetData($Buffer, 1, $Binary) If $Len Then DllCall($__Binary_User32Dll, "none", "CallWindowProc", "ptr", $CodeBufferPtr, _ "ptr", DllStructGetPtr($Buffer), _ "uint", $Len, _ "int", 0, _ "int", 0) EndIf Return DllStructGetData($Buffer, 1) EndFunc ;==>_BinaryNot Func _BinaryShift($Binary, $Shift) Local Static $aCode = _ [Binary("0x5589E55657538B7D088B5D0C8B751083FB00743183FE00742C7F16F7DE89D989FAF8D0129F497404429EEBF64E75EEEB1489D98D540FFFF8D01A9F4974044A9EEBF64E75EC5B5F5E5DC21000"), _ Binary("0x4989CA4C63CA4983F90074434183F800743D7F1F41F7D84C89C94C89D2F8D0129F48FFC9740648FFC29EEBF241FFC875E6EB1C4C89C9498D540AFFF8D01A9F48FFC9740648FFCA9EEBF241FFC875E4C3")], _ $CodeBufferPtr = __BinaryCodeBufferAlloc($aCode[@AutoItX64]) $Binary = Binary($Binary) Local $Len = BinaryLen($Binary) Local $Buffer = DllStructCreate("byte[" & $Len & "]") DllStructSetData($Buffer, 1, $Binary) If $Len Then DllCall($__Binary_User32Dll, "none", "CallWindowProc", "ptr", $CodeBufferPtr, _ "ptr", DllStructGetPtr($Buffer), _ "uint", $Len, _ "int", $Shift, _ "int", 0) EndIf Return DllStructGetData($Buffer, 1) EndFunc ;==>_BinaryShift Func _BinaryRotate($Binary, $Shift) Local Static $aCode = _ [Binary("0x5589E55657538B7D088B5D0C8B751083FB00744183FE00743C7F1FF7DE89D98D540FFF0FB607660FBAE000D01A9F4974044A9EEBF64E75E5EB1B89D989FA0F" & _ "B6441FFF660FBAE007D0129F497404429EEBF64E75E55B5F5E5DC21000"), _ Binary("0x4989CA4C63CA4983F90074554183F800744F7F2941F7D84C89C9498D540AFF410FB602660FBAE000D01A9F48FFC9740648FFCA9EEBF241FFC875DCEB244C89" & _ "C94C89D2430FB6440AFF660FBAE007D0129F48FFC9740648FFC29EEBF241FFC875DCC3")], _ $CodeBufferPtr = __BinaryCodeBufferAlloc($aCode[@AutoItX64]) $Binary = Binary($Binary) Local $Len = BinaryLen($Binary) Local $Buffer = DllStructCreate("byte[" & $Len & "]") DllStructSetData($Buffer, 1, $Binary) If $Len Then DllCall($__Binary_User32Dll, "none", "CallWindowProc", "ptr", $CodeBufferPtr, _ "ptr", DllStructGetPtr($Buffer), _ "uint", $Len, _ "int", $Shift, _ "int", 0) EndIf Return DllStructGetData($Buffer, 1) EndFunc ;==>_BinaryRotate Func _BinaryReverse($Binary) Local Static $aCode = _ [Binary("0x8B4424048B5424088D5410FFEB0E8A0A32088808320A880A30084A4039D072EEC21000"), _ Binary("0x4889C84863D2488D5410FFEB128A0A32088808320A880A300848FFCA48FFC04839D072E9C3")], _ $CodeBufferPtr = __BinaryCodeBufferAlloc($aCode[@AutoItX64]) $Binary = Binary($Binary) Local $Len = BinaryLen($Binary) Local $Buffer = DllStructCreate("byte[" & $Len & "]") DllStructSetData($Buffer, 1, $Binary) If $Len Then DllCall($__Binary_User32Dll, "none", "CallWindowProc", "ptr", $CodeBufferPtr, _ "ptr", DllStructGetPtr($Buffer), _ "uint", $Len, _ "int", 0, _ "int", 0) EndIf Return DllStructGetData($Buffer, 1) EndFunc ;==>_BinaryReverse Func _BinaryInBin($Binary, $Search, $Occur = 1, $Start = 1) Local Static $aCode = _ [Binary("0x5589E583EC24895DF48B4D088975F8897DFC8B398B59088B51108B7104897DF08B45F0895DE88B590C8945E031C085DB8955E48B51148975EC743A837DE400" & _ "7E51C745DC0100000085D27538395DEC7222FC8B75E039DB89D98B7DE8F3A67505FF4DE47455FF4DEC8B55DC0155E0395DEC73DF31C08B5DF48B75F88B7DFC89" & _ "EC5DC210004A3B55EC73EB0155E02955ECEBBA7DDFF75DE48B45ECC745DCFFFFFFFF29D80145E085D274A24A31C03B55EC73C32955E02955ECEB928B4DF0294D" & _ "E08B45E040EBAF"), _ Binary("0x555756534883EC08448B51188B5120448B491C4C8B59108B4108488B294585D274504183F9007E5585D24989E8BB01000000741083EA0139D076374189D029" & _ "D04D8D04284139C277294489D24863DBEB034901D84839D24C89C64C89DF4889D1F3A675064183E901741A83E8014139C276DF4883C40831C05B5E5F5DC37515" & _ "4989E8EBC04883C4084129E85B5E5F418D40015DC34189C041F7D9BBFFFFFFFF4529D04D8D0428EB9C")], _ $CodeBufferPtr = __BinaryCodeBufferAlloc($aCode[@AutoItX64]) $Binary = Binary($Binary) $Search = Binary($Search) Local $Len1 = BinaryLen($Binary) Local $Buffer1 = DllStructCreate("byte[" & $Len1 & "]") DllStructSetData($Buffer1, 1, $Binary) Local $Len2 = BinaryLen($Search) Local $Buffer2 = DllStructCreate("byte[" & $Len2 & "]") DllStructSetData($Buffer2, 1, $Search) Local $Var = DllStructCreate("ptr bin1; uint len1; ptr bin2; uint len2;int occur; uint start") DllStructSetData($Var, "bin1", DllStructGetPtr($Buffer1)) DllStructSetData($Var, "bin2", DllStructGetPtr($Buffer2)) DllStructSetData($Var, "len1", $Len1) DllStructSetData($Var, "len2", $Len2) DllStructSetData($Var, "occur", $Occur) DllStructSetData($Var, "start", $Start) Local $Ret = DllCall($__Binary_User32Dll, "uint", "CallWindowProc", "ptr", $CodeBufferPtr, _ "ptr", DllStructGetPtr($Var), _ "int", 0, _ "int", 0, _ "int", 0) Return $Ret[0] EndFunc ;==>_BinaryInBin Func _BinaryReplace($Binary, $Search, $Replace, $Occur = 0) Static $ReAlloc = DllCallbackRegister("__Binary_Realloc", "ptr:cdecl", "ptr;uint") Static $ReAllocPtr = DllCallbackGetPtr($ReAlloc) Local Static $aCode = _ [Binary("0x5557565383EC5C8B442470C744242C000000008B50188B580C8B48148B7010895424408B68088B500485DB8B00894C243C897424488954243089442434750E" & _ "8B44242C83C45C5B5E5F5DC210008B742440C744244C0000000085F60F88D6010000395C243C8B4424300F8683000000894424288B442434896C242CC7442438" & _ "0000000089C53B5C2428775031C0EB0D8B54242883C00129C239D3773F8B7C242C8D74050039DB8974244489D9F3A675DF8B54244485D2742383442438018B4C" & _ "2440394C2438740C29EA01DA01D529542428EBB28B4C243885C974EC8B44243C8B7424308B6C242C29D80FAF4424388D44061089442404C7042400000000FF54" & _ "247CC74424440000000085C08944242C894424380F8426FFFFFF3B5C24300F87A40000008B4424308B4C243401C1894C2428EB0B83E80139C30F87890000008B" & _ "74242889EF89D929C639DB8974241CF3A675E18B54241C85D2746D89D68B4424348B5424382B74243483442444018914248974240889442404E8320100008B7C" & _ "24388B4C243C8B44244801F701DE893C24894C240889442404E8120100008B542440037C243C017424342974243039542444897C24380F855EFFFFFF8B442444" & _ "85C00F8452FFFFFF8B7424308B4424348B5424388974240889442404891424E8CC0000008B4424388B4C24788B7C244C01F08B7424442B44242C85FF89018B44" & _ "247489300F8436FEFFFF8B44242C8B118D5410FF39D00F8324FEFFFF0FB60A32088808320A880A83EA01300883C00139D072E9E908FEFFFF8D5410FFF75C2440" & _ "39D073170FB60A32088808320A880A83EA01300883C00139D072E98D541DFF89E839D573170FB60A32088808320A880A83EA01300883C00139D072E98B442448" & _ "8B74243C8D5430FF39D073170FB60A32088808320A880A83EA01300883C00139D072E9C744244C01000000E9B2FDFFFF56578B7C240C8B7424108B4C241485C9" & _ "742FFC83F9087227F7C7010000007402A449F7C702000000740566A583E90289CAC1E902F3A589D183E103F3A4EB02F3A45F5EC3"), _ Binary("0x41574531FF415641554154555756534883EC688B6918488B41204C898424C000000048899424B8000000448B592C448B412885ED48894424484C8B6110448B" & _ "71084C8B2975144883C4684C89F85B5E5F5D415C415D415E415FC34585DBC744245C000000000F88DB0100004139E84489F276724589F24D89EFC74424400000" & _ "000089EA4439D5774E4489D34C89F8EB0B83EB0139DD773F4883C0014839D24889C64C89E74889D1F3A675E54885C07426834424400144395C2440741289E944" & _ "29F98D040189C14129C24901CFEBB58B74244085F674E64489C229EA0FAF542440418D54161031C9448944243844895C242841FFD1448B4424384531D24885C0" & _ "4989C74989C189EB448B5C24284589C04C894424400F842CFFFFFF48894424504589D74439F50F87940000004489F24C89E8EB0F83EA0139D50F878100000048" & _ "83C0014839DB4889C64C89E74889D9F3A675E14885C0746889C74C89EA4C89C94429EF44895C24284C894C243089FE01EF4183C7014989F04129FEE856010000" & _ "4C8B4C24304C8B442440488B542448498D34314889F1E83B010000448B5C24284C8B4C244089F84901C54539DF4E8D0C0E0F856CFFFFFF4585FF0F8463FFFFFF" & _ "4589F64589FA4C89C94D89F04C89EA4C8B7C24504C894C24304489542438E8F30000004C8B4C24308B5C245C488B8C24C0000000448B542438488B8424B80000" & _ "004D01F14529F985DB4489094489100F8432FEFFFF8B114C89F8498D5417FF4939D70F831FFEFFFF0FB60A32088808320A880A4883EA0130084883C0014839D0" & _ "72E6E900FEFFFF4489F241F7DB4C89E8498D5415FF4939D5731A0FB60A32088808320A880A4883EA0130084883C0014839D072E689EA4C89E0498D5414FF4939" & _ "D4731A0FB60A32088808320A880A4883EA0130084883C0014839D072E6488B4424484489C2488D5410FF4839D0731A0FB60A32088808320A880A4883EA013008" & _ "4883C0014839D072E6C744245C01000000E996FDFFFF56574889CF4889D64C89C1FCF3A45F5EC3")], _ $CodeBufferPtr = __BinaryCodeBufferAlloc($aCode[@AutoItX64]) $Binary = Binary($Binary) $Search = Binary($Search) $Replace = Binary($Replace) ;~ Local $BinaryLen = BinaryLen($Binary) ;~ Local $SearchLen = BinaryLen($Search) ;~ Local $ReplaceLen = BinaryLen($Replace) Local $Len1 = BinaryLen($Binary) Local $Buffer1 = DllStructCreate("byte[" & $Len1 & "]") DllStructSetData($Buffer1, 1, $Binary) Local $Len2 = BinaryLen($Search) Local $Buffer2 = DllStructCreate("byte[" & $Len2 & "]") DllStructSetData($Buffer2, 1, $Search) Local $Len3 = BinaryLen($Replace) Local $Buffer3 = DllStructCreate("byte[" & $Len3 & "]") DllStructSetData($Buffer3, 1, $Replace) Local $Var = DllStructCreate("ptr bin1; uint len1; ptr bin2; uint len2; ptr bin3; uint len3; int occur; ") DllStructSetData($Var, "bin1", DllStructGetPtr($Buffer1)) DllStructSetData($Var, "bin2", DllStructGetPtr($Buffer2)) DllStructSetData($Var, "bin3", DllStructGetPtr($Buffer3)) DllStructSetData($Var, "len1", $Len1) DllStructSetData($Var, "len2", $Len2) DllStructSetData($Var, "len3", $Len3) DllStructSetData($Var, "occur", $Occur) Local $Ret = DllCall($__Binary_User32Dll, "uint", "CallWindowProc", "ptr", $CodeBufferPtr, _ "ptr", DllStructGetPtr($Var), _ "uint*", 0, _ "uint*", 0, _ "ptr", $ReAllocPtr) Local $Result, $Count If $Ret[0] Then Local $Buffer = DllStructCreate("byte[" & $Ret[4] & "]", $Ret[0]) $Result = DllStructGetData($Buffer, 1) $Count = $Ret[3] __Binary_Free($Ret[0]) Else $Result = DllStructGetData($Buffer1, 1) $Count = 0 EndIf Return SetExtended($Count, $Result) EndFunc ;==>_BinaryReplace Func _BinarySplit($Binary, $Search) $Binary = Binary($Binary) $Search = Binary($Search) Local $SearchLen = BinaryLen($Search) Local $Array[1] = [0] Do Local $Pos = _BinaryInBin($Binary, $Search) $Array[0] += 1 ReDim $Array[$Array[0] + 1] $Array[$Array[0]] = BinaryMid($Binary, 1, $Pos - 1) $Binary = BinaryMid($Binary, $Pos + $SearchLen) Until $Pos = 0 Return $Array EndFunc ;==>_BinarySplit Func _BinaryRandom($Length, $Start = 0, $To = 255, $Seed = 0) Local Static $aCode = _ [Binary("0x5531D257565381ECE40900008BB424040A00008B9C24000A0000C78424D80900000000000085F6744C89742418B8010000008D4C241889F2C1EA1E31F269F2" & _ "6589076C8D343089348183C0013D7002000075E38D44241C89CA898424DC0900008D84244C060000898C24D8090000898424E0090000885C2413C1EB08385C24" & _ "13760A0FB644241393884424138B8424FC09000085C00F84690100000FB6DB0FB644241383C3018DB424D8090000895C240C8D4C241831DB2944240C893424EB" & _ "5289C2C1EA0B31C289D0C1E0072580562C9D31D031D289C6C1E60F81E60000C6EF31C689F0C1E81231F0F774240C8B8424F80900000254241388141883C30139" & _ "9C24FC0900000F86F90000008B9424D809000085D20F84850000008BAC24E00900008BBC24DC0900008D750489F8897424048B008B3289BC24D809000083C704" & _ "89BC24DC0900008944240825FFFFFF7F81E60000008009F08B742408D1E883E601F7DE81E6DFB0089931F08B342433450089028B54240439F2899424E0090000" & _ "74153B3C240F8536FFFFFF898C24DC090000E92AFFFFFF898C24E0090000EBE20F3131D0BE010000008944241889C2C1EA1E31C269C26589076C01F08904B183" & _ "C60181FE7002000075E38D44241C8D94244C06000089C78DB42450060000899424E00900008DAC244C06000089CA898C24D8090000898424DC09000089742404" & _ "E92DFFFFFF81C4E40900005B5E5F5DC21000"), _ Binary("0x41574156415541545531ED5756534881ECF80900004585C948C78424D009000000000000745E4C8D54241044894C2410B801000000498D72044489CBC1EB1E" & _ "4431CB4469CB6589076C468D0C0883C00144890E4883C6043D7002000075DB498D42044C899424D00900004C89D548898424D8090000498D8234060000488984" & _ "24E00900004589C341C1E8084538C376034587D885D20F84730100004C8D542410450FB6C0410FB6C34183C00183EA014129C0498D8238060000488D5C110149" & _ "8D7204498DBA340600004D8D8AC00900004889442408EB4789C2C1EA0B31C289D0C1E0072580562C9D31D031D289C5C1E50F81E50000C6EF31C589E8C1E81231" & _ "E841F7F0418D141388114883C1014839D90F84F8000000488BAC24D00900004885ED0F84870000004C8BBC24E00900004C8BA424D80900004D8D6F044C89E044" & _ "8B308B55004C89A424D00900004983C4044C89AC24E00900004C89A424D80900004489F081E2000000804183E60125FFFFFF7F41F7DE09D04181E6DFB00899D1" & _ "E84431F04133074D39CD89450074164D39CC0F8540FFFFFF4C899424D8090000E933FFFFFF4C899424E0090000EBE00F3131D04989F4BD010000008944241089" & _ "C2C1EA1E31C269C26589076C01E883C501418904244983C40481FD7002000075DE4C899424D00900004889B424D80900004889F04889BC24E00900004C8B6C24" & _ "084C89D54989FF4989F4E930FFFFFF4881C4F80900005B5E5F5D415C415D415E415FC3")], _ $CodeBufferPtr = __BinaryCodeBufferAlloc($aCode[@AutoItX64]) If $Length = 0 Then Return Binary("") Local $Buffer = DllStructCreate("byte[" & $Length & "]") ;~ Local $Ret = DllCall($__Binary_User32Dll, "uint", "CallWindowProc", "ptr", $CodeBufferPtr, _ DllCall($__Binary_User32Dll, "uint", "CallWindowProc", "ptr", $CodeBufferPtr, _ "ptr", DllStructGetPtr($Buffer), _ "uint", $Length, _ "word", $To * 256 + $Start, _ "uint", $Seed) Return DllStructGetData($Buffer, 1) EndFunc ;==>_BinaryRandom Func _BinaryRight($Binary, $Count) Return BinaryMid($Binary, BinaryLen($Binary) - $Count + 1) EndFunc ;==>_BinaryRight Func _BinaryLeft($Binary, $Count) Return BinaryMid($Binary, 1, $Count) EndFunc ;==>_BinaryLeft Func _BinaryTrimLeft($Binary, $Count) Return BinaryMid($Binary, $Count + 1) EndFunc ;==>_BinaryTrimLeft Func _BinaryTrimRight($Binary, $Count) Return BinaryMid($Binary, 1, BinaryLen($Binary) - $Count) EndFunc ;==>_BinaryTrimRight Func _BinaryToInt16($Binary) Return BitAND(Int(Binary($Binary)), 0xFFFF) EndFunc ;==>_BinaryToInt16 Func _BinaryFromInt16($Value) Return _BinaryLeft(Binary(BitAND($Value, 0xFFFF)), 2) EndFunc ;==>_BinaryFromInt16 Func _BinaryToInt32($Binary) Return BitAND(Int(Binary($Binary)), 0xFFFFFFFF) EndFunc ;==>_BinaryToInt32 Func _BinaryFromInt32($Value) Return Binary(BitAND($Value, 0xFFFFFFFF)) EndFunc ;==>_BinaryFromInt32 Func _BinaryToInt64($Binary) Local $Buffer = DllStructCreate("byte[8]") DllStructSetData($Buffer, 1, Binary($Binary)) Return DllStructGetData(DllStructCreate("int64", DllStructGetPtr($Buffer)), 1) EndFunc ;==>_BinaryToInt64 Func _BinaryFromInt64($Value) Local $Buffer = DllStructCreate("int64") DllStructSetData($Buffer, 1, $Value) Return DllStructGetData(DllStructCreate("byte[8]", DllStructGetPtr($Buffer)), 1) EndFunc ;==>_BinaryFromInt64 Func _BinaryToDouble($Binary) Local $Buffer = DllStructCreate("byte[8]") DllStructSetData($Buffer, 1, Binary($Binary)) Return DllStructGetData(DllStructCreate("double", DllStructGetPtr($Buffer)), 1) EndFunc ;==>_BinaryToDouble Func _BinaryFromDouble($Value) Local $Buffer = DllStructCreate("double") DllStructSetData($Buffer, 1, $Value) Return DllStructGetData(DllStructCreate("byte[8]", DllStructGetPtr($Buffer)), 1) EndFunc ;==>_BinaryFromDouble Func _BinaryToMemory($Binary, $Ptr) Local $Buffer = DllStructCreate("byte[" & BinaryLen($Binary) & "]", $Ptr) DllStructSetData($Buffer, 1, $Binary) EndFunc ;==>_BinaryToMemory Func _BinaryFromMemory($Ptr, $Size = 1) Local $Buffer = DllStructCreate("byte[" & $Size & "]", $Ptr) Return DllStructGetData($Buffer, 1) EndFunc ;==>_BinaryFromMemory Func _BinaryToDLLStruct($Binary) Local $Buffer = DllStructCreate("byte[" & BinaryLen($Binary) & "]") DllStructSetData($Buffer, 1, $Binary) Return $Buffer EndFunc ;==>_BinaryToDLLStruct Func _BinaryFromDLLStruct(ByRef $DLLStruct) Local $Buffer = DllStructCreate("byte[" & DllStructGetSize($DLLStruct) & "]", DllStructGetPtr($DLLStruct)) Return DllStructGetData($Buffer, 1) EndFunc ;==>_BinaryFromDLLStruct Func _BinaryFillDLLStruct($Binary, ByRef $DLLStruct) Local $Buffer = DllStructCreate("byte[" & DllStructGetSize($DLLStruct) & "]", DllStructGetPtr($DLLStruct)) DllStructSetData($Buffer, 1, $Binary) EndFunc ;==>_BinaryFillDLLStruct Func _BitShift64($Value, $Shift) Return _BinaryToInt64(_BinaryShift(_BinaryFromInt64($Value), $Shift)) EndFunc ;==>_BitShift64 Func _BitRotate64($Value, $Shift) Return _BinaryToInt64(_BinaryRotate(_BinaryFromInt64($Value), $Shift)) EndFunc ;==>_BitRotate64 Func _BitNOT64($Value) Return _BinaryToInt64(_BinaryNOT(_BinaryFromInt64($Value))) EndFunc ;==>_BitNOT64 Func _BitXOR64($i1, $i2, $i3 = Null, $i4 = Null, $i5 = Null, $i6 = Null, $i7 = Null, $i8 = Null, $i9 = Null, $i10 = Null, $i11 = Null, $i12 = Null, $i13 = Null, $i14 = Null, $i15 = Null, $i16 = Null, $i17 = Null, $i18 = Null, $i19 = Null, $i20 = Null, $i21 = Null, $i22 = Null, $i23 = Null, $i24 = Null, $i25 = Null, $i26 = Null, $i27 = Null, $i28 = Null, $i29 = Null, $i30 = Null, $i31 = Null, $i32 = Null, $i33 = Null, $i34 = Null, $i35 = Null, $i36 = Null, $i37 = Null, $i38 = Null, $i39 = Null, $i40 = Null, $i41 = Null, $i42 = Null, $i43 = Null, $i44 = Null, $i45 = Null, $i46 = Null, $i47 = Null, $i48 = Null, $i49 = Null, $i50 = Null, $i51 = Null, $i52 = Null, $i53 = Null, $i54 = Null, $i55 = Null, $i56 = Null, $i57 = Null, $i58 = Null, $i59 = Null, $i60 = Null, $i61 = Null, $i62 = Null, $i63 = Null, $i64 = Null, $i65 = Null, $i66 = Null, $i67 = Null, $i68 = Null, $i69 = Null, $i70 = Null, $i71 = Null, $i72 = Null, $i73 = Null, $i74 = Null, $i75 = Null, $i76 = Null, $i77 = Null, $i78 = Null, $i79 = Null, $i80 = Null, $i81 = Null, $i82 = Null, $i83 = Null, $i84 = Null, $i85 = Null, $i86 = Null, $i87 = Null, $i88 = Null, $i89 = Null, $i90 = Null, $i91 = Null, $i92 = Null, $i93 = Null, $i94 = Null, $i95 = Null, $i96 = Null, $i97 = Null, $i98 = Null, $i99 = Null, $i100 = Null, $i101 = Null, $i102 = Null, $i103 = Null, $i104 = Null, $i105 = Null, $i106 = Null, $i107 = Null, $i108 = Null, $i109 = Null, $i110 = Null, $i111 = Null, $i112 = Null, $i113 = Null, $i114 = Null, $i115 = Null, $i116 = Null, $i117 = Null, $i118 = Null, $i119 = Null, $i120 = Null, $i121 = Null, $i122 = Null, $i123 = Null, $i124 = Null, $i125 = Null, $i126 = Null, $i127 = Null, $i128 = Null, $i129 = Null, $i130 = Null, $i131 = Null, $i132 = Null, $i133 = Null, $i134 = Null, $i135 = Null, $i136 = Null, $i137 = Null, $i138 = Null, $i139 = Null, $i140 = Null, $i141 = Null, $i142 = Null, $i143 = Null, $i144 = Null, $i145 = Null, $i146 = Null, $i147 = Null, $i148 = Null, $i149 = Null, $i150 = Null, $i151 = Null, $i152 = Null, $i153 = Null, $i154 = Null, $i155 = Null, $i156 = Null, $i157 = Null, $i158 = Null, $i159 = Null, $i160 = Null, $i161 = Null, $i162 = Null, $i163 = Null, $i164 = Null, $i165 = Null, $i166 = Null, $i167 = Null, $i168 = Null, $i169 = Null, $i170 = Null, $i171 = Null, $i172 = Null, $i173 = Null, $i174 = Null, $i175 = Null, $i176 = Null, $i177 = Null, $i178 = Null, $i179 = Null, $i180 = Null, $i181 = Null, $i182 = Null, $i183 = Null, $i184 = Null, $i185 = Null, $i186 = Null, $i187 = Null, $i188 = Null, $i189 = Null, $i190 = Null, $i191 = Null, $i192 = Null, $i193 = Null, $i194 = Null, $i195 = Null, $i196 = Null, $i197 = Null, $i198 = Null, $i199 = Null, $i200 = Null, $i201 = Null, $i202 = Null, $i203 = Null, $i204 = Null, $i205 = Null, $i206 = Null, $i207 = Null, $i208 = Null, $i209 = Null, $i210 = Null, $i211 = Null, $i212 = Null, $i213 = Null, $i214 = Null, $i215 = Null, $i216 = Null, $i217 = Null, $i218 = Null, $i219 = Null, $i220 = Null, $i221 = Null, $i222 = Null, $i223 = Null, $i224 = Null, $i225 = Null, $i226 = Null, $i227 = Null, $i228 = Null, $i229 = Null, $i230 = Null, $i231 = Null, $i232 = Null, $i233 = Null, $i234 = Null, $i235 = Null, $i236 = Null, $i237 = Null, $i238 = Null, $i239 = Null, $i240 = Null, $i241 = Null, $i242 = Null, $i243 = Null, $i244 = Null, $i245 = Null, $i246 = Null, $i247 = Null, $i248 = Null, $i249 = Null, $i250 = Null, $i251 = Null, $i252 = Null, $i253 = Null, $i254 = Null, $i255 = Null) Local $aParams = [$i2, $i3, $i4, $i5, $i6, $i7, $i8, $i9, $i10, $i11, $i12, $i13, $i14, $i15, $i16, $i17, $i18, $i19, $i20, $i21, $i22, $i23, $i24, $i25, $i26, $i27, $i28, $i29, $i30, $i31, $i32, $i33, $i34, $i35, $i36, $i37, $i38, $i39, $i40, $i41, $i42, $i43, $i44, $i45, $i46, $i47, $i48, $i49, $i50, $i51, $i52, $i53, $i54, $i55, $i56, $i57, $i58, $i59, $i60, $i61, $i62, $i63, $i64, $i65, $i66, $i67, $i68, $i69, $i70, $i71, $i72, $i73, $i74, $i75, $i76, $i77, $i78, $i79, $i80, $i81, $i82, $i83, $i84, $i85, $i86, $i87, $i88, $i89, $i90, $i91, $i92, $i93, $i94, $i95, $i96, $i97, $i98, $i99, $i100, $i101, $i102, $i103, $i104, $i105, $i106, $i107, $i108, $i109, $i110, $i111, $i112, $i113, $i114, $i115, $i116, $i117, $i118, $i119, $i120, $i121, $i122, $i123, $i124, $i125, $i126, $i127, $i128, $i129, $i130, $i131, $i132, $i133, $i134, $i135, $i136, $i137, $i138, $i139, $i140, $i141, $i142, $i143, $i144, $i145, $i146, $i147, $i148, $i149, $i150, $i151, $i152, $i153, $i154, $i155, $i156, $i157, $i158, $i159, $i160, $i161, $i162, $i163, $i164, $i165, $i166, $i167, $i168, $i169, $i170, $i171, $i172, $i173, $i174, $i175, $i176, $i177, $i178, $i179, $i180, $i181, $i182, $i183, $i184, $i185, $i186, $i187, $i188, $i189, $i190, $i191, $i192, $i193, $i194, $i195, $i196, $i197, $i198, $i199, $i200, $i201, $i202, $i203, $i204, $i205, $i206, $i207, $i208, $i209, $i210, $i211, $i212, $i213, $i214, $i215, $i216, $i217, $i218, $i219, $i220, $i221, $i222, $i223, $i224, $i225, $i226, $i227, $i228, $i229, $i230, $i231, $i232, $i233, $i234, $i235, $i236, $i237, $i238, $i239, $i240, $i241, $i242, $i243, $i244, $i245, $i246, $i247, $i248, $i249, $i250, $i251, $i252, $i253, $i254, $i255] Local $Ret = _BinaryFromInt64($i1) For $i = 0 To UBound($aParams) -1 Step 1 If $aParams[$i] == Null Then ExitLoop $Ret = _BinaryXOR($Ret, _BinaryFromInt64($aParams[$i])) Next Return _BinaryToInt64($Ret) EndFunc ;==>_BitXOR64 Func _BitAND64($i1, $i2, $i3 = Null, $i4 = Null, $i5 = Null, $i6 = Null, $i7 = Null, $i8 = Null, $i9 = Null, $i10 = Null, $i11 = Null, $i12 = Null, $i13 = Null, $i14 = Null, $i15 = Null, $i16 = Null, $i17 = Null, $i18 = Null, $i19 = Null, $i20 = Null, $i21 = Null, $i22 = Null, $i23 = Null, $i24 = Null, $i25 = Null, $i26 = Null, $i27 = Null, $i28 = Null, $i29 = Null, $i30 = Null, $i31 = Null, $i32 = Null, $i33 = Null, $i34 = Null, $i35 = Null, $i36 = Null, $i37 = Null, $i38 = Null, $i39 = Null, $i40 = Null, $i41 = Null, $i42 = Null, $i43 = Null, $i44 = Null, $i45 = Null, $i46 = Null, $i47 = Null, $i48 = Null, $i49 = Null, $i50 = Null, $i51 = Null, $i52 = Null, $i53 = Null, $i54 = Null, $i55 = Null, $i56 = Null, $i57 = Null, $i58 = Null, $i59 = Null, $i60 = Null, $i61 = Null, $i62 = Null, $i63 = Null, $i64 = Null, $i65 = Null, $i66 = Null, $i67 = Null, $i68 = Null, $i69 = Null, $i70 = Null, $i71 = Null, $i72 = Null, $i73 = Null, $i74 = Null, $i75 = Null, $i76 = Null, $i77 = Null, $i78 = Null, $i79 = Null, $i80 = Null, $i81 = Null, $i82 = Null, $i83 = Null, $i84 = Null, $i85 = Null, $i86 = Null, $i87 = Null, $i88 = Null, $i89 = Null, $i90 = Null, $i91 = Null, $i92 = Null, $i93 = Null, $i94 = Null, $i95 = Null, $i96 = Null, $i97 = Null, $i98 = Null, $i99 = Null, $i100 = Null, $i101 = Null, $i102 = Null, $i103 = Null, $i104 = Null, $i105 = Null, $i106 = Null, $i107 = Null, $i108 = Null, $i109 = Null, $i110 = Null, $i111 = Null, $i112 = Null, $i113 = Null, $i114 = Null, $i115 = Null, $i116 = Null, $i117 = Null, $i118 = Null, $i119 = Null, $i120 = Null, $i121 = Null, $i122 = Null, $i123 = Null, $i124 = Null, $i125 = Null, $i126 = Null, $i127 = Null, $i128 = Null, $i129 = Null, $i130 = Null, $i131 = Null, $i132 = Null, $i133 = Null, $i134 = Null, $i135 = Null, $i136 = Null, $i137 = Null, $i138 = Null, $i139 = Null, $i140 = Null, $i141 = Null, $i142 = Null, $i143 = Null, $i144 = Null, $i145 = Null, $i146 = Null, $i147 = Null, $i148 = Null, $i149 = Null, $i150 = Null, $i151 = Null, $i152 = Null, $i153 = Null, $i154 = Null, $i155 = Null, $i156 = Null, $i157 = Null, $i158 = Null, $i159 = Null, $i160 = Null, $i161 = Null, $i162 = Null, $i163 = Null, $i164 = Null, $i165 = Null, $i166 = Null, $i167 = Null, $i168 = Null, $i169 = Null, $i170 = Null, $i171 = Null, $i172 = Null, $i173 = Null, $i174 = Null, $i175 = Null, $i176 = Null, $i177 = Null, $i178 = Null, $i179 = Null, $i180 = Null, $i181 = Null, $i182 = Null, $i183 = Null, $i184 = Null, $i185 = Null, $i186 = Null, $i187 = Null, $i188 = Null, $i189 = Null, $i190 = Null, $i191 = Null, $i192 = Null, $i193 = Null, $i194 = Null, $i195 = Null, $i196 = Null, $i197 = Null, $i198 = Null, $i199 = Null, $i200 = Null, $i201 = Null, $i202 = Null, $i203 = Null, $i204 = Null, $i205 = Null, $i206 = Null, $i207 = Null, $i208 = Null, $i209 = Null, $i210 = Null, $i211 = Null, $i212 = Null, $i213 = Null, $i214 = Null, $i215 = Null, $i216 = Null, $i217 = Null, $i218 = Null, $i219 = Null, $i220 = Null, $i221 = Null, $i222 = Null, $i223 = Null, $i224 = Null, $i225 = Null, $i226 = Null, $i227 = Null, $i228 = Null, $i229 = Null, $i230 = Null, $i231 = Null, $i232 = Null, $i233 = Null, $i234 = Null, $i235 = Null, $i236 = Null, $i237 = Null, $i238 = Null, $i239 = Null, $i240 = Null, $i241 = Null, $i242 = Null, $i243 = Null, $i244 = Null, $i245 = Null, $i246 = Null, $i247 = Null, $i248 = Null, $i249 = Null, $i250 = Null, $i251 = Null, $i252 = Null, $i253 = Null, $i254 = Null, $i255 = Null) Local $aParams = [$i2, $i3, $i4, $i5, $i6, $i7, $i8, $i9, $i10, $i11, $i12, $i13, $i14, $i15, $i16, $i17, $i18, $i19, $i20, $i21, $i22, $i23, $i24, $i25, $i26, $i27, $i28, $i29, $i30, $i31, $i32, $i33, $i34, $i35, $i36, $i37, $i38, $i39, $i40, $i41, $i42, $i43, $i44, $i45, $i46, $i47, $i48, $i49, $i50, $i51, $i52, $i53, $i54, $i55, $i56, $i57, $i58, $i59, $i60, $i61, $i62, $i63, $i64, $i65, $i66, $i67, $i68, $i69, $i70, $i71, $i72, $i73, $i74, $i75, $i76, $i77, $i78, $i79, $i80, $i81, $i82, $i83, $i84, $i85, $i86, $i87, $i88, $i89, $i90, $i91, $i92, $i93, $i94, $i95, $i96, $i97, $i98, $i99, $i100, $i101, $i102, $i103, $i104, $i105, $i106, $i107, $i108, $i109, $i110, $i111, $i112, $i113, $i114, $i115, $i116, $i117, $i118, $i119, $i120, $i121, $i122, $i123, $i124, $i125, $i126, $i127, $i128, $i129, $i130, $i131, $i132, $i133, $i134, $i135, $i136, $i137, $i138, $i139, $i140, $i141, $i142, $i143, $i144, $i145, $i146, $i147, $i148, $i149, $i150, $i151, $i152, $i153, $i154, $i155, $i156, $i157, $i158, $i159, $i160, $i161, $i162, $i163, $i164, $i165, $i166, $i167, $i168, $i169, $i170, $i171, $i172, $i173, $i174, $i175, $i176, $i177, $i178, $i179, $i180, $i181, $i182, $i183, $i184, $i185, $i186, $i187, $i188, $i189, $i190, $i191, $i192, $i193, $i194, $i195, $i196, $i197, $i198, $i199, $i200, $i201, $i202, $i203, $i204, $i205, $i206, $i207, $i208, $i209, $i210, $i211, $i212, $i213, $i214, $i215, $i216, $i217, $i218, $i219, $i220, $i221, $i222, $i223, $i224, $i225, $i226, $i227, $i228, $i229, $i230, $i231, $i232, $i233, $i234, $i235, $i236, $i237, $i238, $i239, $i240, $i241, $i242, $i243, $i244, $i245, $i246, $i247, $i248, $i249, $i250, $i251, $i252, $i253, $i254, $i255] Local $Ret = _BinaryFromInt64($i1) For $i = 0 To UBound($aParams) -1 Step 1 If $aParams[$i] == Null Then ExitLoop $Ret = _BinaryAND($Ret, _BinaryFromInt64($aParams[$i])) Next Return _BinaryToInt64($Ret) EndFunc ;==>_BitAND64 Func _BitOR64($i1, $i2, $i3 = Null, $i4 = Null, $i5 = Null, $i6 = Null, $i7 = Null, $i8 = Null, $i9 = Null, $i10 = Null, $i11 = Null, $i12 = Null, $i13 = Null, $i14 = Null, $i15 = Null, $i16 = Null, $i17 = Null, $i18 = Null, $i19 = Null, $i20 = Null, $i21 = Null, $i22 = Null, $i23 = Null, $i24 = Null, $i25 = Null, $i26 = Null, $i27 = Null, $i28 = Null, $i29 = Null, $i30 = Null, $i31 = Null, $i32 = Null, $i33 = Null, $i34 = Null, $i35 = Null, $i36 = Null, $i37 = Null, $i38 = Null, $i39 = Null, $i40 = Null, $i41 = Null, $i42 = Null, $i43 = Null, $i44 = Null, $i45 = Null, $i46 = Null, $i47 = Null, $i48 = Null, $i49 = Null, $i50 = Null, $i51 = Null, $i52 = Null, $i53 = Null, $i54 = Null, $i55 = Null, $i56 = Null, $i57 = Null, $i58 = Null, $i59 = Null, $i60 = Null, $i61 = Null, $i62 = Null, $i63 = Null, $i64 = Null, $i65 = Null, $i66 = Null, $i67 = Null, $i68 = Null, $i69 = Null, $i70 = Null, $i71 = Null, $i72 = Null, $i73 = Null, $i74 = Null, $i75 = Null, $i76 = Null, $i77 = Null, $i78 = Null, $i79 = Null, $i80 = Null, $i81 = Null, $i82 = Null, $i83 = Null, $i84 = Null, $i85 = Null, $i86 = Null, $i87 = Null, $i88 = Null, $i89 = Null, $i90 = Null, $i91 = Null, $i92 = Null, $i93 = Null, $i94 = Null, $i95 = Null, $i96 = Null, $i97 = Null, $i98 = Null, $i99 = Null, $i100 = Null, $i101 = Null, $i102 = Null, $i103 = Null, $i104 = Null, $i105 = Null, $i106 = Null, $i107 = Null, $i108 = Null, $i109 = Null, $i110 = Null, $i111 = Null, $i112 = Null, $i113 = Null, $i114 = Null, $i115 = Null, $i116 = Null, $i117 = Null, $i118 = Null, $i119 = Null, $i120 = Null, $i121 = Null, $i122 = Null, $i123 = Null, $i124 = Null, $i125 = Null, $i126 = Null, $i127 = Null, $i128 = Null, $i129 = Null, $i130 = Null, $i131 = Null, $i132 = Null, $i133 = Null, $i134 = Null, $i135 = Null, $i136 = Null, $i137 = Null, $i138 = Null, $i139 = Null, $i140 = Null, $i141 = Null, $i142 = Null, $i143 = Null, $i144 = Null, $i145 = Null, $i146 = Null, $i147 = Null, $i148 = Null, $i149 = Null, $i150 = Null, $i151 = Null, $i152 = Null, $i153 = Null, $i154 = Null, $i155 = Null, $i156 = Null, $i157 = Null, $i158 = Null, $i159 = Null, $i160 = Null, $i161 = Null, $i162 = Null, $i163 = Null, $i164 = Null, $i165 = Null, $i166 = Null, $i167 = Null, $i168 = Null, $i169 = Null, $i170 = Null, $i171 = Null, $i172 = Null, $i173 = Null, $i174 = Null, $i175 = Null, $i176 = Null, $i177 = Null, $i178 = Null, $i179 = Null, $i180 = Null, $i181 = Null, $i182 = Null, $i183 = Null, $i184 = Null, $i185 = Null, $i186 = Null, $i187 = Null, $i188 = Null, $i189 = Null, $i190 = Null, $i191 = Null, $i192 = Null, $i193 = Null, $i194 = Null, $i195 = Null, $i196 = Null, $i197 = Null, $i198 = Null, $i199 = Null, $i200 = Null, $i201 = Null, $i202 = Null, $i203 = Null, $i204 = Null, $i205 = Null, $i206 = Null, $i207 = Null, $i208 = Null, $i209 = Null, $i210 = Null, $i211 = Null, $i212 = Null, $i213 = Null, $i214 = Null, $i215 = Null, $i216 = Null, $i217 = Null, $i218 = Null, $i219 = Null, $i220 = Null, $i221 = Null, $i222 = Null, $i223 = Null, $i224 = Null, $i225 = Null, $i226 = Null, $i227 = Null, $i228 = Null, $i229 = Null, $i230 = Null, $i231 = Null, $i232 = Null, $i233 = Null, $i234 = Null, $i235 = Null, $i236 = Null, $i237 = Null, $i238 = Null, $i239 = Null, $i240 = Null, $i241 = Null, $i242 = Null, $i243 = Null, $i244 = Null, $i245 = Null, $i246 = Null, $i247 = Null, $i248 = Null, $i249 = Null, $i250 = Null, $i251 = Null, $i252 = Null, $i253 = Null, $i254 = Null, $i255 = Null) Local $aParams = [$i2, $i3, $i4, $i5, $i6, $i7, $i8, $i9, $i10, $i11, $i12, $i13, $i14, $i15, $i16, $i17, $i18, $i19, $i20, $i21, $i22, $i23, $i24, $i25, $i26, $i27, $i28, $i29, $i30, $i31, $i32, $i33, $i34, $i35, $i36, $i37, $i38, $i39, $i40, $i41, $i42, $i43, $i44, $i45, $i46, $i47, $i48, $i49, $i50, $i51, $i52, $i53, $i54, $i55, $i56, $i57, $i58, $i59, $i60, $i61, $i62, $i63, $i64, $i65, $i66, $i67, $i68, $i69, $i70, $i71, $i72, $i73, $i74, $i75, $i76, $i77, $i78, $i79, $i80, $i81, $i82, $i83, $i84, $i85, $i86, $i87, $i88, $i89, $i90, $i91, $i92, $i93, $i94, $i95, $i96, $i97, $i98, $i99, $i100, $i101, $i102, $i103, $i104, $i105, $i106, $i107, $i108, $i109, $i110, $i111, $i112, $i113, $i114, $i115, $i116, $i117, $i118, $i119, $i120, $i121, $i122, $i123, $i124, $i125, $i126, $i127, $i128, $i129, $i130, $i131, $i132, $i133, $i134, $i135, $i136, $i137, $i138, $i139, $i140, $i141, $i142, $i143, $i144, $i145, $i146, $i147, $i148, $i149, $i150, $i151, $i152, $i153, $i154, $i155, $i156, $i157, $i158, $i159, $i160, $i161, $i162, $i163, $i164, $i165, $i166, $i167, $i168, $i169, $i170, $i171, $i172, $i173, $i174, $i175, $i176, $i177, $i178, $i179, $i180, $i181, $i182, $i183, $i184, $i185, $i186, $i187, $i188, $i189, $i190, $i191, $i192, $i193, $i194, $i195, $i196, $i197, $i198, $i199, $i200, $i201, $i202, $i203, $i204, $i205, $i206, $i207, $i208, $i209, $i210, $i211, $i212, $i213, $i214, $i215, $i216, $i217, $i218, $i219, $i220, $i221, $i222, $i223, $i224, $i225, $i226, $i227, $i228, $i229, $i230, $i231, $i232, $i233, $i234, $i235, $i236, $i237, $i238, $i239, $i240, $i241, $i242, $i243, $i244, $i245, $i246, $i247, $i248, $i249, $i250, $i251, $i252, $i253, $i254, $i255] Local $Ret = _BinaryFromInt64($i1) For $i = 0 To UBound($aParams) -1 Step 1 If $aParams[$i] == Null Then ExitLoop $Ret = _BinaryOR($Ret, _BinaryFromInt64($aParams[$i])) Next Return _BinaryToInt64($Ret) EndFunc ;==>_BitOR64 Func _Hex64($Value, $Len = 16) Local $Binary = _BinaryReverse(_BinaryFromInt64($Value)) Return StringRight(StringTrimLeft($Binary, 2), $Len) EndFunc ;==>_Hex64 Func _Dec64($Hex) If Mod(StringLen($Hex), 2) = 1 Then $Hex = "0" & $Hex Return _BinaryToInt64(_BinaryReverse("0x" & $Hex)) EndFunc ;==>_Dec64