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

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作者地址
 

相关文章:

  • 【开源项目】基于sherpa-onnx的实时语音识别系统 - LiveASR
  • 从Windows开发迁移到信创开发的指南:国产替代背景下的技术路径与实践
  • swagger2升级至openapi3的利器--swagger2openapi
  • 跨平台项目部署全攻略:Windows后端+Mac前端在服务器的协同实战
  • 基于Spring Boot+Vue 网上书城管理系统设计与实现(源码+文档+部署讲解)
  • jupyter已经安装但是无法通过命令行启动
  • AI编程工具“幻觉”风险与飞算JavaAl的破局之道
  • 万界星空科技QMS质量管理系统几大核心功能详解
  • Webug4.0通关笔记03- 第4关POST注入和第5关过滤注入
  • DeepSeek破界而来:重构大规模深度检索的算力与边界
  • GTC Taipei 2025 医疗域前瞻:从AI代理到主权生态,解码医疗健康与生命科学的未来图景
  • BT136-ASEMI无人机专用功率器件BT136
  • acwing背包问题求方案数
  • Android Studio中OpenCV应用详解:图像处理、颜色对比与OCR识别
  • 人体姿态估计常用数据集介绍
  • 32、Server.Transfer和Response.Redirect的区别是什么?
  • 5 个开源 MCP 服务器
  • 第三次作业(密码学)
  • 4、CMake基础:日志、变量操作和宏定义
  • 跨越养生误区雷区,迈向科学养生大道
  • 科学家为AI模型设置“防火墙”,以防止被不法分子滥用
  • 文天祥与“不直人间一唾轻”的元将唆都
  • “五一”假期,又有多地将向社会开放政府机关食堂
  • 商务部:一季度我国服务贸易较快增长,进出口总额同比增8.7%
  • 湖南华容县通报“大垱湖水质受污染”,爆料者:现场已在灌清水
  • 西班牙葡萄牙突发全国大停电,欧洲近年来最严重停电事故何以酿成