deepseek_ai_ida_plugin开源插件,用于使用 DeepSeekAI 将函数反编译并重命名为人类可读的视图。该插件仅在 ida9 上进行了测试

一、软件介绍

文末提供程序和源码下载

      deepseek_ai_ida_plugin开源插件,用于使用 DeepSeekAI 将函数反编译并重命名为人类可读的视图。该插件仅在 ida9 上进行了测试。FunctionRenamerDeepseekAI.cpp 此文件包含 Hex-Rays 反编译器的主要插件实现。它反编译当前函数,使用 DeepSeekAI 重命名变量和函数,并输出结果。

二、功能

  • init() :初始化插件并检查 Hex-Rays 反编译器的可用性。
  • plugin_ctx_t::run(size_t) :启动插件时执行的主函数。它反编译当前函数,将反编译后的代码发送给 DeepSeekAI 进行重命名,并应用重命名后的元素。
  • save_current_function_name(func_t* pfn) :保存当前函数的名称。
  • save_variables(func_t* pfn) :保存在当前函数中找到的变量。
  • save_functions(func_t* pfn) :保存在当前函数中找到的函数。
  • get_decompiled_code(func_t* pfn, std::string& decompiled_code) :检索当前函数的反编译代码。
  • rename_current_function(func_t* pfn, const std::string& new_name) :重命名当前函数。
  • rename_all_lvars_and_globalvars(func_t* pfn) :重命名所有局部变量和全局变量。
  • rename_all_functions(func_t* pfn) :重命名所有函数。
  • mark_cfunc_dirty(ea_t start_ea) :将当前函数标记为 dirty,表示变量已重命名。更新窗口并在重命名后显示新名称

DeepSeekAI.hpp

       此文件实现了一个通过 Akash Network API 与 DeepSeek AI 模型交互的类。主要任务是分析反编译的代码,自动重命名元素(函数、变量、参数),并返回结构化的 JSON。

功能:
  • SendRequestToDeepseek(const std::string& decompiledCode):
    将反编译代码提交到 DeepSeek 的主要方法。处理响应:删除多余的字符,提取 和 |END_JSON| 之间的 |START_JSON| JSON,替换引号。
  • generateBody(const std::string& decompiledCode):
    为 AI 形成请求正文:添加系统提示符,将代码括在 / |END_CODE| 中 |START_CODE| ,将双引号替换为单引号,并清理字符串。
  • getSession():
    接收会话 cookie,通过 GET 请求向 Akash Network API 进行身份验证。超时:15 秒。
  • postToChat(std::string body, cpr::Cookies cookies):
    将带有正文和 cookie 的 POST 请求发送到 Akash 聊天 API。超时:10 分钟。处理 HTTP 错误(例如,≠ 200 状态)。

 调用示例:

DeepSeekAI ai;  
std::string jsonResult = ai.SendRequestToDeepseek(decompiled_code);  

函数工具HexRay.hpp

此文件提供了在 IDA 中使用 Hex-Rays 反编译器的实用程序。它收集有关函数、变量和参数的信息,并根据外部数据(例如,从 DeepSeekAI 获取的 JSON)实现它们的重命名。


 功能:
  • get_decompiled_code(func_t* pfn, std::string& out_code):
    将函数反编译为伪代码并将其保存到字符串中 out_code 。处理反编译错误(例如,通过 hexrays_failure_t )。
  • save_current_function_name(func_t* pfn):
    将当前函数的名称保存到全局字典 current_function 中,以便以后重命名。
  • save_variables(func_t* pfn):
    收集函数中使用的所有局部变量(包括参数)和全局变量。将它们存储在 中。 var_names
  • save_functions(func_t* pfn):
    查找当前函数中的所有函数调用(例如,通过 statements call ),并将其名称存储在 中。 function_names
  • rename_current_function(func_t* pfn, const std::string& new_name):
    使用新名称重命名当前函数 (通过 set_name )。
  • rename_all_lvars_and_globalvars(func_t* pfn):
    重命名 中的所有局部变量和全局变量 var_names 。对于全局用途 set_name ,对于本地 — rename_lvar .
  • rename_all_functions(func_t* pfn):
    重命名 function_names 在当前上下文中找到的所有函数。
特征:
  • 与 Hex-Rays API 集成:

    使用 decompile , get_lvars , func_item_iterator_t 分析函数和变量。
  • 使用全局变量:

    通过指令解析定义全局变量(例如, o_mem in insn_t 中)。
  •  重 命名:

    使用 IDA Pro 方法 ( set_name , rename_lvar ) 修改名称。
