相关文章
加壳
- upx/upx - the Ultimate Packer for eXecutables
相关工具
相关文章
实验
相关工具
文章
工具
案例
基础语法
代码混淆
禁用符号表和调试信息
虽然 Go 是编译成二进制后运行的,但其默认编译机制(Release With Debug Info)会泄漏一些信息。 默认情况下, Go 程序在运行出错时,会输出如上报错信息(在哪个线程,哪个文件,哪个函数,哪行出的错)。
这两个信息可以在编译时进行禁用:
go build -ldflags "-s -w” <package>
隐藏环境变量
报错信息中目录信息的来源是编译器运行时所处环境的环境变量。
编译时,Go 会从 $GOPATH 寻找我们的代码,从 $GOROOT 提取标准库。在打包时将 $GOPATH 改写为 $GOROOT_FINAL 并作为调试信息的一部分写入目标文件。
要隐藏真实的 $GOPATH ,需要在另外一个目录里对真实的 $GOPATH 创建一个软链接,编译器在寻找时就会把软链接的目录名写到最终文件里,从而达到隐藏目的。
ACTUAL_GOPATH = "~/Project"
export GOPATH = '/tmp'
export GOROOT_FINAL = $GOPATH
[ ! -d $GOPATH ] && ln -s "$ACTUAL_GOPATH" "$GOPATH"
[[ ! $PATH =~ $GOPATH ]] && export PATH=$PATH:$GOPATH/bin
代码混淆
编译成二进制
- Pyinstaller
- py2exe
- Nuitka/Nuitka
隐藏 Traceback 信息
Python 运行报错时打印的 Trackback 信息也会泄露一些信息,可以使用如下方法隐藏:
import sys
sys.stderr = open("/dev/null", 'w')
基础语法
代码混淆
代码审计