Go编译EXE增加完善应用信息及管理员权限启动 – 作者:a972182797

图片[1]-Go编译EXE增加完善应用信息及管理员权限启动 – 作者:a972182797-安全小百科本文是为了解决Go编译EXE文件后,如何将应用程序”完(wei)善(zhuang)”的更好,也是书接上回的一个完善;

注:本文是一篇站在巨人肩膀上的实践记录

成功尝试有效的方法有《GoVersionInfo》《windres.exe》

一、完善应用详细信息图标及版本信息—-GoVersionInfo

1.将git文件下载到任意目录;将下载后的《resource》目录全部复制到本项目根目录;
图片[2]-Go编译EXE增加完善应用信息及管理员权限启动 – 作者:a972182797-安全小百科
2.在被编译go文件头部增加

//go:generate goversioninfo -icon=resource/icon.ico -manifest=resource/goversioninfo.exe.manifest

图片[3]-Go编译EXE增加完善应用信息及管理员权限启动 – 作者:a972182797-安全小百科3.根据自己需要完善修改《versioninfo.json》版本信息文件

图片[4]-Go编译EXE增加完善应用信息及管理员权限启动 – 作者:a972182797-安全小百科

4.“初始化”生成.syso文件,编译exe

#go generate          // 会在项目文件目录生成resource.syso文件


#CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -ldflags "-s -w -H=windowsgui" client.go  //编译exe会自动把syso文件链接到程序中
注:生成exe时文件夹下面不要用其他.go文件;否则编译失败;

5.查看程序文件信息

图片[5]-Go编译EXE增加完善应用信息及管理员权限启动 – 作者:a972182797-安全小百科

二、完善应用详细信息图标及版本信息—-windres

核心:通过windres生成一个中间文件 ***.syso,然后通过go编译exe;(我们需要使用MinGW安装windres编译所需的组件)

1.安装windres工具

网上搜索windres.exe进行下载,放入下面mingw安装后的bin目录“C:\MinGW\bin\”

2.下载mingw并安装,然后安装gcc、g++等组件
图片[6]-Go编译EXE增加完善应用信息及管理员权限启动 – 作者:a972182797-安全小百科图片[7]-Go编译EXE增加完善应用信息及管理员权限启动 – 作者:a972182797-安全小百科图片[8]-Go编译EXE增加完善应用信息及管理员权限启动 – 作者:a972182797-安全小百科图片[9]-Go编译EXE增加完善应用信息及管理员权限启动 – 作者:a972182797-安全小百科

3.增加环境变量到path
图片[10]-Go编译EXE增加完善应用信息及管理员权限启动 – 作者:a972182797-安全小百科4.检查gcc、g++、windres
图片[11]-Go编译EXE增加完善应用信息及管理员权限启动 – 作者:a972182797-安全小百科5.准备一个demo.dc文件

1 VERSIONINFO
FILEVERSION 2,4,1109,2
PRODUCTVERSION 2,4,1109,2
FILEOS 0x40004
FILETYPE 0x1
{
BLOCK "StringFileInfo"
{
    BLOCK "040904B0"
    {
        VALUE "CompanyName", "Amazon GNU Internal Tools"
        VALUE "FileDescription", "Amazon GNU Internal Tools"
        VALUE "FileVersion", "2,4,1109,2"
        VALUE "InternalName", "Amazon GNU Internal Tools"
        VALUE "LegalCopyright", "Copyright (C)2019 Amazon. All rights reserved."
        VALUE "OriginalFilename", "CofoxAmazonBestSellersHold.exe"
        VALUE "ProductName", "CofoxHoldAmazonTop100"
        VALUE "ProductVersion", "2,4,1109,2"
    }
}




BLOCK "VarFileInfo"
{
    VALUE "Translation", 0X0409, 0X04B0
}
}



IDI_ICON1 ICON "network.ico"
1 VERSIONINFO
FILEVERSION 2,4,1109,2
PRODUCTVERSION 2,4,1109,2
FILEOS 0x40004
FILETYPE 0x1
{
BLOCK "StringFileInfo"
{
    BLOCK "040904B0"
    {
        VALUE "CompanyName", "Amazon GNU Internal Tools"
        VALUE "FileDescription", "Amazon GNU Internal Tools"
        VALUE "FileVersion", "2,4,1109,2"
        VALUE "InternalName", "Amazon GNU Internal Tools"
        VALUE "LegalCopyright", "Copyright (C)2019 Amazon. All rights reserved."
        VALUE "OriginalFilename", "CofoxAmazonBestSellersHold.exe"
        VALUE "ProductName", "CofoxHoldAmazonTop100"
        VALUE "ProductVersion", "2,4,1109,2"
    }
}




BLOCK "VarFileInfo"
{
    VALUE "Translation", 0X0409, 0X04B0
}
}



IDI_ICON1 ICON "network.ico"

6.编译生成*.syso

windres -i demo.rc -o demo.syso

图片[12]-Go编译EXE增加完善应用信息及管理员权限启动 – 作者:a972182797-安全小百科7.将syso文件复制到go项目目录,编译exe

#CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -ldflags "-s -w -H=windowsgui" -o GNUTools.exe

8.查看程序文件信息
图片[13]-Go编译EXE增加完善应用信息及管理员权限启动 – 作者:a972182797-安全小百科

三、请求管理员权限启动应用

如果程序启动时,默认请求管理员权限,是否就方便了很多?

1.思路非常简单,无论是上面那两种方法,只要修改*.manifest文件即可

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <assemblyIdentity
    type="win32"
    name="GNUtools.exe"
    version="1.0.0.0"
    processorArchitecture="*"/>
 <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
   <security>
     <requestedPrivileges>
      <requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
      </requestedPrivileges>
   </security>
 </trustInfo>
</assembly>

如果使用上面第一种方法《GoVersionInfo》,则直接修改*.manifest文件;
如果使用上线第二种方法《windres》,则需要修改一下demo.rc文件,在最下面加一行;并创建demo.manifest(文件内容参考上面*.manifest)

IDI_MANIFEST1 RT_MANIFEST "demo.manifest"

图片[14]-Go编译EXE增加完善应用信息及管理员权限启动 – 作者:a972182797-安全小百科2.编译程序,查看程序;

图片[15]-Go编译EXE增加完善应用信息及管理员权限启动 – 作者:a972182797-安全小百科搞定!

美中不足,文件信息需要解决文件签名问题!这样”完(wei)善(zhuang)”的会更好!
下一篇,尝试程序签名!

来源:freebuf.com 2020-08-11 13:58:26 by: a972182797

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论