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

FreakStudio炭

环境安装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)第一个参数读取内存的地址第二个参数读取内存的大小蓟钠琢炯

相关文章:

FreakStudio炭

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

LangGraph实战:Supervisor与Swarm多代理架构选型指南(附避坑清单)

LangGraph多代理架构深度实战:Supervisor与Swarm的工程化抉择 当你的AI系统需要同时处理机票预订、酒店推荐、行程优化和突发天气预警时,单一代理已经力不从心。这就是为什么顶级科技公司的AI架构师们正在将目光转向多代理系统——不是简单地堆砌多个AI模…...

基于Comsol与Matlab的多孔材料JCA模型吸声特性仿真与实验对比分析

1. JCA模型基础与多孔材料声学特性 多孔材料在噪声控制和声学设计中扮演着关键角色,而准确预测其吸声性能一直是工程实践中的难点。JCA模型作为当前最完善的刚性骨架多孔材料声学模型,能够精确描述从低频到高频的声波传播特性。我第一次接触这个模型是在…...

为什么97%的AI原生平台在QPS破5万后日志分析失效?揭秘内核级采样压缩与语义缓存双引擎设计

第一章:AI原生软件研发日志分析平台建设 2026奇点智能技术大会(https://ml-summit.org) AI原生软件研发对日志的语义理解、实时归因与根因推断提出了全新要求。传统ELK栈难以支撑LLM驱动的日志聚类、异常模式自演化识别及跨服务调用链的因果推理,因此需…...

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

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

时频分析在隔振与运动控制中的联合应用

1. 时频分析在隔振与运动控制中的核心价值 在精密制造和科研实验中,隔振台和运动台的联合控制是个经典难题。传统方法就像用两种不同的语言描述同一个现象——隔振台习惯用频域的"振动频谱"说话,运动台则偏爱时域的"误差曲线"表达。…...

Retrofit2 + Moshi + Kotlin:网络请求的终极解决方案

Retrofit2 Moshi Kotlin:网络请求的终极解决方案 【免费下载链接】Android-MVVM-Architecture MVVM Kotlin Retrofit2 Hilt Coroutines Kotlin Flow mockK Espresso Junit5 项目地址: https://gitcode.com/gh_mirrors/mv/Android-MVVM-Architecture …...

Agent Client Protocol 全景解析哪

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

Qt5离线安装包国内下载失败?别急,用迅雷搞定Windows/Mac/Linux全平台(附完整地址规律)

Qt5离线安装包高效下载指南:跨平台解决方案与URL解析 遇到Qt5离线安装包下载失败时,许多开发者第一反应可能是寻找特殊网络工具,但其实有更简单高效的解决方案。本文将详细介绍如何利用常规下载工具获取Qt5全平台安装包,并解析其U…...

MySQL优化全攻略:索引、SQL与分库分表的最佳实践嘶

一、各自优势和对比 这是检索出来的数据,据说是根据第三方评测与企业数据,三款产品在代码生成质量上各有侧重: 产品 语言优势 场景亮点 核心差异 百度 Comate C核心代码质量第一;Python首生成率达92.3% SQL生成准确率提升35%&…...

如何快速下载番茄小说:开源Rust下载器完整指南

如何快速下载番茄小说:开源Rust下载器完整指南 【免费下载链接】Tomato-Novel-Downloader 番茄小说下载器不精简版 项目地址: https://gitcode.com/gh_mirrors/to/Tomato-Novel-Downloader 前言 在数字阅读时代,很多读者喜欢在番茄小说上阅读免费…...

实战指南 | 利用FRP与TOML配置实现高效内网穿透(含反向代理优化)

1. 为什么需要内网穿透? 想象一下这个场景:你家里有一台NAS存储设备,里面存满了家人照片和工作文档;或者你在本地开发了一个网站应用,想临时分享给异地同事测试。这时候你会发现——从外部网络根本无法访问这些服务&am…...

PDF文献智能翻译架构设计:CopyTranslator的工程实践与性能优化

PDF文献智能翻译架构设计:CopyTranslator的工程实践与性能优化 【免费下载链接】CopyTranslator 项目地址: https://gitcode.com/gh_mirrors/cop/CopyTranslator 在科研文献阅读和技术文档处理领域,跨语言信息获取一直是影响工作效率的关键瓶颈。…...

汽车工程师必看:从CAN到Ethernet,6种车载通信协议全解析(附应用场景对比)

汽车工程师必看:从CAN到Ethernet,6种车载通信协议全解析(附应用场景对比) 当一辆现代汽车驶过街头,很少有人会意识到车内正运行着一个比阿波罗登月飞船更复杂的电子系统网络。这个由数百个电子控制单元(ECU…...

AzurLaneAutoScript:碧蓝航线自动化脚本终极指南 - 如何实现全自动委托科研与大世界探索

AzurLaneAutoScript:碧蓝航线自动化脚本终极指南 - 如何实现全自动委托科研与大世界探索 【免费下载链接】AzurLaneAutoScript Azur Lane bot (CN/EN/JP/TW) 碧蓝航线脚本 | 无缝委托科研,全自动大世界 项目地址: https://gitcode.com/gh_mirrors/az/A…...

rasterizeHTML.js API完全手册:从drawHTML到drawURL的完整使用指南

rasterizeHTML.js API完全手册:从drawHTML到drawURL的完整使用指南 【免费下载链接】rasterizeHTML.js Renders HTML into the browsers canvas 项目地址: https://gitcode.com/gh_mirrors/ra/rasterizeHTML.js rasterizeHTML.js是一款强大的JavaScript库&am…...

GeoPort代码实现原理:Flask框架与iOS设备通信机制解析

GeoPort代码实现原理:Flask框架与iOS设备通信机制解析 【免费下载链接】GeoPort GeoPort: Your Location, Anywhere! The iOS location simulator 项目地址: https://gitcode.com/gh_mirrors/ge/GeoPort GeoPort作为一款强大的iOS位置模拟器,其核…...

eRPC企业级应用:平安科技、快手等大厂的真实使用场景

eRPC企业级应用:平安科技、快手等大厂的真实使用场景 【免费下载链接】erpc An efficient, extensible and easy-to-use RPC framework. 项目地址: https://gitcode.com/gh_mirrors/er/erpc eRPC是一款高效、可扩展且易用的RPC框架,被平安科技、快…...

keil5软件安装步骤(附安装包)Keil uVision 5 MDK 超详细下载安装教程

文章目录 前言 Keil5软件摘要 下载Keil5安装包 Keil5安装步骤(保姆级) Keil5入门使用技巧 前言 作为嵌入式开发入门的第一步,keilmdk 下载与安装常常让新手工程师感到困惑。本文将提供完整的keilmdk 安装教程,手把手带你从零开始配置开发环境。无论你是刚接触单片机编程的…...

QT中的互斥与独立选择:QRadioButton与QCheckBox的实战应用

1. QRadioButton与QCheckBox的核心差异 第一次接触QT界面开发时,我经常分不清什么时候该用圆形按钮(QRadioButton),什么时候该用方形按钮(QCheckBox)。直到做了几个实际项目后,才真正理解它们的本质区别。简单来说,这就像餐厅点单…...

基于File-Based App开发MVP项目咆

Issue 概述 先来看看提交这个 Issue 的作者是为什么想到这个点子的,以及他初步的核心设计概念。?? 本 PR 实现了 Apache Gravitino 与 SeaTunnel 的集成,将其作为非关系型连接器的外部元数据服务。通过 Gravitino 的 REST API 自动获取表结构和元数据&…...

Fixer性能优化指南:如何配置Unicorn服务器获得最佳响应速度

Fixer性能优化指南:如何配置Unicorn服务器获得最佳响应速度 【免费下载链接】fixer A foreign exchange rates and currency conversion API 项目地址: https://gitcode.com/gh_mirrors/fi/fixer Fixer作为一款外汇汇率和货币转换API,其响应速度直…...

Swift高性能计算终极指南:Surge库快速入门教程

Swift高性能计算终极指南:Surge库快速入门教程 想要在Swift应用中实现高性能数学计算吗?Surge库是你的完美选择!Surge是一个基于Accelerate框架的Swift高性能计算库,专门为矩阵运算、数字信号处理和图像处理提供优化的数学函数。…...

Rest.li代码生成器详解:如何自动生成数据绑定和客户端代码

Rest.li代码生成器详解:如何自动生成数据绑定和客户端代码 【免费下载链接】rest.li Rest.li is a RESTJSON framework for building robust, scalable service architectures using dynamic discovery and simple asynchronous APIs. 项目地址: https://gitcode.…...

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)…...

Polaris安全机制全解析:认证、授权与访问控制的最佳实践

Polaris安全机制全解析:认证、授权与访问控制的最佳实践 【免费下载链接】polaris Service Discovery and Governance Platform for Microservice and Distributed Architecture 项目地址: https://gitcode.com/gh_mirrors/pol/polaris Polaris作为微服务和分…...

Ostrakon-VL-8B效果实测:百种零售商品SKU识别精度报告

Ostrakon-VL-8B效果实测:百种零售商品SKU识别精度报告 最近在帮一个做零售的朋友研究智能货架方案,他们最头疼的就是商品识别不准。货架上东西一多,系统就经常把可乐认成雪碧,或者把不同口味的薯片搞混。正好看到Ostrakon-VL-8B这…...

MangaReader插件开发实战:手把手教你编写哔咔漫画插件

MangaReader插件开发实战:手把手教你编写哔咔漫画插件 【免费下载链接】MangaReader 一个漫画 APP📱,基于 react-native 构建,兼容 Android、Ios 平台 项目地址: https://gitcode.com/gh_mirrors/ma/MangaReader MangaRead…...

AI Agent集成实时口罩检测:智能机器人视觉系统设计

AI Agent集成实时口罩检测:智能机器人视觉系统设计 1. 引言 在智能机器人快速发展的今天,视觉感知能力成为机器人智能化水平的关键指标。特别是在公共场所服务、医疗辅助、安防巡检等场景中,机器人需要具备实时识别和响应能力。口罩检测作为…...

H桥驱动电路设计避坑指南:从MOS管选型到自举电路,我的电机驱动板烧了三次才搞懂

H桥驱动电路设计避坑指南:从MOS管选型到自举电路,我的电机驱动板烧了三次才搞懂 记得第一次设计H桥电机驱动板时,我信心满满地画好原理图,结果上电不到10分钟就闻到熟悉的焦糊味。三块板子接连阵亡后,我才真正理解那些…...