首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

31个!Golang常用工具来啦(建议收藏)

go doc cmd可以查看具体cmd的使用说明,比如: go doc pprof go tool pprof 在Golang中,可以通过pprof工具对应于程序的运行时进行性能分析,包括CPU、内存...tool asm 该命令可以将汇编文件编译成一个.o文件,后续这个.o文件可以用于生成.a归档文件,命令的file参数必须是汇编文件。...On Windows, -H windowsgui writes a "GUI binary" instead of a "console binary."...在断点的时候,如果你不知道断点的函数符号,那么用这个命令查一下就知道了(命令处理的是二进制程序文件),第一列是地址,第二列是类型,第三列是符号。等同于nm命令。...参考: https://studygolang.com/articles/29906 go tool objdump 该命令可以反汇编二进制的工具,等同于系统objdump,命令解析的是二进制格式的程序文件

2.6K10

Go每日一库之208:wails(使用 Go 和 Web 技术构建桌面应用程序)

项目介绍为 Go 程序提供 Web 界面的传统方法是通过内置 Web 服务器。Wails 提供了一种不同的方法:它提供了将 Go 代码和 Web 前端一起打包成单个二进制文件的能力。...自动重新加载​当检测到对您的应用程序资产的更改时,您正在运行的应用程序将“重新加载”,几乎立即反映您的更改在浏览器中开发您的应用程序​如果您更喜欢在浏览器中调试和开发,那么 Wails 可以满足您的需求...可用于生产的原生二进制文件​当您准备好完成应用程序的最终构建时,CLI 会将其编译为单个可执行文件,并将所有资源打包到其中。 在 Windows 和 MacOS 上,可以创建用于分发的原生包。...使用打包工具后生成的资源(图标、info.plist、清单文件等)是您项目的一部分,可以自定义,让您完全控制应用程序的构建方式。...工具​Wails CLI 提供了一种简单的方法来生成、构建和打包您的应用程序。 它将完成创建图标的繁重工作,使用最佳设置编译您的应用程序,并提供可分发的、可用于生产的二进制文件。

