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

Docker 容器中运行 AI CLI 工具:用户隔离与持久化卷实战指南撂

环境安装pip install keystone-engine capstone unicorn这3个工具用法极其简单下面通过示例来演示其用法。Keystone示例from keystone import *CODE bINC ECX; ADD EDX, ECXtry:ks Ks(KS_ARCH_X86, KS_MODE_64)encoding, count ks.asm(CODE)print(f汇编指令数量: {count})print(f机器码 (十进制): {encoding})print(f机器码 (Hex): {.join(f{x:02x} for x in encoding)})except KsError as e:print(fERROR: {e})代码解释代码流程十分简单初始化keystone-编译代码-输出结果初始化keystoneks Ks(KS_ARCH_X86, KS_MODE_64)初始化keystone引擎第一个参数选择指令架构例如x86arm......第二个参数选择模式例如64位32位小端序......编译代码将汇编转换为16进制的shellcodeencoding, count ks.asm(CODE)第一个返回值机器码指令的数组第二个返回值汇编指令数量Capstonecapstone的用法和keystone差不多。示例from capstone import *CODE b\xff\xc1\x01\xcamd Cs(CS_ARCH_X86, CS_MODE_64)print(地址\t\t指令\t\t操作数)print(- * 30)for i in md.disasm(CODE, 0x1000):print(f0x{i.address:x}:\t{i.mnemonic}\t{i.op_str})代码解释代码流程跟keystone差不多初始化capstone-反编译代码-输出结果初始化capstonemd Cs(CS_ARCH_X86, CS_MODE_64)初始化capstone引擎第一个参数选择指令架构例如x86arm......第二个参数选择模式例如64位32位小端序......反编译代码for i in md.disasm(CODE, 0x1000):print(f0x{i.address:x}:\t{i.mnemonic}\t{i.op_str})使用方法disasm反汇编第一个参数机器码第二个参数第一条指令的基地址返回一个包含指令对象的数组unicornunicorn提供的方法使用也不复杂但需要一定的内存基础知识。下面用一个案例解释。示例情景模拟 我逆向过程中发现一个xor加密代码我需要通过模拟执行对密文进行解密。根据汇编代码可以得知0x20000存放密文0x30000存放结果0x10000中读取密钥keyfrom unicorn import *from unicorn.x86_const import *import structfrom keystone import *ASM_CODE MOV ECX, 5MOV ESI, 0x20000MOV EDI, 0x30000MOV BL, byte ptr [0x10000]loop_start:LODSBXOR AL, BLSTOSBLOOP loop_startdef get_code():ks Ks(KS_ARCH_X86, KS_MODE_32)encoding, count ks.asm(ASM_CODE)return bytes(encoding)CODE get_code()ADDRESS_CODE 0x400000ADDRESS_KEY 0x10000ADDRESS_IN 0x20000ADDRESS_OUT 0x30000REAL_KEY 0x77CIPHER_TEXT b\x3F\x12\x1B\x1B\x18def hook_code(uc, access, address, size, value, user_data):if address ADDRESS_KEY:key_value uc.mem_read(address, size)print(fkey: {hex(key_value[0])})def start_emulation():try:print(初始化环境...)mu Uc(UC_ARCH_X86, UC_MODE_32)mu.mem_map(0x0, 1 * 1024 * 1024)mu.mem_map(ADDRESS_CODE, 2 * 1024 * 1024)mu.mem_write(ADDRESS_CODE, CODE)mu.mem_write(ADDRESS_IN, CIPHER_TEXT)mu.mem_write(ADDRESS_KEY, struct.pack(B, REAL_KEY))mu.hook_add(UC_HOOK_MEM_READ, hook_code)mu.emu_start(ADDRESS_CODE, ADDRESS_CODE len(CODE))decrypted_text mu.mem_read(ADDRESS_OUT, 5)print(f解密后的文本: {decrypted_text.decode()})except UcError as e:print(f模拟错误: {e})if __name__ __main__:start_emulation()代码解释代码流程初始化环境-分配虚拟内存-写入数据-添加捕获操作-模拟执行指令-读取内存结果初始化环境这个跟上面的keystone和capstone一样就不解释了mu Uc(UC_ARCH_X86, UC_MODE_32)分配虚拟内存第一行是用于存放堆内存数据第二行是用于存放执行的代码mu.mem_map(0x0, 1 * 1024 * 1024)mu.mem_map(ADDRESS_CODE, 2 * 1024 * 1024)mem_map用于初始化虚拟内存第一个参数内存的虚拟地址基址第二个参数内存的大小内写入数据第一行写入代码第二行写入密文第三行写入解密keymu.mem_write(ADDRESS_CODE, CODE)mu.mem_write(ADDRESS_IN, CIPHER_TEXT)mu.mem_write(ADDRESS_KEY, struct.pack(B, REAL_KEY))mem_write用于写入虚拟内存第一个参数写入内存的地址第二个参数写入内存的数据添加捕获操作hook用于捕获数据这里用于捕获keydef hook_code(uc, access, address, size, value, user_data):if address ADDRESS_KEY:key_value uc.mem_read(address, size)print(fkey: {hex(key_value[0])})mu.hook_add(UC_HOOK_MEM_READ, hook_code)hook_add添加hook第一个参数捕获模式规定什么时候触发hook例如读取内存中断捕获......第二个参数触发的回调函数回调函数各个参数如下def hook_code(uc, access, address, size, value, user_data):uc模拟器对象access当前访问类型UC_MEM_READUC_MEM_WRITE......address当前访问的虚拟地址size当前访问数据大小valueaccess为UC_MEM_WRITE则这里为要写入的值user_data用户在add_hook时传进去的自定义数据模拟执行指令mu.emu_start(ADDRESS_CODE, ADDRESS_CODE len(CODE))第一个参数模拟执行的起始地址第二个参数模拟执行的代码大小读取内存结果decrypted_text mu.mem_read(ADDRESS_OUT, 5)第一个参数读取内存的地址第二个参数读取内存的大小匮榷拷的

