当前位置: 首页 > news >正文

deepseek的模型经过训练 ai写出了linux 64位加壳软件

 

1. 加壳程序的设计目标

  • 目标:保护64位Linux下的可执行文件,使其难以被反编译或调试。
  • 核心功能
    • 在运行时加载原始可执行文件并解密。
    • 隐藏壳代码和原程序的真正入口点。
    • 提供一定的反调试机制。

2. 思路

  1. 加壳流程

    • 加载器(Loader):负责将壳代码和被保护的程序加载到内存中。
    • 解密引擎:解密原始可执行文件的加密部分,并将其注入到内存中。
    • 原始程序入口点:实际程序在解密后运行。
  2. 核心模块

    • API Hooking:捕获关键系统调用,防止调试工具(如GDB)附加到进程。
    • Anti-Debugging:检测是否在调试环境下运行。
    • 加密机制:对原始程序代码进行加密,并通过解密引擎在内存中还原。

3. 示例代码框架

以下是一个基于C语言和x86_64汇编语言的示例加壳程序。这个示例假设你已经有一个需要保护的可执行文件(target.exe),并将生成一个带壳的新文件(protected.exe)。

加载器代码(loader.c
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <elf.h>#define SHELL_CODE_SIZE 1024int main(int argc, char *argv[]) {if (argc != 3) {printf("Usage: %s <target_executable> <protected_executable>\n", argv[0]);return 1;}// 加载目标文件int fd = open(argv[1], O_RDONLY);if (fd == -1) {perror("Failed to open target executable");return 1;}struct stat st;fstat(fd, &st);off_t file_size = st.st_size;void *mem = malloc(file_size + SHELL_CODE_SIZE);if (!mem) {perror("Failed to allocate memory");return 1;}// 复制目标文件内容到内存read(fd, mem, file_size);close(fd);Elf64_Ehdr *ehdr = (Elf64_Ehdr *)mem;// 生成随机盐值用于加密unsigned char salt[16];// (注:实际需要实现一个加密算法,如AES)// 编写Shell代码并注入到内存中void *shell_code = mem + file_size;*(unsigned long long *)shell_code = ...; // shellcode入口int protect_fd = open(argv[2], O_WRONLY | O_CREAT, 0755);if (protect_fd == -1) {perror("Failed to create protected executable");return 1;}// 将壳程序写入文件write(protect_fd, shell_code, SHELL_CODE_SIZE);close(protect_fd);free(mem);return 0;
}

壳代码示例(x86_64汇编)
section .textglobal _start_start:; 检查是否在调试器下运行mov rax, 0x7d /* syscall gettid */syscallmov [ThreadId], eax; 检测 GDB 是否附加xor rbx, rbxlea rcx, [rbx + 1]sysret:inc rbxcmp rbx, 100d  ; 设置一个阈值,防止无限循环jge exit      ; 如果超过阈值,退出nopint3            ; 碰到断点的话,会停止在调试器中

相关文章:

deepseek的模型经过训练 ai写出了linux 64位加壳软件

1. 加壳程序的设计目标 目标&#xff1a;保护64位Linux下的可执行文件&#xff0c;使其难以被反编译或调试。核心功能&#xff1a; 在运行时加载原始可执行文件并解密。隐藏壳代码和原程序的真正入口点。提供一定的反调试机制。 2. 思路 加壳流程&#xff1a; 加载器&#xf…...

解锁音频新境界:LALAL.AI 与 Audo Studio 深度解析

在音频处理的世界里&#xff0c;噪音常常是困扰我们的一大难题。无论是专业的音频工作者&#xff0c;还是普通的音频爱好者&#xff0c;都渴望拥有一款强大的工具来解决这个问题。今天&#xff0c;就为大家介绍两款来自 AI 工具导航&#xff08;AIDH.NET&#xff09;的 AI 语音…...

Kubernetes 使用 Kube-Prometheus 构建指标监控 +飞书告警

