Skip to content

Commit 00d5da5

Browse files
authored
Create PatchMitigationPolicy.go
1 parent a1cea61 commit 00d5da5

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package MitigationPolicyPatch
2+
3+
import (
4+
"fmt"
5+
"syscall"
6+
"unsafe"
7+
)
8+
9+
const (
10+
ProcessSignaturePolicyMitigation = 8
11+
)
12+
13+
type PROCESS_MITIGATION_BINARY_SIGNATURE_POLICY struct {
14+
MicrosoftSignedOnly uint32
15+
}
16+
17+
var (
18+
modkernelbase = syscall.NewLazyDLL("kernelbase.dll")
19+
procSetProcessMitigationPolicy = modkernelbase.NewProc("SetProcessMitigationPolicy")
20+
)
21+
22+
func SetProcessMitigationPolicy(policy int, lpBuffer *PROCESS_MITIGATION_BINARY_SIGNATURE_POLICY, size uint32) (bool, error) {
23+
ret, _, err := procSetProcessMitigationPolicy.Call(uintptr(policy),uintptr(unsafe.Pointer(lpBuffer)),uintptr(size),)
24+
if ret != 0 {
25+
return true, nil
26+
}
27+
if err != nil && err.Error() != "The operation completed successfully." {
28+
return false, err
29+
}
30+
return false, nil
31+
}
32+
33+
func ConfigureProcessMitigationPolicy() {
34+
var OnlyMicrosoftBinaries PROCESS_MITIGATION_BINARY_SIGNATURE_POLICY
35+
OnlyMicrosoftBinaries.MicrosoftSignedOnly = 1
36+
37+
success, err := SetProcessMitigationPolicy(ProcessSignaturePolicyMitigation,
38+
&OnlyMicrosoftBinaries,
39+
uint32(unsafe.Sizeof(OnlyMicrosoftBinaries)),
40+
)
41+
if err != nil {
42+
fmt.Println("Failed:", err.Error())
43+
return
44+
}
45+
if success {
46+
fmt.Println("Success")
47+
} else {
48+
fmt.Println("Failed")
49+
}
50+
}

0 commit comments

Comments
 (0)