相关文章:

Docker 容器中运行 AI CLI 工具:用户隔离与持久化卷实战指南撂

环境安装 pip install keystone-engine capstone unicorn 这3个工具用法极其简单,下面通过示例来演示其用法。 Keystone 示例 from keystone import * CODE b"INC ECX; ADD EDX, ECX" try:ks Ks(KS_ARCH_X86, KS_MODE_64)encoding, count ks.asm(CODE)…...

软件人员可以关注的 Skill,亲测确实不错,值得试一下

Agent Skill 是一套标准化的能力封装,它将复杂的、需要多步处理和工具调用的任务,打包成一个可以直接使用的“技能包”。推荐一些在实际工作中表现不错的 Skill: 1. frontend-design 介绍:打造具有高设计质量的独特生产级前端界面…...

和AI一起搞事情#:边剥龙虾边做个中医技能来起号冠

1. 核心概念 在 Antigravity 中,技能系统分为两层: Skills (全局库):实际的代码、脚本和指南,存储在系统级目录(如 ~/.gemini/antigravity/skills)。它们是“能力”的本体。 Workflows (项目级)&#xff1a…...

Blazor组件化演进终极指南:2026年必须掌握的5大架构范式与3种反模式规避清单

第一章:Blazor组件化演进的底层动因与2026技术坐标系Blazor 的组件化并非单纯语法糖的迭代,而是对 Web 前端架构范式、.NET 生态边界以及现代云原生交付链路三重压力下的系统性响应。其底层动因根植于三个不可逆趋势:WebAssembly 运行时成熟度…...

2026年AI热点:阿里新模型领跑行业

今日AI热点汇总(2026年4月9日) 一、阿里发布新模型,性能大幅提升 今天,阿里巴巴重磅推出了全新的通义千问模型,这个新模型在语言理解、逻辑推理和代码生成等方面都有了显著提升。 更强的理解能力:能更准确地…...

普通人也能轻松掌握!5个技巧让你玩转AI大模型,从入门到精通的实用指南!

随着ChatGPT、文心一言、通义千问等AI大模型的普及,很多人都在使用AI大模型,普通人学习时往往陷入“指令说不清楚、输出不符合预期”的困境。其实,学会AI大模型的核心,不在于掌握技术原理,而在于掌握“与大模型高效沟通…...

数据团队该醒醒了:AI智能体不是你的下一个仪表盘闹