使用示例:
func_t* pfn = get_current_function();
std::string decompiled_code;
get_decompiled_code(pfn, decompiled_code);// После получения JSON от DeepSeekAI:
rename_current_function(pfn, "newMain");
rename_all_lvars_and_globalvars(pfn);
rename_all_functions(pfn);

三、插件软件下载

迅雷网盘

本文信息来源于GitHub作者地址
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/80977.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

信息系统项目管理工程师备考计算类真题讲解十一

一、运筹学 1&#xff09;线性规划 分析&#xff1a;设为获得最大利润&#xff0c;S应生产X件&#xff0c;K生产Y件 10X20Y<120 8X8Y<80 求MAX(12X16Y) 计算下面的方程式&#xff1a; 10X20Y120 8X8Y80 X8 2)交通运输问题&#xff1a; 分析&#xff1a; 此题采…

深入学习解读:《数据安全技术 数据分类分级规则》【附全文阅读】

该文详细阐述了数据安全技术的数据分类分级规则,内容分为基本原则、数据分类规则、数据分级规则及数据分类分级流程四大部分。 基本原则强调科学实用、动态更新、就高从严及53原则(虽表述不清,但可理解为多重原则的结合),同时要求边界清晰、点面结合。 数据分类规…

连接私有数据与大语言模型的强大框架----LlamaIndex详细介绍与案例应用

什么是LlamaIndex&#xff1f; LlamaIndex&#xff08;原GPT Index&#xff09;是一个先进的数据框架&#xff0c;用于将自定义数据源与大语言模型&#xff08;LLM&#xff09;连接起来。它提供了高效的工具来索引、检索和将私有或特定领域的数据集成到LLM应用中&#xff0c;解…

GBDT算法原理及Python实现

一、概述 GBDT&#xff08;Gradient Boosting Decision Tree&#xff0c;梯度提升决策树&#xff09;是集成学习中提升&#xff08;Boosting&#xff09;方法的典型代表。它以决策树&#xff08;通常是 CART 树&#xff0c;即分类回归树&#xff09;作为弱学习器&#xff0c;通…

WordPress开心导航站_一站式网址_资源与资讯垂直行业主题模板

一款集网址、资源与资讯于一体的导航类主题&#xff0c;专为追求高效、便捷用户体验的垂直行业网站而设计无论您是构建行业资讯门户、资源聚合平台还是个人兴趣导航站&#xff0c;这款开心版导航主题都能成为您理想的选择。 核心特色: 一体化解决方案:整合了网址导航、资源下载…

马井堂-区块链技术:架构创新、产业变革与治理挑战(马井堂)

区块链技术&#xff1a;架构创新、产业变革与治理挑战 摘要 区块链技术作为分布式账本技术的革命性突破&#xff0c;正在重构数字时代的信任机制。本文系统梳理区块链技术的核心技术架构&#xff0c;分析其在金融、供应链、政务等领域的实践应用&#xff0c;探讨共识算法优化、…

从像素到驾驶决策:Python与OpenCV赋能自动驾驶图像识别

从像素到驾驶决策:Python与OpenCV赋能自动驾驶图像识别 引言:图像识别的力量驱动自动驾驶 自动驾驶技术正以令人惊叹的速度改变交通方式,而其中最核心的技术之一便是图像识别。作为车辆的“视觉系统”,图像识别可以实时获取道路信息,识别交通标志、车辆、行人等关键目标…

Spring计时器StopWatch 统计各个方法执行时间和占比

Spring计时器StopWatch 用法代码 返回结果是毫秒 一毫秒等于千分之一秒&#xff08;0.001秒&#xff09;。因此&#xff0c;如果你有一个以毫秒为单位的时间值&#xff0c;你可以通过将这个值除以1000来将其转换为秒。例如&#xff0c;500毫秒等于0.5秒。 import org.springf…

2.2.2goweb内置的 HTTP 处理程序2

http.StripPrefix http.StripPrefix 是 Go 语言 net/http 包中的一个函数&#xff0c;它的主要作用是创建一个新的 HTTP 处理程序。这个新处理程序会在处理请求之前&#xff0c;从请求的 URL 路径中移除指定的前缀&#xff0c;然后将处理工作委托给另一个提供的处理程序。 使…

【Fifty Project - D20】

今日完成记录 TimePlan完成情况7&#xff1a;30 - 11&#xff1a;30收拾行李闪现广州 & 《挪威的森林》√10&#xff1a;00 - 11&#xff1a;00Leetcode√16&#xff1a;00 - 17&#xff1a;00健身√ Leetcode 每日一题 每日一题来到了滑动窗口系列&#xff0c;今天是越…

