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

-:RAG 入门-向量存储与企业级向量数据库 milvus

环境安装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)第一个参数读取内存的地址第二个参数读取内存的大小兜桶字趟

相关文章:

-:RAG 入门-向量存储与企业级向量数据库 milvus

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

RDMA网卡如何化身‘内存搬运工’?深入拆解WRITE和READ操作的硬件执行流水线

RDMA网卡如何化身‘内存搬运工’?深入拆解WRITE和READ操作的硬件执行流水线 在数据中心和高性能计算领域,RDMA(远程直接内存访问)技术正悄然改变着分布式系统的通信范式。想象一下,当两个服务器需要交换数据时&#xf…...

【仅限首批200家企业的SITS2026白名单工具】:AI面试模拟器部署实录与ROI测算表

第一章:SITS2026专家:AI面试模拟器 2026奇点智能技术大会(https://ml-summit.org) SITS2026专家系统首次集成多模态AI面试模拟器,专为技术岗位候选人打造高保真、可配置、实时反馈的面试训练环境。该模拟器基于LLMASRTTS情感计算四维融合架…...

告别浏览器原生下载:如何用Motrix WebExtension实现高效下载管理

告别浏览器原生下载:如何用Motrix WebExtension实现高效下载管理 【免费下载链接】motrix-webextension A browser extension for the Motrix Download Manager and its forks 项目地址: https://gitcode.com/gh_mirrors/mo/motrix-webextension 在现代网络环…...

BUUCTF [HITCON 2017]SSRFme 1 深度解析:从代码审计到命令执行的完整攻击链

1. 代码审计:从沙盒逃逸到命令执行的突破口 拿到这道题目的源码时,我第一眼看到shell_exec和GET的组合就意识到事情不简单。先来看关键代码段: $sandbox "sandbox/" . md5("orange" . $_SERVER["REMOTE_ADDR"…...

Modbus调试工具实战指南:从入门到精通

1. Modbus调试工具入门指南 第一次接触Modbus调试工具时,我也是一头雾水。记得当时为了调试一个温控器,整整折腾了两天都没能成功通讯。后来才发现,原来是因为波特率设置错误。这种经历让我深刻理解到,掌握Modbus调试工具的基础知…...

FreeCAD绘图尺寸标注插件终极指南:如何快速掌握专业工程图纸标注

FreeCAD绘图尺寸标注插件终极指南:如何快速掌握专业工程图纸标注 【免费下载链接】FreeCAD_drawing_dimensioning Drawing dimensioning workbench for FreeCAD v0.16 项目地址: https://gitcode.com/gh_mirrors/fr/FreeCAD_drawing_dimensioning FreeCAD绘图…...

一图胜千言:从LSTM到BiLSTM的演进与实战

1. 从RNN到LSTM:为什么我们需要记忆门控? 记得我第一次用RNN处理文本数据时,遇到一个头疼的问题——模型总是记不住前文的关键信息。比如分析"虽然菜品一般,但服务态度很好"这样的句子时,模型总是被后半句的…...

BilibiliDown:跨平台B站视频下载解决方案全面解析

BilibiliDown:跨平台B站视频下载解决方案全面解析 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors/bi/Bi…...

让你的小爱音箱变身私人音乐管家:XiaoMusic项目完全指南

让你的小爱音箱变身私人音乐管家:XiaoMusic项目完全指南 【免费下载链接】xiaomusic 使用小爱音箱播放音乐,音乐使用 yt-dlp 下载。 项目地址: https://gitcode.com/GitHub_Trending/xia/xiaomusic 想象一下,每天早晨被自己喜欢的音乐…...

抖音素材备份神器:douyin-downloader 完整使用指南

抖音素材备份神器:douyin-downloader 完整使用指南 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support.…...

北斗短报文RDSS协议实战:手把手教你用C语言搞定中文GBK编码与浮点数传输

北斗短报文RDSS协议实战:手把手教你用C语言搞定中文GBK编码与浮点数传输 北斗短报文通信在野外监测、应急救灾等领域有着不可替代的作用。想象一下,当你在青藏高原部署的气象站需要回传数据,或是渔船在远海需要发送求救信息时,北斗…...

告别时钟漂移:用Verilog在Xilinx A7 FPGA上实现8B10B编码的完整流程与避坑指南

高速串行通信的时钟守护者:Xilinx A7 FPGA上8B10B编码实战全解析 时钟同步问题就像高速公路上突然出现的减速带——当你以Gbps速率传输数据时,哪怕微小的时钟漂移都可能导致整个通信链路崩溃。这就是为什么我在设计Xilinx Artix-7系列FPGA的高速接口时&a…...

如何让B站缓存视频重获新生?m4s-converter一键转换MP4全攻略

如何让B站缓存视频重获新生?m4s-converter一键转换MP4全攻略 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 你是否曾经遇到过这样的…...

Java Lambda里想改个变量值,编译器总报错?试试这3个绕过‘final’限制的实战技巧

Java Lambda变量修改难题:3种突破final限制的工程实践 刚接手一个多线程数据处理的Java项目时,我发现一个有趣的现象——在Lambda表达式里想修改外部变量,编译器就像个固执的安检员,死活不让通过。这不禁让我思考:为什…...

intv_ai_mk11 GPU部署避坑指南:解决乱码、延迟高、无响应等6类常见问题

intv_ai_mk11 GPU部署避坑指南:解决乱码、延迟高、无响应等6类常见问题 1. 环境准备与快速部署 在开始使用intv_ai_mk11 AI对话机器人前,确保您的GPU服务器满足以下基本要求: 操作系统:推荐Ubuntu 20.04/22.04 LTSGPU驱动&…...

域服务基础概念

(一)、域 定义:由DC(域控制器)统一管理用户基本信息,计算机,权限,组策略,安全策略的计算机逻辑组域是最小的安全边界域必须依赖DNS服务 (二)、三大…...

智能桌面分区革命:用NoFences打造你的Windows效率空间

智能桌面分区革命:用NoFences打造你的Windows效率空间 【免费下载链接】NoFences 🚧 Open Source Stardock Fences alternative 项目地址: https://gitcode.com/gh_mirrors/no/NoFences 还在为杂乱的桌面图标而烦恼吗?NoFences是一款创…...

2026南宁建筑行业AI获客落地指南:AI获客服务商参考、成本与时效全详解

2026年南宁建筑行业机遇与挑战并存:平陆运河、中国—东盟自贸区3.0版、城市更新等重大项目持续释放需求,但2025年本地新增建筑相关企业超1200家,传统获客模式效能断崖式下滑。数字化精准获客已成为南宁建筑企业生存发展的核心命题。本文基于2…...

TCP可靠传输的基石:从停止等待到滑动窗口,ARQ协议如何守护你的数据?

1. 从零理解ARQ协议:TCP可靠传输的守护者 想象你正在给朋友寄一封重要信件。如果只是简单地把信扔进邮筒,你怎么知道对方是否收到?现实中我们可能会要求对方签收后寄回回执——这正是ARQ协议(自动重传请求)的核心思想。…...

别再瞎调K-Means的K值了!用sklearn的silhouette_score和silhouette_samples帮你科学选簇数

科学选择K-Means聚类数量的实战指南:从轮廓系数到可视化诊断 第一次接触K-Means聚类时,很多人都会陷入一个误区——凭直觉选择K值。你可能见过这样的场景:数据科学家盯着肘部法则(Elbow Method)生成的折线图&#xff0…...

FPGA制造与测试全流程

FPGA制造与测试全流程(从设计到出货) FPGA是可编程逻辑芯片,核心结构含LUT、触发器、可编程互联、I/O、配置SRAM/Flash,制造与测试分前端设计→晶圆制造→晶圆测试(CP)→封装→封装测试(FT)→可靠性/系统测试→出货六大阶段&…...

AI赋能CI/CD:用Gemini一键生成高效脚本

技术文章大纲:Gemini实战——用AI写CI/CD脚本引言CI/CD在现代软件开发中的重要性传统编写CI/CD脚本的挑战(复杂性、维护成本)AI(如Gemini)如何简化脚本生成过程理解Gemini与CI/CDGemini的核心能力(自然语言…...

Excel公式美化终极指南:让复杂公式一目了然的免费工具

Excel公式美化终极指南:让复杂公式一目了然的免费工具 【免费下载链接】ExcelFormulaBeautifier Excel Formula Beautifer,make Excel formulas more easy to read,Excel公式格式化/美化,将Excel公式转为易读的排版 项目地址: https://gitcode.com/gh_mirrors/ex/…...

小米手表表盘设计终极指南:如何快速设计个性化表盘

小米手表表盘设计终极指南:如何快速设计个性化表盘 【免费下载链接】Mi-Create Unofficial watchface creator for Xiaomi wearables ~2021 and above 项目地址: https://gitcode.com/gh_mirrors/mi/Mi-Create 你是否厌倦了千篇一律的小米手表表盘&#xff1…...

别再让电机乱抖了!手把手教你用51单片机+TB6600驱动42步进电机(附完整接线图与C代码)

51单片机精准控制42步进电机实战指南:从接线到代码全解析 刚接触步进电机控制的新手们,是否遇到过这样的场景:按照教程接好线,烧录完程序,满怀期待地按下电源——结果电机要么纹丝不动,要么疯狂抖动发出刺耳…...

APK Installer:在Windows上轻松安装安卓应用的终极方案

APK Installer:在Windows上轻松安装安卓应用的终极方案 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否厌倦了臃肿的安卓模拟器?是否想在…...

如何用Lan Mouse实现跨设备键鼠共享:多电脑无缝控制的终极方案

如何用Lan Mouse实现跨设备键鼠共享:多电脑无缝控制的终极方案 【免费下载链接】lan-mouse mouse & keyboard sharing via LAN 项目地址: https://gitcode.com/gh_mirrors/la/lan-mouse 你是否曾经在多个电脑间来回切换时感到困扰?每次都要移…...

国家中小学智慧教育平台电子课本解析工具:一键下载PDF教材的终极解决方案

国家中小学智慧教育平台电子课本解析工具:一键下载PDF教材的终极解决方案 【免费下载链接】tchMaterial-parser 国家中小学智慧教育平台 电子课本下载工具,帮助您从智慧教育平台中获取电子课本的 PDF 文件网址并进行下载,让您更方便地获取课本…...

PyTorch 模型部署:TorchScript vs ONNX 深度对比

PyTorch 模型部署:TorchScript vs ONNX 深度对比 核心结论 TorchScript:适用于 PyTorch 生态系统内的部署,支持动态图和静态图,调试友好ONNX:跨平台部署标准,支持多种推理引擎,生态系统丰富性能…...