7.1 初识三维模型 7.1.1 三维模型的数据载体 随着计算机图形技术的发展,我们或多或少都会见过或者听说过三维模型。笔者始终记得小时候第一次在电视上看到三维动画《变形金刚:超能勇士》的震撼感受;而现在我们已经可以在手机上玩三维游戏《王…...

喔去,litellm 竟然被投毒了,赶紧检查你的机器中招了没有稳

一、什么是setuptools? setuptools 是一个用于创建、分发和安装 Python 包的核心库。 它可以帮助你: 定义 Python 包的元数据(如名称、版本、作者等)。 声明包的依赖项,确保你的包能够正确运行。 构建源代码分发包&…...

旧Mac设备重生指南:使用OpenCore Legacy Patcher升级系统全攻略

旧Mac设备重生指南:使用OpenCore Legacy Patcher升级系统全攻略 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 随着苹果系统的不断更新&#xff…...

RT-Thread实时操作系统入门与实践指南

1. RT-Thread 入门指南:从零开始掌握实时操作系统 RT-Thread 作为一款国产开源实时操作系统(RTOS),近年来在物联网、智能硬件等领域获得了广泛应用。对于嵌入式开发者而言,掌握 RT-Thread 不仅能提升开发效率&#xff…...

OpenClaw小龙虾产品形态

OpenClaw小龙虾产品形态 全文链接:OpenClaw小龙虾产品形态 收录与 OpenClaw 小龙虾 相关的 衍生发行、厂商适配、多智能体栈、本地控制台、垂直场景桌面工作台、便携与移动端交付、具身智能场景原型 等 GitHub 仓库。 第三方与厂商衍生 仓库类别形态 / 场景简介Sta…...

好用有省钱的电脑多开神奇工具

今天,我们要介绍的是一款专为电脑用户设计的神奇软件——Safeboxie多开器。这款软件打破了传统限制,无论是游戏还是其他应用程序,都能轻松实现多开。你是否曾为在电脑上无法同时运行多个游戏或软件而烦恼?Safeboxie多开器将完美解…...

大模型时代,这5大热门职业让你月入50K!错过等一年!

在数字技术迭代速度不断加快的当下,人工智能领域的大模型(Large Models) 已从实验室走向产业落地,成为重构各行业生产模式、驱动创新升级的核心引擎。凭借在数据处理、模式识别、复杂任务决策等方面的超强能力,大模型不…...

值类型与引用类型:别再只背“栈和堆”了,看这 个实际影响骋

