1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
| package main
import ( "bytes" "fmt" "io/ioutil" "os" "os/exec" )
func main() { bit := 32 << (^uint(0) >> 63) var filePath string if bit == 64 { filePath = "C:\\Windows\\SysWOW64\\Macromed\\Flash\\Flash.ocx" } else { filePath = "C:\\Windows\\System32\\Macromed\\Flash\\Flash.ocx" } fmt.Println("!!!运行前请关闭浏览器!!!") fmt.Printf("%d位操作系统\n", bit) fmt.Printf("读取文件:%s\n", filePath) content, err := ioutil.ReadFile(filePath) if err != nil { fmt.Println("读取文件失败,请检查文件是否存在") return } targetBytes := []byte{0x00, 0x00, 0x40, 0x46, 0x3E, 0x6F, 0x77, 0x42} fmt.Println("开始查找目标代码...") if bytes.Contains(content, targetBytes) { fmt.Println("开始尝试修改...") fmt.Println("获取文件权限...") c := exec.Command("cmd", "/C", "TAKEOWN", "/F", filePath, "/a") if err := c.Run(); err != nil { fmt.Println("修改文件权限失败,请用管理员权限运行!") return } c2 := exec.Command("cmd", "/C", "ICACLS", filePath, "/grant", "Administrators:F") if err := c2.Run(); err != nil { fmt.Println("修改文件权限失败,请用管理员权限运行!") return } targetIndex := bytes.Index(content, targetBytes) modifyIndex := targetIndex + 7 content[modifyIndex] = 0x72 err := ioutil.WriteFile(filePath, content, os.ModePerm) if err == nil { fmt.Println("修改成功,flash已被激活") } else { fmt.Println("修改失败,原因:") fmt.Println(err) } } else { fmt.Println("找不到目标代码,修改失败") }
fmt.Print("\n按enter键退出...") fmt.Scanln() }
|