Go语言 unix下 实现隐藏进程命令行参数 保护密码等数据

7 篇文章 0 订阅

C语言在unix下可以通过直接覆写argv的方式隐藏参数,但是Golang的os.Args为string类型,无法直接覆盖,因此可以考虑使用unsafe.Pointer配合uintptr实现覆盖string的目的

以覆盖第三个参数为例,这种覆盖方式不会受到参数是否为ASCII的影响,覆盖后命令行将变成对应字节数个*

感谢@wdvxdr1123对本方法在unsafe.Pointer使用方面提出的建议,以下是已修正版本

p := *(*unsafe.Pointer)(unsafe.Pointer(&os.Args[position]))
for i := 0; i < len(os.Args[position]); i++ {
	*(*uint8)(unsafe.Pointer(uintptr(p) + uintptr(i))) = '*'
}

此时利用ps查看参数,已经实现覆盖。

go run test.go 1 2 飒飒 4 5
ps -ux
USER      ......   COMMAND
fumiama   ......   ....../test 1 2 ****** 4 5
......

直接使用

为方便起见,本方法已经封装成了package,使用也很简单,只需要像下面这样写即可,而且在windows系统下也可实现隐藏,详见使用Go语言 在windows下 实现隐藏进程命令行参数 保护密码等数据

import para "github.com/fumiama/go-hide-param"
// This will hide os.Args[index]
para.Hide(index)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值