【图片识别改名】批量读取图片区域文字识别后批量改名,基于Python和腾讯云的实现方案

项目场景 ​​办公文档管理​​&#xff1a;将扫描的发票、合同等文档按编号、日期自动重命名。例如&#xff0c;识别“编号:2023001 日期:20230403”生成“2023001_20230403.jpg”。​​产品图片整理​​&#xff1a;电商产品图片按产品编号、名称自动命名。例如&#xff0c;…

生物化学笔记:神经生物学概论04 视觉通路简介视网膜视网膜神经细胞大小神经节细胞(视错觉)

视觉通路简介 神经节细胞的胞体构成一明确的解剖层次&#xff0c;其外邻神经纤维层&#xff0c;内接内丛状层&#xff0c;该层在鼻侧厚约10&#xff5e;20μm&#xff0c;最厚在黄斑区约60&#xff5e;80μm。 全部细胞数约为120万个(1000000左右)。 每个细胞有一轴突&#xff…

「Mac畅玩AIGC与多模态08」开发篇04 - 基于 OpenAPI Schema 开发专用 Agent 插件

一、概述 本篇介绍如何在 macOS 环境下,通过编写 OpenAPI Schema,开发自定义的专用插件,让智能体可以调用外部 API,扩展功能至任意在线服务。实践内容基于 Dify 平台,适配 macOS 开发环境。 二、环境准备 1. 确认本地开发环境 macOS 系统Dify 平台已完成部署并可访问本…

【计算机视觉】深度解析MediaPipe:谷歌跨平台多媒体机器学习框架实战指南

深度解析MediaPipe&#xff1a;谷歌跨平台多媒体机器学习框架实战指南 技术架构与设计哲学核心设计理念系统架构概览 核心功能与预构建解决方案1. 人脸检测2. 手势识别3. 姿势估计4. 物体检测与跟踪 实战部署指南环境配置基础环境准备获取源码 构建第一个示例&#xff08;手部追…

NVIDIA高级辅助驾驶领域的创新实践与云计算教育启示

AI与高级辅助驾驶的时代浪潮 人工智能正在重塑现代交通的面貌&#xff0c;而高级辅助驾驶技术无疑是这场变革中最具颠覆性的力量之一。作为全球AI计算的领军企业&#xff0c;NVIDIA凭借其全栈式技术生态和创新实践&#xff0c;为高级辅助驾驶的产业化落地树立了标杆。从芯片到…

头歌实训之存储过程、函数与触发器

&#x1f31f; 各位看官好&#xff0c;我是maomi_9526&#xff01; &#x1f30d; 种一棵树最好是十年前&#xff0c;其次是现在&#xff01; &#x1f680; 今天来学习C语言的相关知识。 &#x1f44d; 如果觉得这篇文章有帮助&#xff0c;欢迎您一键三连&#xff0c;分享给更…

医学图像处理软件中几种MPR

1&#xff1a;设备厂商的MPR 2&#xff1a;后处理的MPR 3&#xff1a;阅片PACS的MPR 4&#xff1a;手术导航 手术规划的MPR 设备厂商的MPR需求更多是扫描线、需要3DMPR &#xff0c;三条定位线的任意角度旋转。 后处理的MPR&#xff0c;需求更多的是算法以及UI工具的研发&a…

java 类的实例化过程,其中的相关顺序 包括有继承的子类等复杂情况,静态成员变量的初始化顺序,这其中jvm在干什么

Java类的实例化过程及初始化顺序 Java类的实例化过程涉及多个步骤&#xff0c;特别是在存在继承关系和静态成员的情况下。下面我将详细解释整个过程&#xff0c;包括JVM在其中的角色。 1. 类加载阶段&#xff08;JVM的工作&#xff09; 在实例化一个类之前&#xff0c;JVM首…

Sce2DriveX: 用于场景-到-驾驶学习的通用 MLLM 框架——论文阅读

《Sce2DriveX: A Generalized MLLM Framework for Scene-to-Drive Learning》2025年2月发表&#xff0c;来自中科院软件所和中科院大学的论文。 端到端自动驾驶直接将原始传感器输入映射到低级车辆控制&#xff0c;是Embodied AI的重要组成部分。尽管在将多模态大语言模型&…

【题解-Acwing】870. 约数个数

题目:870. 约数个数 题目描述 给定 n 个正整数 ai,请你输出这些数的乘积的约数个数,答案对 109+7 取模。 输入 第一行包含整数 n。 接下来 n 行,每行包含一个整数 ai。 输出 输出一个整数,表示所给正整数的乘积的约数个数,答案需对 109+7 取模。 数据范围 1 ≤ …