1 介绍 Prometheus Operator 为 Kubernetes 提供了对 Prometheus 机器相关监控组件的本地部署和管理方案&#xff0c;该项目的目的是为了简化和自动化基于 Prometheus 的监控栈配置&#xff0c;主要包括以下几个功能&#xff1a; Kubernetes 自定义资源&#xff1a;使用 Kube…...

20250221 NLP

1.向量和嵌入 https://zhuanlan.zhihu.com/p/634237861 encoder的输入就是向量&#xff0c;提前嵌入为向量 二.多模态文本嵌入向量过程 1.文本预处理 文本tokenizer之前需要预处理吗&#xff1f; 是的&#xff0c;文本tokenizer之前通常需要对文本进行预处理。预处理步骤可…...

【C++】const关键字的作用及常见应用场景

一、核心作用 用于定义“常量”&#xff0c;限制程序对变量的修改&#xff0c;提升代码安全性和可读性。其核心作用包括&#xff1a; 避免误修改&#xff1a;明确标识不可变数据。编译器优化&#xff1a;常量可被放入符号表&#xff0c;减少内存访问&#xff0c;优化执行效率…...

04控制流

一、二路分支 逻辑&#xff1a;程序中某段代码需要在满足某个条件时才能运行形式&#xff1a; if 语句&#xff1a;表达一种 如果-则 的条件执行关系if-else 语句&#xff1a;表达一种 如果-否则 的互斥分支关系 流程图&#xff1a; 注意&#xff1a; if 语句可以单独使用&…...

【Leetcode 每日一题】2506. 统计相似字符串对的数目

问题背景 给你一个下标从 0 0 0 开始的字符串数组 w o r d s words words。 如果两个字符串由相同的字符组成&#xff0c;则认为这两个字符串 相似 。 例如&#xff0c;“abca” 和 “cba” 相似&#xff0c;因为它们都由字符 ‘a’、‘b’、‘c’ 组成。然而&#xff0c;“…...

【Shell编程 / 9】脚本实战项目:从基础到进阶的自动化管理方案

文章目录 Shell脚本实战项目自动化部署脚本系统监控脚本文件备份脚本定时任务管理脚本文件传输自动化脚本自动化日志清理脚本用户管理脚本 Shell脚本实战项目 在掌握了 Shell 脚本的基本语法和高级技巧后&#xff0c;实践是进一步提升脚本编写能力的关键。通过参与一些实际的项…...

在PyTorch中使用插值法来优化卷积神经网络(CNN)所需硬件资源

插值法其实就是在已知数据点之间估计未知点的值。通过已知的离散数据点,构造一个连续的曲线函数,预测数据点之间的空缺值是什么并且自动填补上去。 适用场景: 在卷积神经网络(CNN)中的应用场景中,经常遇到计算资源有限,比如显存不够或者处理速度慢,需要用插值来降低计…...

黄金市场现状与驱动因素分析

一、当前市场现状&#xff1a;挤兑、运力与供应链危机 全球金库告急与运输瓶颈 伦敦商业银行金库的黄金存量告急&#xff0c;纽约和伦敦市场出现“史诗级挤兑”。提取英格兰银行金库的黄金需等待4-8周&#xff0c;远高于常规的几天时间[citation:用户描述]。专业运输车辆超负荷…...

Linux arm64 IOMMU总结

一、DMA的引入 Non-DMA&#xff1a;CPU直接与设备进行数据交互&#xff0c;CPU的负载会随着数据的读写而增加&#xff1b; DMA&#xff1a;CPU不参与数据的直接传输&#xff0c;DMA Controller负责Device与Memory之间的数据搬运&#xff0c;并以中断信号的形式通知CPU&#xf…...

服务器通过 ollama 运行deepseek r1

1、服务器环境简介 56核 CPU64G 内存无显卡已安装 Ollama 2、下载模型与配置 正常可以通过 ollama pull 或 ollama run 命令直接下载&#xff0c;但通常会遇到连接超时、找不到网址等总理。因此&#xff0c;可以使用国内的模型站进行下载&#xff0c;在这里使用魔塔查找模型…...

