#include <Array.au3>
Const $xStart = "50450000"
Const $xOffset = 148 * 2
Const $sPtrn = '(..)'
$sPathLog = "C:\Users\Дмитрий\Downloads\autoit-v3-setup.exe"
$hOpen = FileOpen($sPathLog,16)
$sFounded = StringRegExp(FileRead($hOpen,1024), $xStart & ".{" & $xOffset & "}(.{8})(.{8}).*",3)
If IsArray($sFounded) And UBound($sFounded) = 2 Then
$sFounded[0] = StringRegExpReplace($sFounded[0], $sPtrn & $sPtrn & $sPtrn & $sPtrn, '$4$3$2$1')
$sFounded[1] = StringRegExpReplace($sFounded[1], $sPtrn & $sPtrn & $sPtrn & $sPtrn, '$4$3$2$1')
$hSum = Dec($sFounded[0]) + Dec($sFounded[1])
If Dec($sFounded[0]) = 0 And Dec($sFounded[1]) = 0 Then
MsgBox(64,"Информация","Файл НЕ подписан сертификатом")
Exit
ElseIf Dec($sFounded[0]) = 0 or Dec($sFounded[1]) = 0 Then
MsgBox(16,"Информация","Сертификат битый")
Exit
EndIf
If Hex($hSum,16) <> Hex(FileGetSize($sPathLog),16) Then
MsgBox(16,"Ошибка","Файл\сертификат битый")
Else
FileSetPos($hOpen, Dec($sFounded[0]) ,0)
$sRead = FileRead($hOpen,Dec($sFounded[1]))
$sLengtName = StringRegExp($sRead, "060355040313(.{2}).*",3)
$sSignName = StringRegExp($sRead, "060355040313.{2}(.{" & (Dec($sLengtName[0])*2) & "}).*",3)
MsgBox(64,"Информация","Файл подписан сертификатом" & @CRLF & "Адрес: 0x" & _
$sFounded[0] & @CRLF & "Длинна сертификата: " & (Dec($sFounded[1])) & " байт" & @CRLF & "Имя издателя: " & BinaryToString("0x"&$sSignName[0],4))
EndIf
Else
MsgBox(16,"Ошибка","Не найдена сигнатура PE формата")
EndIf
FileClose($hOpen)