返回顶部

go语言免杀-garble混淆

题记

“愿先生心境,四季如春”

  作者回答:剑来之所以最大宗旨,是“我们不要轻易对这个世界失望”,因为道理太简单不过了,我们每个人在现实生活当中,太容易对人对事,产生大大小小的失望。而“愿先生心境四季如春”这句话,以后在书中会被主角回答一句“愿学生心境如春”,我会有意去掉四季一词,因为四季如春,太难做到,但是当我们能够每次从失望,重新变成心怀希望,就是一次新年辞旧岁,心境再次入春。

  自评:初识此句,陈平安即将入局书简湖,这是学生对先生的殷切期盼,祝先生能度过此难关。某天,我走在路上,脑中突然浮现这句话,我感受到了一种最美好的祝福。人这一生,是不断变化的一个过程,今天你的想法,明天就会变,甚至两极反转。一个人无法保证今天的标准适用明天的你,所以总有人说“想起一出儿是一出儿”,可见坚守本心是多么不容易的一件事,当初胸怀天下、慷慨激昂立志说要改变世界的少年,也许就会因为平平淡淡的工作而磨平棱角并自嘲说躺平了。人的想法一直在变化,想法的变化又带来情绪的变化,我们总是在伤心、难过、失落、开心、惊喜、委屈中循环往复,愿先生心境,四季如春,这是多么美好的祝福啊!我们不要伤心,不要难过,我们的心情,一直如春天一样,将会多么幸福。

安装高版本go

  由于garble不支持低版本的go,要求版本大于1.20。所以要先把之前的go卸载掉,然后安装新版本的go。

  go env我们可以看到GOROOT与GOPATH两部分。问过chatgpt后我们可以知道。

  GOROOT是Go语言安装目录的路径,指向 Go 语言的安装位置。包含 Go 语言的标准库和工具链(如编译器、工具等)。通常在安装 Go 语言时自动设置,用户一般不需要手动修改。

  GOPATH是Go语言工作区的路径,指向用户的工作目录。用于存放用户的 Go 语言项目和第三方库。

 

  将这两个路径下的go文件删掉就好了。

  安装新版本的go:

下载和解压go高版本:

wget https://go.dev/dl/go1.22.0.linux-amd64.tar.gztar -C /usr/local -xzf go1.22.0.linux-amd64.tar.gz

 

编辑环境变量配置:vi ~/.bashrc

 

在后面加入:

export PATH=$PATH:/usr/local/go/bin

export GOPATH=$HOME/go

 

让配置文件立即生效:source ~/.bashrc

 

验证版本:go version

garble混淆

  安装garble,只需要一条命令:go install mvdan.cc/garble@latest

  这里需要注意的是,go把garble下载到了GOPATH路径下的bin文件夹里,正常执行不了,需要把这个移动到/usr/local/go/bin下边,让环境变量能够读取到。

  一切都完成后发现还需要安装下sys模块。

  这里可参考我上篇文章。

  一切准备就绪后,可以使用garble混淆go代码了。以下是参考命令。

混淆偏移:

GOOS=windows GOARCH=386 garble -literals -tiny -seed=random build -ldflags="-s -w -H windowsgui" -o 333.exe 333.go       无黑框

 

GOOS=windows GOARCH=amd64 garble -literals -tiny -seed=random build -o app.exe main.go

 

去除路径:可以通过 -trimpath 参数来去除路径。

CGO_ENABLED=0 GOOS=windows GOARCH=amd64  garble -seed=random build -ldflags "-s -w -H=windowsgui" -trimpath -o loader2_garble.exe

 

CGO_ENABLED=0 GOOS=windows GOARCH=amd64  garble -tiny -literals build -ldflags "-s -w -H=windowsgui" -trimpath -o loader2_garble.exe

 

CGO_ENABLED=0 GOOS=windows GOARCH=amd64  garble -literals build -ldflags "-s -w -H=windowsgui" -trimpath -o loader2_garble.exe

 

CGO_ENABLED=0 GOOS=windows GOARCH=amd64  garble -tiny build -ldflags "-s -w -H=windowsgui" -trimpath -o loader2_garble.exe

其他编译:

garble -tiny -literals -seed=random build -ldflags="-w -s -H windowsgui" -race go-sc.go

garble(混淆库)

  -tiny              删除额外信息                    

  -literals          混淆文字

  -seed=random       base64编码的随机种子

 go

  -w                 去掉调试信息,不能gdb调试了

  -s                 去掉符号表

  -H windowsgui      隐藏执行窗口,不占用 cmd 终端。(被查杀率高)

  -race              使数据允许竞争检测,编译时改变了生成后的文件特征使得杀软无法检测,当然有一天也会失效的。

 

  编译完成后我们可以看到,木马体积变得很大,变得大了小一半。

  可直接过火绒上线,360过不了。

其他处理-这里不进行测试了,用的时候再说

upx压缩体积

  马子太大的话可以使用这个压缩体积

项目地址:

  https://github.com/upx/upx

 

  upx.exe -9 xxx.exe

去特征

项目地址:
  https://github.com/optiv/Mangle


  可以使用去特征工具再进行一步特征去除:Mangle_1.2_windows_amd64.exe -I app-amd64.exe -M -O aaa.exe

参考文章

  免杀fscan教程:https://mp.weixin.qq.com/s/k2uoGGODWZ_QxpBSTeqhwA

  go语言学习过程报错处理:https://www.cnblogs.com/sunny11/p/18367820

  免杀与 golang 实现:https://xz.aliyun.com/t/13581?time__1311=GqmxuDciit%3D05DK5YK0%3DeD%3Dwoxxjrk7GbD#toc-12

posted @ 2024-08-25 15:38  11阳光  阅读(451)  评论(0编辑  收藏  举报