MYSQL学习笔记(九):MYSQL表的“增删改查”

前言&#xff1a; 学习和使用数据库可以说是程序员必须具备能力&#xff0c;这里将更新关于MYSQL的使用讲解&#xff0c;大概应该会更新30篇&#xff0c;涵盖入门、进阶、高级(一些原理分析);这一篇讲述一些在MYSQL的数据类型&#xff0c;和表的“增删改查”基本操作;虽然MYSQ…...

Oracle JDK、Open JDK zulu下载地址

一、Oracle JDK https://www.oracle.com/java/technologies/downloads/ 刚进去是最新的版本&#xff0c;往下滑可以看到老版本 二、Open JDK的 Azul Zulu https://www.azul.com/downloads/ 直接可以选版本等选项卡...

分类解析决策模型

一、按理性程度划分的决策模型 1. 完全理性模型(古典决策理论) 核心假设:决策者拥有完全信息,能计算所有选项的效用并选择最优解。数学模型: 期望效用理论(Expected Utility Theory, EU): E U = ∑ ( p i...

【SPIE出版,见刊快速,EI检索稳定,浙江水利水电学院主办】2025年物理学与量子计算国际学术会议(ICPQC 2025)

2025年物理学与量子计算国际学术会议&#xff08;ICPQC 2025&#xff09;将于2025年4月18-20日在中国杭州举行。本次会议旨在汇聚全球的研究人员、学者和业界专家&#xff0c;共同探讨物理学与量子计算领域的最新进展与前沿挑战。随着量子技术的快速发展&#xff0c;其在信息处…...

【网络】高级IO——Reactor版TCP服务器

1.什么是Reactor Reactor 是一种应用在服务器端的开发模式&#xff08;也有说法称 Reactor 是一种 IO 模式&#xff09;&#xff0c;目的是提高服务端程序的并发能力 它要解决什么问题呢&#xff1f; 传统的 thread per connection 用法中&#xff0c;线程在真正处理请求之前首…...

3.Docker常用命令

1.Docker启动类命令 1.启动Docker systemctl start docker 2.停止Docker systemctl stop docker 3.重启Docker systemctl restart docker 4.查看Docker状态 systemctl status docker 5.设置开机自启(执行此命令后每次Linux重启后将自启动Docker) systemctl enable do…...

【uni-app】对齐胶囊容器组件

代码碎片 <template><div><view :style"{ height: ${statusBarHeight}px }"></view><viewclass"":style"{height: ${menuButtonHeight menuButtonPadding * 2}px,width: ${menuButtonInfo.left}px,}"><slot …...

JUC并发—10.锁优化与锁故障

大纲 1.标志位修改场景优先使用volatile(服务优雅停机) 2.数值递增场景优先使用Atomic类(心跳计数器) 3.共享变量仅对当前线程可见的场景优先使用ThreadLocal(edits log的处理) 4.读多写少需要加锁的场景优先使用读写锁(服务注册表的并发读写) 5.尽量减少线程对锁占用时间…...

避坑指南:在Xilinx Ultrascale+ FPGA上处理高速LVDS ADC信号时,我踩过的那些时序上的‘坑’

Xilinx Ultrascale FPGA高速LVDS ADC信号处理的五个关键时序陷阱与实战解法 当你在Xilinx Ultrascale FPGA上处理高速LVDS ADC信号时&#xff0c;时序问题就像潜伏在暗处的陷阱&#xff0c;稍有不慎就会导致数据错位、信号不稳定甚至系统崩溃。本文将分享我在实际项目中遇到的五…...

6本必读的集成学习经典书籍推荐

1. 集成学习入门&#xff1a;为什么这6本书值得一读&#xff1f; 集成学习作为机器学习领域的重要分支&#xff0c;通过组合多个基础模型的预测结果来提升整体性能&#xff0c;在实际应用中展现出显著优势。我从业十年来见证过太多团队从单一模型转向集成方法后取得的突破性进展…...

RK3588 MPP解码实战:从mpi_dec_test源码剖析到自定义解码器开发

1. RK3588 MPP解码框架初探 第一次接触RK3588的MPP解码框架时&#xff0c;我完全被它强大的视频处理能力震撼到了。这块芯片内置的硬解模块能轻松应对4K60fps的视频解码&#xff0c;功耗却只有软件解码的十分之一。官方提供的mpi_dec_test demo就像一把钥匙&#xff0c;帮我打开…...

测试库与生产库怎么仅同步新增增量数据_无损发布与更新方案

pg_dump --inserts ON CONFLICT DO NOTHING 可安全实现增量同步&#xff1a;先用 --inserts 导出新增数据&#xff0c;再用 sed 替换为 INSERT ... ON CONFLICT DO NOTHING&#xff0c;依赖唯一约束跳过重复&#xff0c;避免误更新或主键冲突。如何用 pg_dump --inserts --…...

用MIPSsim模拟器调试alltest.asm:手把手教你观察CPU的‘内心戏’

用MIPSsim模拟器调试alltest.asm&#xff1a;手把手教你观察CPU的‘内心戏’ 当你第一次打开MIPSsim模拟器&#xff0c;载入alltest.asm样例程序时&#xff0c;是否感觉像面对一个黑箱&#xff1f;指令一条条执行&#xff0c;寄存器数值跳动着变化&#xff0c;但究竟发生了什么…...

SENT协议在新能源汽车BMS中的应用实战:如何用SAE J2716标准传输电池温度与电压

SENT协议在新能源汽车BMS中的高可靠数据传输实践 新能源汽车的电池管理系统&#xff08;BMS&#xff09;如同人体的神经系统&#xff0c;需要实时感知每个电池模组的生命体征。而SENT协议正是承载这些关键神经信号的数字传输通道。在高压、强电磁干扰的复杂车载环境中&#xff…...

Rust 性能优化的三个方向

Rust 性能优化的三个方向 Rust 以其高效、安全和并发能力著称&#xff0c;但即使如此&#xff0c;性能优化仍然是开发者需要关注的重点。Rust 的性能优化主要围绕三个方向展开&#xff1a;减少内存分配、提高代码执行效率以及利用并发优势。这三个方向相辅相成&#xff0c;能够…...

STM32F103用CubeMX实现ADC欠采样:用800Hz采样率捕获1kHz正弦波(附工程源码)

STM32F103实战&#xff1a;用CubeMX配置ADC欠采样捕获1kHz正弦波 在嵌入式系统开发中&#xff0c;ADC采样是获取模拟信号的关键技术。传统采样理论告诉我们&#xff0c;采样频率必须至少是信号最高频率的两倍&#xff08;奈奎斯特采样定理&#xff09;&#xff0c;但欠采样技术…...

格拉吉布(Glasdegib)适合哪些AML患者?适应症与适用人群

急性髓系白血病&#xff08;AML&#xff09;是一种起源于造血干细胞的恶性克隆性疾病&#xff0c;其特点是骨髓与外周血中原始和幼稚髓性细胞异常增生&#xff0c;病情进展迅速&#xff0c;尤其是对于老年或体质虚弱的患者&#xff0c;治疗选择极为有限。格拉吉布&#xff08;G…...

SSD1306 OLED驱动避坑指南:你的SPI时序和寻址命令真的配对了么?

SSD1306 OLED驱动深度优化&#xff1a;从SPI时序到寻址模式的精准控制 当你在深夜调试OLED屏幕&#xff0c;看着那些本该整齐排列的像素点却像失控的萤火虫一样四处乱窜时&#xff0c;是否曾怀疑过人生&#xff1f;这篇文章将带你深入SSD1306驱动的核心机制&#xff0c;解决那些…...