二进制如何不依赖编译环境?这个问题困扰了好久,没有编译环境怎么生成呢?
最近在用golang写马子,以前版本是需要依赖golang环境,每次服务端启动之后要想生成客户端,就必须安装golang环境,服务端部署到哪都得安装go,很是不舒服,废话不多说,正题。
1、举个例子如生成exe,那么最简单的是直接硬编码ip地址像BBBBBBBBBBB这样,写客户端代码的时候注意替换掉 | (后面讲到),之后以这个进行编译生成(类似作为模板供使用),通过010editor搜索可以找到如下:
每次我们需要生成新的马子时都需要修改相关值,木马需要ip、端口等自定义的值,需要替换它。
2、接下来就是替换它为我们的ip地址,查找到sigPtr时直接替换成pachttr(直到查询到末尾以便都替换掉),直接上代码:
package utils
import "sync"
// sigCheck accepts two byte arrays and returns a bool it will compare input
// and sig byte by byte to see if we have a match
func sigCheck(input []byte, sig []byte) bool {
for i := range input {
if input[i] != sig[i] {
return false
}
}
return true
}
// doPatch accepts two byte arrays and an int
func doPatch(output []byte, patch []byte, found int) {
c := 0
for i := found; i < found+len(patch); i++ {
output[i] = patch[c]
c++
}
}
func GoPatch(input []byte, output []byte, sigPtr, pachttr string, wg *sync.WaitGroup) {
defer wg.Done()
for i := 0; i < len(input); i++ {
if len(input) < i+len([]byte(sigPtr)) {
break
}
found := sigCheck(input[i:i+len([]byte(sigPtr))], []byte(sigPtr))
if found {
doPatch(output, []byte(pachttr), i)
}
}
}
input 参数是读取的二进制文件内容
output 参数是输出新文件的内容
sigPtr 参数是需要替换的值,如BBBBBBBBBBB
pachttr 参数是想替换的值,如ip地址
如何调用GoPatch:这里说明一下output 是输出新文件的内容,是在这个的基础上修改,所以得设置为全局变量
args是一个map,key是sigPtr也就是BBBBBBBBBBB,value是你想替换的值,如ip地址(长度补全之后的),代码如下:
var output []byte
var wg sync.WaitGroup
switch input.OSTarget {
case system.Windows64:
output = staticfs.W64Bytes
for key, value := range args {
wg.Add(1)
go utils.GoPatch(staticfs.W64Bytes, output, key, value, &wg)
}
case system.Linux64:
default:
}
wg.Wait()
替换的二进制肯定涉及到长度是否一致,那么这时只能通过补,保证它长度一致,这样就保证了sigPtr和pachttr长度一致,代码如下:
func padWithHash(str string, length int) string {
if len(str) >= length {
return str
}
padCount := length - len(str)
pad := strings.Repeat("|", padCount)
return str + pad
}
str 参数是想替换的值,如ip地址
length 参数是长度,也就是BBBBBBBBBBB的长度
至于为什么使用 | 来补全位数,这个看你怎么来写咯,但是得和ip地址有区分。
最后只需要保存成新文件new.exe,大功告成!!
仅限交流学习使用,如您在使用本工具或代码的过程中存在任何非法行为,您需自行承担相应后果,我们将不承担任何法律及连带责任。“如侵权请私聊公众号删文”。
原文始发于微信公众号(柠檬赏金猎人):golang无需编译环境生成exe
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论