关于我们
4SecNet 团队专注于网络安全攻防研究,目前团队成员分布在国内多家顶级安全厂商的核心部门,包括安全研究领域、攻防实验室等,汇聚了行业内的顶尖技术力量。团队在病毒木马逆向分析、APT 追踪、破解技术、漏洞分析、红队工具开发等多个领域积累了深厚经验,并持续在复杂威胁对抗和攻防技术创新方面不断探索与突破。4SecNet 致力于通过技术共享与实践推动网络安全生态的持续进步。
免责声明
本文的内容仅用于学习、交流和技术探讨,旨在传播网络安全知识,提高公众的安全意识。本博客不支持、提倡或参与任何形式的非法活动。本博客内容面向具备合法使用目的的读者,请确保在使用博客中涉及的技术或方法时符合《中华人民共和国网络安全法》等相关法律法规的要求。任何人不得将本博客内容用于破坏网络安全、侵入系统或其他违反法律的活动。
项目获取
微信搜索4SecNet,关注公众号加入圈子,获取项目详细信息
背景介绍
在传统 Shellcode 开发中,开发者往往需要面对一系列繁琐的底层技术细节:从手动编写汇编指令、处理函数寻址与重定位,到提取机器码字节、解决依赖库动态链接问题,甚至需要为兼容不同编译环境反复调整代码结构。这一过程不仅需要深厚的系统底层知识,还会让开发者将大量精力耗费在"工具链维护"而非核心功能实现上。对于安全研究、渗透测试或漏洞利用开发领域的新手来说,这种复杂性更是显著提高了技术门槛。 为此,我们设计了一款高兼容的 Shellcode 生成框架,彻底重构了传统开发模式。开发者只需在 C 代码中引入一个轻量级头文件(.h),即可像编写普通 C 程序一样自由实现功能逻辑——无需关注汇编细节、无需手动处理内存地址、更无需适配编译参数。
开源项目对比
项目名称 | 开发简易 | 字符串方便 | 全局变量 |
---|---|---|---|
windows_x64_shellcode_template | ⭐ | ⭐ | ❌ |
lainswork/shellcode-factory | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ✔ |
Cracked5pider/Stardust | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ✔ |
4SecNet/ShellcodeTemolate | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ✔ |
windows_x64_shellcode_template
star:200
缺点:用到的函数需要自己声明函数,不能有字符串出现,开发要求很高 ,不支持X86
shellcode-factory
star:244
缺点:用C++特性实函数hash和函数声明,对不熟悉c++的人很不友好
Stardust
star:1.1k
缺点:需要自己声明函数,虽然很简单,但是也需要这一步,还需要对GCC 语法有一定了解
详细信息
环境配置:
安装 tdm,安装后加入环境变量即可。tdm安装方法参考下述链接:
`https://blog.csdn.net/paticita/article/details/123912840`
安装python依赖:
python3 -m pip install pefile
如何使用:
非常简单!非常简单!非常简单! 重要的事情说三遍
用户仅需要在entry.c里正常使用C语言进行功能开发,随后make将自动直接生成shellcode
项目原理:
编译一个项目包含四个过程:预处理、编译、汇编、链接。
本项目将自动在编译阶段开始介入,用户仅需要正常完成功能开发,便可得到对应的shellcode。
项目将自动使用下面这条命令将您编写的entry.c源文件编译为windows 64位的entry.s文件。
例如,您可以编写如下entry.c文件。
#include <windows.h>
int FuncDemo()
{
MessageBoxA(NULL,"Hello","world",0);
return 0;
}
将自动生成entry.s文件如下。
asmatmel
.file "main.c"
.intel_syntax noprefix
.text
.section .rdata,"dr"
.LC0:
.ascii "world\0"
.LC1:
.ascii "Hello\0"
.text
.globl FuncDemo
.def FuncDemo; .scl 2; .type 32; .endef
FuncDemo:
push rbp
mov rbp, rsp
sub rsp, 32
mov r9d, 0
lea r8, .LC0[rip]
lea rax, .LC1[rip]
mov rdx, rax
mov ecx, 0
mov rax, QWORD PTR __imp_MessageBoxA[rip]
call rax
mov eax, 0
leave
ret
.ident "GCC: (Rev2, Built by MSYS2 project) 14.2.0"
随后,项目将再次自动对汇编文件entry.s进行处理,最终编译生成为shellcode文件并保存到Out目录