
C/C++
文章平均质量分 91
程序猿编码
嘿,编译通过了!公众号【程序猿编码】
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
内存隐身的Linux ELF注入技术解析(C/C++代码实现)
在Linux系统安全领域,进程注入技术是渗透测试、恶意代码分析与系统防护的核心研究方向之一。**ELF-Injector** 作为一款针对x86_64架构的ELF共享对象注入工具,通过精巧的设计实现了“隐蔽注入+独立线程运行”的核心目标,既能在目标进程中加载恶意共享库,又能通过伪装名称规避常规检测。本文将从技术原理、设计思路、核心知识点等维度,全面解析ELF-Injector的工作机制。原创 2025-08-31 21:28:20 · 688 阅读 · 0 评论 -
Linux内核ELF文件签名验证机制的设计与实现(C/C++代码实现)
在Linux系统中,ELF(Executable and Linkable Format)是最核心的可执行文件与共享库格式。默认情况下,内核仅校验ELF文件的格式合法性(如魔数、架构匹配),**不验证文件的完整性与来源合法性**——这意味着攻击者可通过篡改ELF文件(如修改代码段)、植入恶意代码,或运行未授权的ELF程序,突破系统安全防线。为解决这一问题,本文解析的**ELF签名验证内核模块**(`binfmt_elf_signature_verification`),通过内核层的“前置拦截+签名校验”原创 2025-08-24 22:21:14 · 814 阅读 · 0 评论 -
Linux ELF二进制文件数字签名工具:原理与设计思路(C/C++代码实现)
在软件安全领域,确保二进制文件的完整性与真实性是防御恶意篡改的关键环节。本文将介绍一款名为`elf-sign`的工具,它通过给Linux ELF(Executable and Linkable Format)二进制文件添加数字签名,实现对文件完整性的保护。我们将从工具的核心功能、实现原理、设计思路及相关领域知识展开分析,揭示其在软件安全体系中的作用。原创 2025-08-21 21:44:56 · 958 阅读 · 0 评论 -
嵌入式系统中的签名验证:设计与原理解析(C/C++代码实现)
在嵌入式系统中,固件的完整性和合法性至关重要。例如,智能设备的 bootloader 若加载了被篡改的固件,可能导致系统崩溃甚至被植入恶意代码。Chrome OS 的 "vboot" 系统提供了一套轻量高效的签名验证方案,其核心逻辑可被抽离并应用于各类嵌入式场景。本文将从设计思路、实现原理和相关技术知识点展开,解析这套基于 RSA 和 SHA256 的签名验证机制。原创 2025-08-17 22:25:47 · 716 阅读 · 0 评论 -
基于LLVM的memcpy静态分析工具:设计思路与原理解析(C/C++代码实现)
在程序开发中,内存复制操作(如`memcpy`)往往是性能瓶颈的关键来源——尤其是大型内存块的复制,可能导致缓存失效、带宽占用过高等问题。为了精准定位这些潜在的性能热点,开发者需要一种能自动识别程序中`memcpy`调用,并提取其关键信息(如复制大小、所在位置)的工具。本文将解析一款基于LLVM的`memcpy`静态分析工具,探讨其设计思路、实现原理及相关技术背景。原创 2025-08-12 22:15:05 · 1319 阅读 · 0 评论 -
二进制签名查找器(Aho-Corasick 自动机):设计思路与实现原理(C/C++代码实现)
在逆向工程、恶意软件分析和二进制文件解析领域,快速准确地识别特定字节模式(即“签名”)是一项核心任务。本文将围绕一款基于PE-bear工具的二进制签名查找器,深入解析其设计思路、实现原理及相关技术背景,揭示其如何高效解决带通配符的多模式匹配问题。原创 2025-08-06 20:04:48 · 2318 阅读 · 0 评论 -
“影子插桩”:利用 LLVM 在二进制层面对 dlsym 调用做无痕监控(C/C++实现)
在软件安全分析、逆向工程和漏洞研究中,监控程序对关键函数的调用(如 dlsym)是获取程序行为信息的重要手段。然而,目标程序可能部署了反调试技术来阻止这类监控。本文介绍一种基于 LLVM 中间表示(IR)进行静态插桩的技术,其核心思路是在程序编译的中间环节注入监控代码,实现对 dlsym 函数获取的地址进行记录,并最终生成一个能绕过部分反调试检查的可执行文件。原创 2025-07-29 19:22:53 · 1551 阅读 · 0 评论 -
基于 Linux inotify 机制的事件驱动型文件监控工具(C/C++代码实现)
my_adhocify 是一个基于 Linux inotify 机制的事件驱动型文件监控工具,其核心功能是监控文件系统事件并自动触发指定命令。简单来说,它能 “盯着” 你指定的文件或目录,当发生特定操作(如文件修改、创建、删除、打开等)时,自动执行你设定的脚本或程序。例如,你可以用它监控/tmp目录,当有新文件写入并关闭时,自动运行日志分析脚本;也可以监控代码目录,当文件被修改时,自动触发编译命令。这种 “事件 - 响应” 模式让文件系统操作与自动化任务无缝衔接,极大简化了重复手动操作的场景。原创 2025-07-27 08:48:17 · 1901 阅读 · 0 评论 -
SSL 中间人攻击:原理、实现与防御(C/C++代码实现)
SSL中间人攻击(SSL Man-in-the-Middle Attack,简称SSL MITM)是一种针对加密通信(尤其是SSL/TLS协议)的网络攻击手段。攻击者通过在客户端与服务器之间插入“中间人”角色,伪装成“合法”的中转节点,从而拦截、篡改或窃取原本加密的通信数据。与普通中间人攻击不同,SSL MITM的核心挑战在于突破SSL/TLS的加密保护——正常情况下,SSL/TLS通过证书验证和密钥协商确保通信双方身份可信,且数据传输加密。而攻击者的目标就是绕过这一机制,让客户端误认为中间人是“真实服原创 2025-07-23 22:16:05 · 1981 阅读 · 0 评论 -
全能进程注入器技术解析与应用防范(C/C++代码实现)
在Windows系统中,不同架构进程(x86、x64、Wow64)的内存空间与API调用机制存在天然壁垒,而全能进程注入器正是为解决这一问题而生的融合工具。其核心目标是通过统一的接口抽象,消除x64、Wow64和x86进程间的操作差异,实现跨架构的进程注入与函数调用。原创 2025-07-06 21:33:29 · 948 阅读 · 0 评论 -
为进程创建独立的 syslog 日志环境(C/C++代码实现)
`logcatch` 是一款用于 Linux 系统的工具,能够为指定进程创建独立的 `/dev/log` 设备,从而将进程的 syslog 消息隔离于全局 syslog 实例之外。它支持将 syslog 消息输出到指定的文件描述符,或者通过 Unix 域套接字连接到外部日志系统。本文将详细介绍 `logcatch` 的代码实现、相关原理以及其在开发中的用途。原创 2025-06-22 20:17:23 · 1741 阅读 · 0 评论 -
从标准输入直接执行 ELF 二进制文件的实用程序解析(C/C++实现)
本文将深入解析一个用C语言编写的实用程序,该程序能够直接从标准输入(stdin)读取ELF二进制文件,并在内存中执行它,无需将文件写入磁盘。我们将从实现原理、核心机制、用途场景和注意事项四个维度展开分析。原创 2025-06-07 17:57:58 · 1569 阅读 · 0 评论 -
C++11 Token Bucket (令牌桶)算法的锁无实现及应用
Token Bucket(令牌桶)算法是一种在流量控制和资源分配领域被广泛应用的技术。它通过约束数据传输速率或任务执行频率,确保系统在资源有限的情况下,能够稳定、高效地运行,避免因突发流量或任务积压而导致的性能下降甚至系统崩溃。原创 2025-06-07 15:11:54 · 1410 阅读 · 0 评论 -
高性能无堆分配函数包装器的设计与实现原理(C/C++代码实现)
本文探讨了C++中高性能无堆分配函数包装器的设计与实现。传统std::function使用堆分配存储闭包会带来性能开销,而本文提出的无堆分配方案通过内部缓冲区存储可调用对象,避免了动态内存分配。该实现使用类型擦除技术,通过Invoker和Manager函数指针统一操作不同类型的可调用对象,并利用placement new在内部缓冲区构造对象。性能测试显示,该方案在构造和调用开销上显著优于std::function,尤其适用于低延迟代理和线程池等对性能敏感的场景。这种设计在保持高级抽象的同时实现了接近原生代码原创 2025-05-25 10:41:17 · 1643 阅读 · 0 评论 -
轻量级UDP流量重放工具的技术实现与场景应用(C/C++代码实现)
为 UDP 流量重放提供了轻量级解决方案。通过精准的协议解析与时序控制,它不仅简化了UDP流量测试流程,更为复杂网络场景下的问题定位提供了高效解决方案。程序猿编码。原创 2025-04-07 12:59:06 · 755 阅读 · 0 评论 -
X.509证书与证书请求生成原理及其应用(C/C++代码实现)
X.509证书是遵循X.509国际标准的数字证书,广泛应用于网络安全、身份认证等领域。它是一种权威的电子文档,用于证明某个实体(如个人、组织、设备等)的身份和公钥的合法性。证书请求则是实体向证书颁发机构(CA)申请证书时提交的请求,包含了实体的公钥、身份信息等。原创 2025-03-28 08:34:29 · 1123 阅读 · 0 评论 -
轻量级TLS反向代理工具TLS-reverse-proxy:打造安全通信桥梁
TLS-reverse-proxy以其简洁的设计和强大的功能,为网络通信的安全提供了可靠的解决方案。它不仅能够保护数据的完整性,还能防止中间人攻击等安全威胁。无论是个人开发者还是企业团队,TLS-reverse-proxy都是一个值得信赖的TLS反向代理工具,帮助你在数字化世界中构建更加安全可靠的网络服务。Welcome to follow WeChat official account【程序猿编码】原创 2025-03-23 10:42:40 · 1363 阅读 · 0 评论 -
TCP服务器监听状态检测原理与实现技术(C/C++代码实现)
在网络安全和系统管理中,检测TCP服务器是否正在监听特定端口是一项常见任务。本文将介绍一个基于C语言实现的TCP服务器监听检测工具的原理、相关技术和实现细节。原创 2025-03-16 11:04:13 · 1199 阅读 · 0 评论 -
通用套接字包装器:实现高效网络通信的关键技术(C/C++代码实现)
在网络编程中,实现高效、稳定且跨平台的网络通信是一项具有挑战性的任务。不同的网络协议(如TCP、UDP)、不同的操作系统(如Windows、Linux)以及各种网络特性(如阻塞/非阻塞模式、广播功能等)都需要开发者进行细致的处理。通用套接字包装器的出现,为解决这些问题提供了一种有效的方案。本文将深入探讨通用套接字包装器的实现原理、相关技术功能以及其显著特征。原创 2025-03-02 21:40:46 · 751 阅读 · 0 评论 -
探秘 C 模块管理器:原理与实践(C/C++代码实现)
在C语言中,模块化编程是一种常见的代码组织方式,它通过将功能划分为独立的模块来提高代码的可维护性和复用性。然而,C语言本身并没有内置的模块系统,因此需要通过手动实现模块管理器来实现类似的功能。本文将介绍一种简单的C模块管理器的设计与实现原理,帮助开发者更好地理解模块化编程在C语言中的应用。原创 2025-02-25 22:55:15 · 1227 阅读 · 0 评论 -
深入解析与操作:基于C++的PE文件处理技术揭秘
PE(Portable Executable)文件是Windows操作系统下可执行文件的标准格式,其设计目标是支持跨平台的可执行代码和动态链接。要解析或操作PE文件,需深入理解其二进制结构和运行时加载机制。原创 2025-02-23 21:15:42 · 1168 阅读 · 0 评论 -
64位ELF可执行文件的静态补丁程序实现原理(C/C++代码实现)
ELF(Executable and Linkable Format)是一种用于可执行文件、目标文件和库的标准文件格式,广泛应用于Linux和Unix系统中。ELF文件由多个部分组成,包括文件头(Elf64_Ehdr)、程序头表(Elf64_Phdr)、节区头表(Elf64_Shdr)、符号表(Elf64_Sym)、动态链接表(Elf64_Dyn)等。这些部分共同描述了程序的结构、内存布局和动态链接信息。原创 2025-02-18 20:00:00 · 580 阅读 · 0 评论 -
后开发攻击中的轻量级交互式Shell实现(C/C++代码实现)
在网络安全和渗透测试领域,后开发(Post-Exploitation)阶段是攻击者在成功入侵目标系统后,进行进一步渗透、数据收集和持久化操作的关键时期。为了实现与目标系统的交互,攻击者通常会使用各种Shell工具。MyShell是一个专为后开发设计的轻量级交互式Shell,它结合了绑定(Bind)和反向连接(Backconnect)的功能,同时具备多种增强特性,如进程伪装、小体积和抗调试能力等。本文将深入分析MyShell的实现原理、关键特性以及其在后开发中的应用价值。原创 2025-02-16 20:07:01 · 701 阅读 · 0 评论 -
C++ 中信号转异常机制:在磁盘 I/O 内存映射场景下的应用与解析
这种将信号转换为 C++ 异常的机制在磁盘 I/O 内存映射场景下具有显著优势。它使得代码能够在统一的 C++ 异常处理框架下处理底层系统信号和异常,提高了代码的可读性和可维护性。开发人员可以使用熟悉的try-catch块来捕获和处理错误,而不需要单独处理信号,降低了出错的概率。然而,该机制也存在一些局限性。文档中明确指出,此功能可能不依赖 RAII(Resource Acquisition Is Initialization),即资源的获取和释放可能无法像传统的 RAII 方式那样安全可靠。这意味着在某原创 2025-02-09 22:13:41 · 818 阅读 · 0 评论 -
自定义命令执行器:C++中命令封装的深度探索(C/C++实现)
在现代软件开发中,执行系统命令是一项常见的需求,无论是自动化脚本、系统管理工具,还是需要调用外部程序的复杂应用程序,都离不开对系统命令的调用。然而,直接使用系统调用(如 execve)虽然简单,但存在诸多问题,例如安全性不足、灵活性差以及可维护性低等。为了克服这些问题,我们可以通过封装命令执行逻辑,设计一个自定义的命令执行器。本文将深入探讨如何在 C++ 中实现一个安全、灵活且易于管理的命令执行器。原创 2025-01-25 22:25:31 · 923 阅读 · 0 评论 -
基于libuv实现的C++定时器管理器——TimerManager
在多线程编程中,定时器是一个非常重要的功能,它能够让我们在特定的时间点执行特定的任务。本文将介绍一个基于libuv库实现的C++定时器管理器——TimerManager,它通过创建多个工作线程,每个线程运行一个uvloop来高效地管理定时器任务。原创 2025-01-19 18:22:48 · 856 阅读 · 0 评论 -
高性能AC自动机:基于TrieTree的优化与实现(C/C++代码实现)
基于 STL map、unordered_map 和 skiplist 的 TrieTree 在 AC 自动机中的应用具有重要的理论和实践意义。通过合理选择和使用 STL 容器,可以高效地构建和操作 TrieTree,从而实现 AC 自动机的快速多模匹配功能。在文本编辑、网络内容过滤、信息检索、自然语言处理、网络安全防护等多个领域,AC 自动机结合基于 STL 容器的 TrieTree 都展现出了显著的优势,能够提高系统的性能、灵活性和可扩展性,为解决复杂的文本匹配问题提供了有力的工具和方法。原创 2025-01-12 21:55:43 · 959 阅读 · 0 评论 -
实现TCP套接字接管的零停机时间设计模式(C/C++代码实现)
TCP套接字接管的核心在于文件描述符的传递。在4.4BSD系统中,可以通过Unix域套接字使用SCM_RIGHTS辅助数据来传输一组文件描述符。具体来说,当新版本的服务进程启动后,老版本的服务进程会通过Unix域套接字将TCP套接字的文件描述符传递给新进程。新进程接收到文件描述符后,便可以接管原有的TCP连接,继续处理客户端的请求,从而实现服务的无缝切换。原创 2025-01-08 22:42:47 · 743 阅读 · 0 评论 -
一个快速灵活的IPv4和IPv6非递归DNS服务器(C/C++代码实现)
在网络世界中,DNS(域名系统)在将人类友好的域名转换为计算机可以理解的IP地址方面发挥着关键作用。然而,设置和管理DNS服务器可能相当复杂,特别是当你需要一个既快速又灵活的解决方案时。这就是quick DNS的用武之地,它是一个轻量级且高效的DNS服务器,能够处理IPv4和IPv6查询,甚至可以在没有将地址绑定到接口的情况下工作。原创 2025-01-05 22:03:22 · 1083 阅读 · 0 评论 -
Linux dd 命令详解:工作原理与实用指南(C/C++代码实现)
这段代码是一个模仿 Linux dd 命令的工具,它用于在不同文件之间复制数据。dd 是一个非常强大的命令行工具,可以用于数据备份、转换和复制。下面我将详细解释这段代码的原理、实现方式以及如何运行和测试。原创 2024-12-18 18:03:54 · 2117 阅读 · 0 评论 -
恶意软件模拟sudo行为窃取密码的原理与实现(C/C++实现)
在Linux系统中,`sudo`命令允许授权的用户以另一个用户(通常是root)的身份执行命令。恶意软件作者利用这一点,创建了一个模仿`sudo`行为的程序,其真实目的是窃取用户的sudo密码。原创 2024-11-30 16:12:45 · 848 阅读 · 0 评论 -
深入解析:OSPF协议的实现(C/C++代码实现)
开放式最短路径优先(Open Shortest Path First,OSPF)是对链路状态路由协议的一种实现,隶属内部网关协议(IGP),故运作于自治系统内部。OSPF协议是大中型网络上使用最为广泛的IGP(Interior Gateway Protocol)协议。采用迪杰斯特拉算法(Dijkstra's algorithm)来计算最短路径树。它使用“代价(Cost)”作为路由度量。链路状态数据库(LSDB)用来保存当前网络拓扑结构,路由器上属于同一区域的链路状态数据库是相同的(属于多个区域的路由器会为每原创 2024-11-17 22:24:04 · 1449 阅读 · 1 评论 -
DNS放大攻击:网络空间的隐形杀手(C/C++代码实现)
在当今数字化时代,网络安全问题日益突出。其中,分布式拒绝服务(DDoS)攻击是一种常见且破坏力极大的网络攻击方式。DNS放大攻击作为DDoS攻击的一种变种,因其利用了DNS协议的特性而具有更大的威胁性。原创 2024-10-27 21:26:36 · 1298 阅读 · 0 评论 -
如何使用TOTP进行SSH登录认证(C/C++代码实现)
TOTP(基于时间的一次性密码)是一种广泛使用的多因素认证技术,它通过算法生成一个与时间相关的一次性密码,通常每30秒或60秒更换一次。这种密码在你输入后会失效,因此即使有人截获了密码,他们也无法在下一次登录时使用它,从而大大增加了账户的安全性。原创 2024-09-28 15:57:58 · 1513 阅读 · 0 评论 -
深入解析:如何通过网络命名空间跟踪单个进程的网络活动(C/C++代码实现)
通过网络命名空间跟踪单个进程的网络活动是一种高级网络监控技术,它允许系统管理员和网络安全专家深入分析特定应用程序或服务的网络行为。通过创建隔离的网络环境并将目标进程移入该环境,我们可以精确地捕捉到该进程生成的所有网络流量,而不受其他进程的干扰。在实际操作中,这通常涉及使用ip netns命令来管理网络命名空间,利用nsenter工具将进程附加到特定的网络命名空间,并在该命名空间内部署如tcpdump或iftop等网络嗅探工具以捕获数据包。通过这种方式,我们能够获得关于进程通信模式、数据流大小、连接尝试等原创 2024-09-17 22:00:34 · 1419 阅读 · 1 评论 -
深入探索Linux动态链接库注入(C/C++代码实现)
Inject是一款功能强大的Linux DSO注入工具,它通过ptrace系统调用实现了对运行中进程的代码注入。该工具在系统调试、软件测试和安全研究等领域有着广泛的应用。原创 2024-09-08 22:49:14 · 1795 阅读 · 0 评论 -
基于epoll和Reactor模式实现ftp服务器(C/C++代码实现)
FTP(File Transfer Protocol)是一种用于在计算机网络上进行文件传输的应用层协议。在本文中,我们将探讨如何使用epoll和Reactor模式来实现一个简单的FTP服务器。epoll是一种高效的I/O事件通知机制,而Reactor模式则是一种基于事件驱动的编程模型。通过结合这两种技术,我们可以构建一个高性能、可扩展的FTP服务器。原创 2024-09-05 21:40:03 · 1071 阅读 · 0 评论 -
TLS握手性能测试工具:快速重置、多线程与高级统计分析(C/C++代码实现)
随着网络安全的日益重要,传输层安全性(TLS)协议在保护数据传输中扮演着关键角色。TLS握手作为该协议的核心部分,确保了客户端和服务器之间的安全通信。鉴于其重要性,对TLS握手的性能进行精确评估变得至关重要。该工具专注于TLS握手的性能测试,而不涉及数据传输或重协商。原创 2024-09-01 23:02:17 · 1787 阅读 · 1 评论 -
一个快速简单的工具来分析SSL/TLS协议数据帧 (C/C++代码实现)
然而,在其他方面,具有讽刺意味的是,记录提供了一些新的重要信息,如密码套件、证书、服务器名称指示(SNI)等的偏好。SSL/TLS协议是网络安全通信的基石,它通过在客户端和服务器之间建立一个加密的通道,确保数据传输的安全性和完整性。通过Wireshark的抓包分析,可以直观地了解SSL/TLS协议的实际执行过程,包括客户端和服务器之间的消息交换、加密套件的选择、证书的验证以及最终的密钥交换。在进行SSL/TLS协议分析时,需要注意的是,随着网络安全威胁的不断演变,SSL/TLS协议也面临着一些挑战和漏洞。原创 2024-08-25 21:32:39 · 1148 阅读 · 0 评论 -
饥饿的鸟问题与无锁单消费者多生产者FIFO队列的实现(C/C++代码实现)
饥饿的鸟问题是一个典型的生产者/消费者问题,它涉及到多个生产者(鸟类)和单个消费者(鸟巢)之间的资源竞争和同步。在这个问题中,多个鸟类同时尝试向鸟巢中添加资源(如食物),而鸟巢则按照先进先出(FIFO)的顺序消费这些资源。由于资源有限,可能会出现某些鸟类长时间无法获取资源的情况,这就是所谓的“饥饿”。:定义了线程操作的总数。:定义了生产者线程的数量。饥饿的鸟问题是生产者/消费者问题的一个经典例子,通过实现一个无界的无锁单消费者多生产者FIFO队列,我们可以有效地解决这个问题。原创 2024-08-11 12:02:29 · 930 阅读 · 0 评论