17010
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    操作系统大赛:基于 eBPF 的容器监控工具 Eunomia 初赛报告(目标描述、ebpf 调研)

    它使用 Linux eBPF 技术在运行时跟踪您的系统和应用程序,并分析收集的事件以检测可疑的行为模式。...然而使用 BCC 存在一个缺点便是在于其兼容性并不好。基于 BCC 的 eBPF 程序每次执行时候都需要进行编译,编译则需要用户配置相关的头文件和对应实现。...基于 libbpf 的BPF程序在编译时会先将 *.bpf.c 文件编译为对应的.o文件,然后根据此文件生成 skeleton 文件,即 *.skel.h ,这个文件会包含内核态中定义的一些数据结构,以及用于装载内核态代码的关键函数...包括:容器对文件的可疑访问,容器对系统的可疑调用,容器之间的可疑互访,检测容器的异常进程,对可疑行为进行取证。例如: 检测容器运行时是否创建其他进程。...检测容器运行时是否存在文件系统读取和写入的异常行为,例如在运行的容器中安装了新软件包或者更新配置。 检测容器运行时是否打开了新的监听端口或者建立意外连接的异常网络活动。

    89720

    红队技术-钓鱼手法及木马免杀技巧

    简述 钓鱼是攻防对抗中一种常用的手段,攻击者通常伪装成可信任的实体,例如合法的机构、公司或个人,以引诱受害者揭示敏感信息或执行恶意操作,能快速地撕破目标的伤口进行深入利用,快速进内网进行刷分,投递木马同时需要考虑逃避杀毒软件检测...选择不常见的后缀但仍可作为exe执行,如scr、com等 3、文件名使用长命名,如果对方文件显示设置不当,预览时候看不到后缀 lnk钓鱼 如果得知目标单位使用的不是360天擎这类杀软,可使用lnk文件进行钓鱼...go: -race 竞态检测编译 -ldflags '-s -w' 去除编译信息 -ldflags '-H windowsgui' 隐藏窗口 garble(混淆库): -tiny...循环来进行乘法运算 for i := 0; i < num2; i++ { result += num1 } } -H windowsgui参数同样也会对免杀性产生很大影响,如果需要隐藏黑框可以用下面的代码替代...\Python38\Scripts\oci.dll 修改文件时间 当我们上传cs木马至服务器的时候,由于修改日期是新的,蓝队人员很容易通过 everything 筛选时间排查应急 这时候我们可以使用一些技巧进行隐藏

    87140

    Go实现托盘程序

    前言 因工作需要,使用go实现一些小功能,黑窗的形式有过于呆板,且容易误关闭,此前也尝试过讲go打包成dll,随后通过C#编写界面及托盘的方式来运行 | 相关代码 托盘 这里使用的托盘库是蓝灯维护的一个项目...mQuit.SetIcon(icon.Data) } func onExit() { // clean up here } 关于托盘图标systray.SetIcon(), 中的图标的二进制数据可使用第三方库将自己的图片来转换出来...ImgData resources resources.go 随后调用此生成的[]byte即可 注意: 在macos下png, ico转换出来的[]byte都可以使用, 而在...windows下只能使用ico转换出来的[]byte, 详情查看issue 拓展 为go打包的应用程序(windows)添加图标, 也可以查看别人的实现方式 echo IDI_ICON1 ICON "icon.ico...\resources\icon.rc go在打包的时候避免生成调试的命令行窗口, 更多go build命令详解 go build -ldflags="-H windowsgui" 防止程序多开, 详情

    1.7K30

    Linux rootkit 深度分析 – 第1部分:动态链接器劫持

    在 Windows 和 Linux 等现代操作系统中,程序可以静态或动态链接。静态链接的二进制文件与执行所需的所有依赖项(库)一起编译。动态链接的二进制文件使用位于操作系统上的共享库。...这些库将在运行时解析、加载和链接。负责此操作的 Linux 组件是动态链接器,也称为ld.so或ld-linux.so.*。让我们自己实验一下:让我们看一下二进制文件ls。...此功能有多种用途,包括调试、测试和运行时检测,可以通过写入文件/etc/ld.so.preload或使用环境变量LD_PRELOAD来使用。...以下检测方法可以帮助您确定是否感染了这种类型的 rootkit: 对于/etc/ld.so.preload:文件中的更改将写入磁盘。建议使用镜像快照检查此文件。如果您发现异常的库路径,请检查它。...将运行时文件系统与镜像快照进行比较。如果存在差异,则这些文件可能是隐藏在某些命令中的攻击的一部分。 如果在容器上使用运行时检测工具,请确保它支持加载到内存中的偏移执行库。

    24610

    Golang交叉编译(跨平台编译)的使用

    /main.go 在windows10之前的系统版本上使用cmd命令行可以使用上述命令编译 powershell命令行中 在powershell命令行中编译(示例编译64位linux程序) // 设置.../main.go 一、CGO_ENABLED 作用: 用于标识(声明) cgo 工具是否可用 意义: 存在交叉编译的情况时,cgo 工具是不可用的。.../程序名 >/dev/null 2>&1 & //如果要关闭程序,可以使用命令”ps” 查看后台程序的pid,然后使用“kill 程序pid”命令,关闭程序比如程序名为test,可以用如下命令查询...x: 显示所有程序,不以终端机来区分 3. windows上 windows 上面用 go build -ldflags "-s -w -H=windowsgui" -s 省略符号表和调试信息 -w...Omit the DWARF symbol table 省略DWARF符号表 -H windowsgui 不打印信息到console (On Windows, -H windowsgui writes

    4.2K40

    干货|使用Go语言在图片中隐藏Shellcode

    前言 最近在 Github 上发现一个有趣的项目: https://github.com/Hangingsword/HouQing 该项目是用 Go 语言编写的免杀项目,可以将生成的 Shellcode...项目中有两个两个主要文件: image-20210926172410513 •code.go:用于生成含有 Shellcode 的图片。...实战演示 首先需要修改项目中 code.go 和 Loader.go 的源码: image-20210921145406091 改一下两个 KEY 的值,需要同时修改并且两个问价中的数值相同。...然后使用 CobaltStrike 生成 Java 类型的 Shellcode: image-20210921145546888 生成 payload.java,把里面的核心 Shellcode 取出来放入到...最后,我们执行以下命令,将加载器 Loader.go 编译成可执行文件: go build -ldflags="-H windowsgui" Loader.go// -ldflags="-H windowsgui

    1.2K40

    Golang常用工具分享

    go doc cmd可以查看具体cmd的使用说明,比如go doc pprof1.11.1 go tool pprof在Golang中,可以通过pprof工具对应于程序的运行时进行性能分析,包括CPU、...tool asm该命令可以将汇编文件编译成一个.o文件,后续这个.o文件可以用于生成.a归档文件,命令的file参数必须是汇编文件。...On Windows, -H windowsgui writes a "GUI binary" instead of a "console binary."...在断点的时候,如果你不知道断点的函数符号,那么用这个命令查一下就知道了(命令处理的是二进制程序文件),第一列是地址,第二列是类型,第三列是符号。等同于nm命令。...参考:https://studygolang.com/articles/299061.11.15 go tool objdump该命令可以反汇编二进制的工具,等同于系统objdump,命令解析的是二进制格式的程序文件

    1.9K52

    Go 1.20 发行说明(翻译)

    即使类型参数不严格可比较(可能在运行时比较出现恐慌),可比较类型(如普通接口)现在也可以满足约束。...go version -m 命令现在支持读取更多类型的 Go 二进制文件,最值得注意的是,使用 go build -buildmode=c-shared 构建的 Windows DLL 和没有执行权限的...Go 1.20 添加了一个新的 runtime/coverage 包,其中包含在运行时写覆盖率分析数据的 API。...这可以避免名称以 go. 开始的用户包。debug/gosym 包支持使用 Go 1.20 及更高版本构建的二进制文件的新命名约定。...debug/gosym 由于 Go 符号命名约定的更改,处理 Go 二进制文件的工具应使用 Go 1.20 的 debug/gosym 包来透明地处理旧的和新的二进制文件。

    69630

    Go语言中常见100问题-#18 Neglecting integer overflows

    var counter int32 = math.MaxInt32 counter++ fmt.Printf("counter=%d\n", counter) 上述代码可以编译通过,并且在运行时没有出现...实际上,大多数系统都依赖于两者的补码运算来表示二进制数(将每一位反转并加1)。这样处理的目的是使得 x+(-x)等于0,不管x是什么。」...var counter int32 = math.MaxInt32 + 1 constant 2147483648 overflows int32 但是在运行时,整数上溢和下溢是无感知的,不会导致应用程序崩溃...整数自增的时候检测是否存在溢出 基于定义的变量类型(int8、int16、int32、int64、uint8), 在进行自增操作期间,我们可以根据数学常数检查是否存在溢出,例如对于int32类型,采用如下方法进行检查...,可以使用上面代码进行检查。

    1.2K20

    Gin 项目引入热加载

    bin = "tmp/main" # 自定义二进制文件,可以在运行应用程序时设置环境变量。 full_bin = "APP_ENV=dev APP_USER=air ....send_interrupt = false # 发送中断信号后的延迟。 kill_delay = 500 # 纳秒 # 是否重新运行二进制文件。...-p:非必需,指定要构建的包(也可以是单个文件)。 -args:非必需,指定程序运行时的参数,例如:-args='-host=:8080, -name=demo'。...-h:非必需,显示用法信息。 5.5. 生成配置文件 您可以使用运行以下命令的默认设置将gowatch. yml配置文件初始化到当前目录。...只需gin在您的应用程序目录中运行,您的网络应用程序将 gin作为代理提供。gin检测到更改后,将自动重新编译您的代码。您的应用在下次收到HTTP请求时将重新启动。

    23100

    Go实战之常用命令行工具

    运行这些程序最常见的方式是作为go程序的子命令,例如 go fmt,该命令的运行方式是由go程序使用适合于包级处理的参数调用底层二进制文件,对go源代码的完整包进行操作;这些程序也可以作为独立的二进制文件运行...通常,包被指定为来自单个目录的.go源文件列表,但它也可能是与单个已知包匹配的导入路径、文件系统路径或模式,如“go run.”或“go run my/cmd” 默认情况下,“go run”直接运行编译后的二进制文件...Go并未强制xxx的部分必须是要测试的文件名,只是最佳实践。 用后缀_test声明包的测试文件将被编译为单独的包,然后与主测试二进制连接并运行。...尽管GDB可以用来调试go程序,但它并不理想,可能会造成混乱 运行时统计和事件 运行时提供用户内部事件的统计和报告,以便在运行时级别诊断性能和使用问题。...可以监视该值以查看是否有足够的goroutine供使用,或检测goroutine泄漏 go附带运行时Execution Tracer来捕获大量运行时事件。

    92610

    完全可复制、经过验证的 Go 工具链

    这样,任何人都可以通过从真实源代码构建并检查重建的二进制文件是否与已发布的二进制文件完全相同来验证发布的二进制文件是否没有隐藏的更改。...这种方法证明了二进制文件没有后门或源代码中不存在的其他更改,而无需分解或查看其中的内容。由于任何人都可以验证二进制文件,因此独立的团体可以轻松检测并报告供应链攻击。...在删除了预编译包之后,Go 工具链中仍然依赖于主机 C 工具链的部分是使用 package net 构建的二进制文件,特别是 go 命令。...对于 Go 1.20,我们采取了一步措施来解决可重复性问题,即在运行时更改链接器,以便在运行时咨询主机配置,而不是在工具链构建时硬编码默认值: 这解决了在 Alpine Linux 上链接器二进制文件的可移植性问题...相反,我们编写了一个验证器,可以检查两个二进制文件是否相同,除了它们的签名。

    38510

    一文读懂基于 Yaegi 解释器开发可热插拔的 Traefik 插件

    相比于编译器,Yaegi 是一个更为灵活和交互式的工具,可以在运行时动态解析和执行 Go 代码。它不需要提前编译源代码,而是直接从字符串或文件读取代码并解释执行。...虽然 Go 是一种静态和强类型语言,但它的感觉却像一种动态语言。标准库甚至提供了编译器使用的 Go 解析器和反射系统,以便与运行时动态交互。...基于 Golang 角度而言, 虽然 Go 语言本身是一种编译型语言,但是有时候需要在运行时动态执行代码。Yaegi 支持交互式探索和调试,可以帮助开发人员快速测试和验证代码。...为了实现这个功能,Traefik 使用了 Yaegi 解释器,使得 Traefik 可以支持用户自定义的配置文件,并且可以在运行时动态加载和执行。...这里,我们以 Yaegi 在运行时加载并执行 Go 包为简要场景,即 Yaegi 可以用于在运行时加载并执行整个 Go 包,而不需要将包编译成可执行的二进制文件。

    2K51

    有赞 GO 项目单测、集成、增量覆盖率统计与分析

    linters: deadcode: 发现没有使用的代码 errcheck: 用于检查 go 程序中有 error 返回的函数,却没有做判断检查 gosimple: 检测代码是否可以简化 govet (...此外还检查未使用的导入 golint: 打印出 go 代码的格式错误 gofmt: 检测代码是否都已经格式化, 默认情况下使用 -s 来检查代码是否简化 ………………………….....除了用 -E 来启动参数外,还可以指定最长执行时间 —deadline、跳过要扫描的目录 --skip-dirs 等等。如果要了解更多,请使用 golangci-lint run-h来查看。...但是通过文章可以知道,在 go 1.2 之后是不支持使用此种方式,而且也不推荐使用 gcov 来统计覆盖率,因为执行二进制分析是很有挑战且很困难的,它还需要一种可靠的方式来执行跟踪绑定到源代码,这也很困难...go test 中有一个 -c 的 flag,可以将单测的代码和被单测调用的代码编译成二进制包执行,但是这种方式并没有将整个项目的代码包含进去,不过可以通过增加一个测试文件 main_test.go,文件内容如下

    5.4K41

    Havoc Framework C2 Agent开发记录

    Havoc Framework的仓库中维护了一份默认的C语言版本Demon Agent,这个Agent的功能比较齐全,但由于是开源的,默认情况下生成的Agent样本会被直接查杀,特征较为明显,而在样本的对抗角度作者也提供了一些可以给使用者发挥的空间...•post_task 将接收到的内容发送给Client控制台 •download_file 接收文件保存tmp目录,其实就是文件下载 Agent生成逻辑 GoReleaser 是一个用于简化 Go...它可以自动化构建、打包和发布 Go 项目,并支持将项目发布到各种不同的发布渠道,如二进制文件、Docker 镜像、Homebrew、Snapcraft 等。 ️...Garble 是一个通过包装Go工具链来混淆Go代码的一个工具,它基本上兼容了Go的编译命令,在此基础上增加了一些混淆模式的选项,通过设置选项可以构建不同混淆程度的Go二进制程序。...{{- if eq .Os "windows" }}-s -w -H windowsgui{{else}}-s -w{{- end }} gobinary

    1.8K10

    技术干货 | Docker 容器逃逸案例汇集

    环境里,常用的两个检测方式: 检查/.dockerenv文件是否存在 检查/proc/1/cgroup内是否包含"docker"等字符串。...目前来说,这两种检测方式还是比较有效的,其他检测方式,如检测mount、fdisk -l查看硬盘 、判断PID 1的进程名等也可用来辅助判断。...3.1 Shocker 攻击 在容器逃逸案例中,最为著名的是shocker攻击,其通过调用open_by_handle_at函数对宿主机文件系统进行暴力扫描,以获取宿主机的目标文件内容。...3.2 runC容器逃逸漏洞(CVE-2019-5736) 漏洞简述: Docker 18.09.2之前的版本中使用了的runc版本小于1.0-rc6,因此允许攻击者重写宿主机上的runc 二进制文件...且会在运行时动态加载一些libnss*.so库。

    2.9K10

    底层逻辑-理解Go语言的本质

    Go语言,从源代码到编译成可运行的代码图片我们把Go语言的源代码编译后,生成二进制文件,直接就可以在操作系统上运行,没有中间商。...Go语言的Runtime作用:内存管理协程调度垃圾回收Go语言的运行时,是和源代码最终编译生成到二进制文件中的。当我们启动二进制文件的时候,运行时也就是一并启动了。...Go语言是如何编译成二进制文件的package mainimport "fmt"func main() { fmt.Println("面向加薪学习-从0到Go语言微服务架构师")}在命令行执行 go...图片代码优化生成机器码(支持生成.a的文件)go build -gcflags -S main.go(生成和平台相关的plan9汇编代码)链接(生成可执行二进制文件)4.Go语言是如何启动的Go语言启动的时候...可以到runtime目录中找到rt0_darwin_amd64.s找到这个文件(由于我的电脑是mac,所以找到了这个,其他平台可以找各自的),这是一个汇编文件。

    59720
    领券