基础示例:单工作表 Excel 转 TXT 以下是将一个 Excel 文件中的第一个工作表转换为 TXT 的完整步骤: 1. 加载并读取Excel文件 from spire.xls import * from spire.xls.common import * workbook Workbook() workbook.LoadFromFile("示例.xlsx"…...

PHP 8.9 JIT性能调优黄金三角:opcache.jit、opcache.jit_buffer_size、opcache.jit_hot_func(附生产环境最优参数表)

第一章:PHP 8.9 JIT 编译器架构演进与性能边界认知 PHP 8.9 并非官方发布的正式版本(截至 PHP 官方最新稳定版为 8.3),但本章基于社区前瞻研究与内核补丁集构建的“PHP 8.9 JIT”概念原型,探讨其在 LLVM 后端集成、分层…...

AI Agent 跑完任务怎么通知你?我写了个微信推送服务弦

1、普通的insert into 如果(主键/唯一建)存在,则会报错 新需求:就算冲突也不报错,用其他处理逻辑 回到顶部 2、基本语法(INSERT INTO ... ON CONFLICT (...) DO (UPDATE SET ...)/(NOTHING)) 语…...

JMS, ActiveMQ 学习一则偌

开发个什么Skill呢? 通过 Skill,我们可以将某些能力进行模块化封装,从而实现特定的工作流编排、专家领域知识沉淀以及各类工具的集成。 这里我打算来一次“套娃式”的实践:创建一个用于自动生成 Skill 的 Skill,一是用…...

为什么你的file_get_contents总崩溃?揭秘PHP 8.3+大文件I/O底层机制与3种替代架构

第一章:为什么你的file_get_contents总崩溃?揭秘PHP 8.3大文件I/O底层机制与3种替代架构当处理超过100MB的文件时,file_get_contents() 在 PHP 8.3 中频繁触发内存溢出(Fatal error: Allowed memory size exhausted)&a…...

Arduino Ethernet库深度解析与W5500硬件协同开发指南

1. Arduino Ethernet库深度解析:嵌入式以太网通信的工程实践指南1.1 库定位与硬件基础Arduino Ethernet库是Arduino官方为以太网通信设计的核心驱动库,专为Arduino Ethernet Shield(基于W5100/W5200/W5500以太网控制器)及兼容硬件…...

ESP32便携电子相册DIY指南:硬件选型与低功耗优化

1. 项目概述:ESP32便携电子相册的核心价值这个项目用ESP32芯片打造了一款可以随身携带的电子相册。相比传统相册,它有几个明显的优势:首先,体积小巧,差不多只有手机大小,可以轻松放进包里;其次&…...

JPEGENC:4KB RAM下运行的嵌入式JPEG编码器

1. JPEGENC:面向资源受限MCU的轻量级JPEG编码器深度解析1.1 设计哲学与工程定位JPEGENC并非对libjpeg或mozjpeg等通用JPEG库的简单裁剪,而是在裸机(Bare-metal)约束下重构的嵌入式专用编码器。其核心设计目标直指MCU开发中最尖锐的…...

嵌入式MCU菜单框架设计与优化实践

1. 项目概述"产品级MCU菜单框架"这个标题背后,隐藏着嵌入式开发中一个经典痛点——如何在资源受限的单片机上实现灵活、可维护的人机交互界面。作为一名在工业控制领域摸爬滚打多年的工程师,我见过太多项目因为前期轻视菜单设计,导…...

VS2019搭建LVGL模拟器提升嵌入式GUI开发效率

1. 项目概述 在嵌入式GUI开发领域,LVGL(Light and Versatile Graphics Library)凭借其轻量级、高性能和跨平台特性,已成为许多开发者的首选方案。但直接在硬件上调试GUI界面往往效率低下,每次修改都需要重新烧录固件。…...

AI落地业务流程:别犯这两个错误!这才是人机协作的正确姿势

很多团队一提到 AI 进入业务流程,最容易滑向两个极端。一个极端是“既然 AI 很强,就让它全自动做完”;另一个极端是“既然不放心,那就什么都别让它碰”。真正能进生产环境的做法,通常都不在这两头。 Human-in-the-Loop…...

SmartComm:零堆内存的嵌入式命令通信框架

1. SmartComm 嵌入式设备间通信库深度解析SmartComm 是一个专为资源受限嵌入式系统设计的轻量级、零堆内存依赖的设备间命令通信框架。它不依赖动态内存分配(malloc/free),全部对象生命周期由栈管理,适用于 STM32F0/F1/F4、ESP32、…...

【数学建模 matlab 实验报告12】聚类分析和判别分析

上一篇:【数学建模 matlab 实验报告11】拟合 目录 实验报告 实验心得 实验报告 代码: [data, txt] xlsread(第13次-聚类分析和判别分析.xlsx); cityNames txt(2:end, 1); data zscore(data); Y_euclidean pdist(data, euclidean); Z_euclidean…...

嵌入式真有效值计算库:Irms_calc高精度电流测量方案

1. Irms_calc库概述:面向嵌入式平台的高精度交流电流有效值计算引擎Irms_calc是一个专为ESP8266、ESP32及Arduino兼容平台设计的轻量级、高鲁棒性交流电流有效值(Irms)计算库。其核心目标并非简单地对ADC采样值做数学平均,而是构建…...

DS1307实时时钟芯片驱动开发与BCD编码解析

1. DS1307实时时钟芯片底层驱动技术解析DS1307是一款由Maxim(现为Analog Devices)推出的IC接口实时时钟(RTC)芯片,广泛应用于嵌入式系统中提供高精度、低功耗的时间与日期保持功能。其核心价值在于:在主系统…...

Linux内核中的中断处理机制详解

Linux内核中的中断处理机制详解 引言 中断处理机制是Linux内核中负责处理硬件中断的核心组件,它确保硬件设备能够及时通知内核发生的事件,从而实现设备与操作系统的高效交互。Linux内核的中断处理机制支持多种中断类型,包括外部中断、内部中断…...

5分钟精通B站音频提取:BilibiliDown高效解决方案与实战指南

5分钟精通B站音频提取:BilibiliDown高效解决方案与实战指南 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirr…...