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

HagiCode Skill 系统技术解析:如何打造可扩展的 AI 技能管理平台铀

环境安装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)第一个参数读取内存的地址第二个参数读取内存的大小琶任盘褪

相关文章:

HagiCode Skill 系统技术解析:如何打造可扩展的 AI 技能管理平台铀

环境安装 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)…...

从视频到网格:基于Colmap与OpenMVS的自动化三维重建实战

1. 三维重建技术入门:从视频到网格的魔法之旅 想象一下,你手里有一段普通的手机视频,可能是绕着某个物体拍摄的简单环绕画面。通过今天要介绍的技术,这段视频可以神奇地变成一个带纹理的三维模型,就像变魔术一样。这就…...

打造沉浸式智能AI问答助手:Vue + UniApp 全端实战(支持 Markdown/公式/多模态交互)幌

OCP原则 ocp指开闭原则,对扩展开放,对修改关闭。是七大原则中最基本的一个原则。 依赖倒置原则(DIP) 什么是依赖倒置原则 核心是面向接口编程、面向抽象编程, 不是面向具体编程。 依赖倒置原则的目的 降低耦合度&#…...

避坑指南:uniapp中使用previewImage和downloadFile API的常见问题与解决方案

Uniapp图片预览与下载功能深度避坑指南 在移动应用开发中,图片预览和下载是最基础却又最容易出问题的功能之一。很多开发者第一次使用uniapp的previewImage和downloadFileAPI时,都会遇到各种"坑"——图片加载不出来、下载失败、权限问题、安卓…...

Z-Image-Turbo孙珍妮模型部署实操:Xinference日志定位+Gradio端口映射完整指南

Z-Image-Turbo孙珍妮模型部署实操:Xinference日志定位Gradio端口映射完整指南 1. 环境准备与快速部署 想要快速体验孙珍妮风格的AI图片生成吗?这个基于Z-Image-Turbo的Lora镜像让你轻松生成高质量的孙珍妮风格图片。无需复杂的环境配置,跟着…...

OFA社区贡献指南:如何参与开源项目并成为核心开发者

OFA社区贡献指南:如何参与开源项目并成为核心开发者 【免费下载链接】OFA Official repository of OFA (ICML 2022). Paper: OFA: Unifying Architectures, Tasks, and Modalities Through a Simple Sequence-to-Sequence Learning Framework 项目地址: https://g…...

SITS2026重磅实录:3步重构CI/CD流水线,让安全左移真正跑在LLM推理层上

第一章:SITS2026重磅实录:3步重构CI/CD流水线,让安全左移真正跑在LLM推理层上 2026奇点智能技术大会(https://ml-summit.org) 在SITS2026现场,Meta与OpenSSF联合发布SITS-LLM-Safe框架,首次将静态敏感数据检测、提示…...

告别复制粘贴!用WPS表格智能合并拆分数据的3种高阶玩法

WPS表格数据智能处理:3种高阶技巧解放你的双手 每次看到同事还在手动复制粘贴处理数据,我都忍不住想分享几个WPS表格的"黑科技"。作为国内办公软件的佼佼者,WPS表格在数据处理方面其实藏着不少实用功能,特别是针对中文环…...

龙虾白嫖指南,请查收~诠

1. 什么是 Apache SeaTunnel? Apache SeaTunnel 是一个非常易于使用、高性能、支持实时流式和离线批处理的海量数据集成平台。它的目标是解决常见的数据集成问题,如数据源多样性、同步场景复杂性以及资源消耗高的问题。 核心特性 丰富的数据源支持&am…...

磁敏式传感器实战解析:从霍尔效应到工业测速应用

1. 磁敏式传感器入门:从霍尔效应说起 第一次接触磁敏式传感器是在五年前的一个工业自动化项目上,当时需要精确测量电机转速,传统的光电编码器在油污环境下频频失效。机械组的老师傅从工具箱里掏出个火柴盒大小的黑色元件说:"…...

Tiny Transformer实战:手把手教你实现轻量级Transformer架构

1. 为什么需要轻量级Transformer? 当你第一次听说Transformer时,可能会被它的强大性能所震撼。但当你真正尝试在本地运行一个标准Transformer模型时,往往会发现它需要消耗惊人的计算资源。我曾在自己的笔记本电脑上尝试训练一个中等规模的Tr…...

使用小龙虾来操作猿编程的遥控车钾

一、什么是 Q 饱和运算? 1. 核心痛点:普通运算的 “数值回绕” 普通算术运算(如 ADD/SUB)溢出时,数值会按补码规则 “回绕”,导致结果完全错误: 示例:int8_t 类型最大值 127 1 → 结…...

Fish Speech 1.5惊艳效果:中英混合文本语音合成真实案例分享

Fish Speech 1.5惊艳效果:中英混合文本语音合成真实案例分享 1. 语音合成技术的新突破 今天要给大家分享一个让我眼前一亮的语音合成技术——Fish Speech 1.5。这不是那种机械感十足的普通TTS,而是一个真正能说"人话"的智能语音合成模型。 …...

别再让Halcon拉伸你的图像了!手把手教你用dev_set_part实现完美等比例显示

Halcon图像显示优化:用dev_set_part实现完美等比例适配 在机器视觉项目开发中,图像显示的准确性直接影响测量结果和判断效率。许多Halcon初学者都会遇到一个令人头疼的问题——当图像被加载到控件窗口时,系统默认的拉伸显示方式会破坏原始比例…...

记录复现多模态大模型论文OPERA的一周工作()旅

pagehelper整合 引入依赖 com.github.pagehelperpagehelper-spring-boot-starter2.1.0compile编写代码 GetMapping("/list/{pageNo}") public PageInfofindAll(PathVariable int pageNo) {// 设置当前页码和每页显示的条数 PageHelper.startPage(pageNo, 10); // …...

TP4328锂电池电源管理芯片

简介 TP4328 是一款集成锂电池充电管理,LED 指示功能,升压转换器的移动电源管理芯片,外围 只需极少的元件,就可以组成功能强大的移动电源方案。 TP4328 内部集成了 0.8A 的线性充电模式,支持对 0V 电池充电&#xff1b…...

八大网盘直链下载助手终极指南:告别限速,一键获取高速下载地址

八大网盘直链下载助手终极指南:告别限速,一键获取高速下载地址 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / …...

Python 字符编码检测与语种识别(qbit)

在技术领域,我们常常被那些闪耀的、可见的成果所吸引。今天,这个焦点无疑是大语言模型技术。它们的流畅对话、惊人的创造力,让我们得以一窥未来的轮廓。然而,作为在企业一线构建、部署和维护复杂系统的实践者,我们深知…...

ComponentSnapshot + ImagePacker 实现业务海报生成

在技术领域,我们常常被那些闪耀的、可见的成果所吸引。今天,这个焦点无疑是大语言模型技术。它们的流畅对话、惊人的创造力,让我们得以一窥未来的轮廓。然而,作为在企业一线构建、部署和维护复杂系统的实践者,我们深知…...

Oracle B-Tree 索引结构与内部机制详解

在技术领域,我们常常被那些闪耀的、可见的成果所吸引。今天,这个焦点无疑是大语言模型技术。它们的流畅对话、惊人的创造力,让我们得以一窥未来的轮廓。然而,作为在企业一线构建、部署和维护复杂系统的实践者,我们深知…...

告别手动编译!用Jenkins Pipeline自动化你的C/C++项目(保姆级配置流程)

告别手动编译!用Jenkins Pipeline自动化你的C/C项目(保姆级配置流程) 每次修改几行代码就要重新执行cmake .. && make,看着终端里滚动的编译日志发呆?还在为团队成员提交的代码导致构建失败而头疼?…...

JAX GPU版安装实战:从cuSPARSE报错到完美运行的完整记录

JAX GPU版深度调优指南:从cuSPARSE报错到高效计算的完整解决方案 在深度学习和高性能计算领域,JAX凭借其自动微分和XLA加速能力已成为研究人员和工程师的重要工具。然而,当我们在GPU环境中部署JAX时,经常会遇到各种库依赖和版本冲…...

MedGemma Medical Vision Lab用于模型对比研究:与LLaVA-Med、RadFM等多模态模型性能横评

MedGemma Medical Vision Lab用于模型对比研究:与LLaVA-Med、RadFM等多模态模型性能横评 1. 引言:医学多模态模型的发展现状 医学影像分析正经历着从传统算法向多模态大模型的转型。随着GPT-4V、Gemini等通用多模态模型的突破,医学领域也涌…...

Unity集成Nano-Banana生成模型:游戏开发中的动态资源创建

Unity集成Nano-Banana生成模型:游戏开发中的动态资源创建 最近,游戏开发圈里有个话题挺火的:如何让游戏内容自己“长”出来?想象一下,你的游戏世界能根据玩家的行为,实时生成独一无二的建筑、角色甚至道具…...

Qwen-Image-Edit场景解析:适合个人创作、电商美工、内容生产的AI工具

Qwen-Image-Edit场景解析:适合个人创作、电商美工、内容生产的AI工具 你有没有遇到过这样的烦恼?拍了一张不错的照片,但背景太杂乱,想换个干净的;给产品拍了主图,但总觉得不够吸引人,想加点创意…...

MedGemma 1.5效果展示:对‘慢性肾病贫血管理’的ESA使用指征→铁状态评估→给药路径推演

MedGemma 1.5效果展示:对‘慢性肾病贫血管理’的ESA使用指征→铁状态评估→给药路径推演 1. 引言:当AI遇见临床诊疗路径 想象一下,你是一位肾内科医生,面对一位慢性肾病(CKD)合并贫血的患者。你需要快速梳…...

Qwen3.5-2B保姆级教程:Gradio界面快捷键/拖拽上传/历史搜索技巧

Qwen3.5-2B保姆级教程:Gradio界面快捷键/拖拽上传/历史搜索技巧 1. 前言:认识Qwen3.5-2B Qwen3.5-2B是通义千问团队推出的轻量化多模态基础模型,属于Qwen3.5系列的小参数版本(20亿参数)。这个模型主打低功耗、低门槛…...

RexUniNLU开源NLU模型实战:金融研报关系抽取+事件时间线自动生成案例

RexUniNLU开源NLU模型实战:金融研报关系抽取事件时间线自动生成案例 1. 引言:当研报分析遇上智能信息抽取 想象一下这个场景:作为一名金融分析师,你刚收到一份长达50页的行业深度研究报告。你需要从中找出所有提到的公司、它们之…...

Python 3.12 Special Attribute - 08 - __module__

Python 3.12 Special Attribute - __module____module__ 是 Python 中一个重要的内置特殊属性,它存储了定义 类、函数、方法 的模块名称(字符串)。这个属性在序列化(如 pickle)、动态导入、调试以及框架设计中扮演着…...

Geo-SAM:地理空间AI图像分割的技术实现与应用实践

Geo-SAM:地理空间AI图像分割的技术实现与应用实践 【免费下载链接】Geo-SAM A QGIS plugin tool using Segment Anything Model (SAM) to accelerate segmenting or delineating landforms in geospatial raster images. 项目地址: https://gitcode.com/gh_mirror…...