ida脚本环境开发配置idapythonidacpp三端环境(win,mac,linux)

news2024/11/14 20:36:39

ida脚本也有一段时间了,一直有个痛点是找不到比较好的方法热重载脚本来实时改动生效,导致开发效率老慢了。固总结下比较友好的环境搭配

使用ida热加载插件让你开发脚本更高效

github地址: GitHub - 0xeb/ida-qscripts: An IDA plugin to increase productivity when developing scripts for IDA, 这位老外是个知名视频网站小博主,挺多小妙招的

1.下载源码:

1

2

3

4

5

6

7

//1.下载 ida-cmake

cd /path/to/ida/plugin && git clone  https://github.com/0xeb/ida-cmake

//2.下载 ida-qscripts

cd /path/to/ida/idasdk/plugins && git clone https://github.com/0xeb/ida-qscripts

//3.下载idax

cd /path/to/ida/idasdk/plugins/ida-qscripts &&

git clone https://github.com/0xeb/idax

2.编译:

  • mac or linux 环境

    1

    2

    3

    4

    5

    6

    //1.环境变量添加 IDASDK

    //mac or linux

    export IDASDK=/path/to/ida/idasdk

    //2.clion 直接打开 ida-qscripts

    //3.clion -- settings -- build,execution,deployment 中 新增配置,并设置 cmake ida插件变量(64位的需要)

    //4.将编译出来的 qscripts.dylib qscripts64.dylib or qscripts.so qscripts.so 手动复制到 /path/to/ida/plugins 中,重启ida即生效

    图片描述

  • windows 环境

    1

    2

    3

    4

    //1.设置环境变量

    setx IDASDK /path/to/ida/idasdk

    //2.使用visual studio打开,测试环境为vs2022,打开后在cmakefile中看情况设置

    //3.vs 点击 项目--> qscripts的 CMake设置,在下面设置才能编译64位的dll

    图片描述

    1

    //4.将 qscripts.dll qscripts64.dll 复制到 /path/to/ida/plugins

3.运行图:

  • ida 运行图
    • mac or linux
    • windows

4.pycharm 配置 idapython开发环境

  • 代码提示配置
    • 打开pycharm的setting --> python interpreter --> showall

点击这个图标

添加ida目录下的python3

 

验证

 

动态调试

  • pycharm 新增一个remote debug
  • 点击pycharm debug按钮,此时pycharm会循环监听目标端口
  • ida打开qscripts进行加载和监听

 命中断点

 

  • 热加载
    • ida-qscripts勾选指定idapython脚本后,当修改脚本后,会触发插件reload实现重新载入脚本,自动更新上去了

5.clion 配置 idacpp开发环境

  • 代码提示配置
    • camkefile中添加ida目录

这边导入就不报错了 

  • 简单的插件模板

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

#include <ida.hpp>

#include <idp.hpp>

#include <loader.hpp>

#include <kernwin.hpp>

plugmod_t *idaapi init(void)

{

  msg("Plugin initialized!\n");

  return PLUGIN_OK;

}

void idaapi term(void)

{

  msg("Plugin term()\n");

}

bool idaapi run(size_t arg)

{

  msg("Plugin run()\n");

  return true;

}

plugin_t PLUGIN =

{

  IDP_INTERFACE_VERSION,

  PLUGIN_UNL,    //需要这个标记,否则不触发qscripts

  init,

  term,

  run,

  "",

  "",

  "Sample plugin",

  ""

};

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

//cmakefile 配置

cmake_minimum_required(VERSION 3.26)

project(ByeObf)

set(CMAKE_CXX_STANDARD 20)

#set(CMAKE_RUNTIME_OUTPUT_DIRECTORY /Applications/IDAPro8.3/ida.app/Contents/MacOS/plugins)

include_directories(/Applications/IDAPro/ida.app/Contents/MacOS/plugins/hexrays_sdk/include/)

include_directories(/Applications/IDAPro/ida.app/Contents/MacOS/idasdk_pro/include/)

#导入idaapi的目录

set(PLUGIN_NAME byeobf)

set(PLUGIN_SOURCES library.h library.cpp)

set(PLUGIN_OUTPUT_NAME ${PLUGIN_NAME})

set(PLUGIN_RUN_ARGS "-t")

include($ENV{IDASDK}/ida-cmake/addons.cmake)

1

编译64位插件定义EA64即可

  • 修改ida-cmake的addons.cmake改编译后的插件生成目录
    • 修改 LIBRARY_OUTPUT_DIRECTORY 、RUNTIME_OUTPUT_DIRECTORY_${cfg} 属性,改为/path/to/ida/plugins
  • 动态调试
    • 这边没测试到搭配了插件能像python那样热重载还能命中得情况,得每次都要手动载入命中
  • 热重载
    • 1.模板定义了插件名byeobf,需要创建两个文件 byteobf.py 和 byteobf.py.deps.qscripts,确保插件名要一样
    • 2.byteobf.py内容

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      import time

      import idaapi

      # Give the linker time to finish flushing the binary

      time.sleep(1)

      # Optionally clear the screen:

      #idaapi.msg_clear()

      # Load your plugin and pass any arg value you want

      idaapi.load_and_run_plugin('byeobf'0)

      # Optionally, do post work, etc.

    • 3.deps.qscripts内容
      • 改为你要触发的插件绝对路径

      1

      /triggerfile /keep /Applications/IDAPro/ida.app/Contents/MacOS/plugins/byeobf64.dylib

    • 4.将byteobf.py 和 byteobf.py.deps.qscripts 放到 /path/to/ida/plugins
    • 5.重启ida打开qscripts,导入并双击 byteobf.py,此时你每次重新编译idacpp改动都会被自动载入到ida中了
    • 6.效果图请看 ida-qscripts项目

6.vs 配置 idacpp开发环境 idapython环境

1

- 这里大差不差都参考上述改动即可

ida-win 7.7下载: [下载]IDA Pro 7.7.220118 (SP1) 全插件绿色版-资源下载-看雪-安全社区|安全招聘|kanxue.com

 

 

 

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

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

相关文章

PyTorch: 基于【VGG16】处理MNIST数据集的图像分类任务【准确率98.9%+】

目录 引言在Conda虚拟环境下安装pytorch步骤一&#xff1a;利用代码自动下载mnist数据集步骤二&#xff1a;搭建基于VGG16的图像分类模型步骤三&#xff1a;训练模型步骤四&#xff1a;测试模型运行结果后续模型的优化和改进建议完整代码结束语 引言 在本博客中&#xff0c;小…

MySQL数据库卸载-Windows

目录 1. 停止MySQL服务 2. 卸载MySQL相关组件 3. 删除MySQL安装目录 4. 删除MySQL数据目录 5. 再次打开服务&#xff0c;查看是否有MySQL卸载残留 1. 停止MySQL服务 winR 打开运行&#xff0c;输入 services.msc 点击 "确定" 调出系统服务。 2. 卸载MySQL相关组…

国标级联/流媒体音视频平台EasyCVR设备录像下载异常该如何解决?

视频监控TSINGSEE青犀视频平台EasyCVR能在复杂的网络环境中&#xff0c;将分散的各类视频资源进行统一汇聚、整合、集中管理&#xff0c;在视频监控播放上&#xff0c;视频安防监控汇聚平台可支持1、4、9、16个画面窗口播放&#xff0c;可同时播放多路视频流&#xff0c;也能支…

一、win10+yolov8+anaconda环境部署

1、安装anaconda &#xff08;1&#xff09;打开aonconda下载地址&#xff1a;https://www.anaconda.com/download&#xff0c;点击download下载。 2、下载完成后&#xff0c;双击打开&#xff0c;点击Next&#xff0c;I Agree&#xff0c;选择just me&#xff1b; 3、勾选…

SQL进阶理论篇(五):什么是Hash索引

文章目录 简介MySQL中的Hash索引与B树的区别总结参考文献 简介 hash&#xff0c;即哈希&#xff0c;也被称为是散列函数。 Hash在数据库中的应用&#xff0c;可以帮助我们大幅度提升检索数据的效率。 大名鼎鼎的MD5其实就是Hash函数的一种变体。 Hash算法&#xff0c;是通过…

ArkTS编译时遇到arkts-no-obj-literals-as-types错误【Bug已解决-鸿蒙】

文章目录 项目场景:问题描述原因分析:解决方案:解决方案1解决方案2此Bug解决方案总结项目场景: 在开发鸿蒙项目过程中,遇到了arkts-no-obj-literals-as-types,总结了自己和网上人的解决方案,故写下这篇文章。 遇到问题: rkTS编译时遇到arkts-no-obj-literals-as-type…

操作系统中的作业管理

从用户的角度看&#xff0c;作业是系统为完成一个用户的计算任务&#xff08;或一次事务处理&#xff09;所做的工作总和。例如&#xff0c;对于用户编制的源程序&#xff0c;需经过对源程序的编译、连接编辑或连接装入及运行产生计算结果。这其中的每一个步骤&#xff0c;常称…

解锁知识的新大门:自建知识付费小程序的技术指南

在数字化时代&#xff0c;知识付费小程序的崛起为创作者和学习者提供了全新的学习和分享方式。本文将以“知识付费小程序源码”为关键词&#xff0c;从技术角度出发&#xff0c;为你展示如何搭建一个独具特色的知识付费平台。 步骤1&#xff1a;选择适用的知识付费小程序源码…

知识库SEO:提升网站内容质量与搜索引擎排名的策略

随着搜索引擎算法的不断更新和优化&#xff0c;单纯依靠关键词堆砌和外部链接的时代已经过去。现在的SEO&#xff08;搜索引擎优化&#xff09;已经转向了以提供高质量、有价值内容为核心的阶段。知识库SEO便是这个新阶段的重要策略之一。 | 一、知识库SEO的概念与意义 1.定义…

《儿童绘本》期刊杂志发表论文投稿

《儿童绘本》杂志是由国家新闻出版管理部门批准&#xff0c;由吉林省舆林报刊发展有限责任公司主管主办&#xff0c;国内外公开发行的全国优秀期刊。办刊宗旨&#xff1a;以“普及绘本知识、推动儿童阅读”为理念&#xff0c;带动家庭亲子阅读&#xff0c;推动阅读教育及图画书…

一文解析数据结构是如何装入 CPU 寄存器的?

我们在之前很多文章的讲解中涉及了CPU与寄存器&#xff0c;然后有同学问了这样一个问题&#xff1a;既然CPU内部的寄存器数量有限&#xff0c;容量有限&#xff0c;那么我们使用的庞大的数据结构是怎样装入寄存器供CPU计算的呢&#xff1f;这篇文章就为你讲解一下这个问题。 内…

交叉销售与场景业务销售运营

交叉销售 交叉销售的定义 交叉销售是一种从横向角度开发产品市场的方式,是营销人员在完成本职工作以后,主动积极的向现有客户、市场等销售其他的、额外的产品或服务。 交叉销售的类型 补充销售 搭配销售个性化推荐奖励推荐 捆绑销售 交叉销售的意义 通过增加客户的转移成本…

VMP泄露编译的一些注意事项

VMP编译教程 鉴于VMP已经在GitHub上被大佬强制开源&#xff0c;特此出一期编译教程。各位熟悉的可以略过&#xff0c;不熟悉的可以参考一下。 环境&#xff08;软件&#xff09; Visual Studio 2015 - 2022 &#xff08;建议使用VS2019&#xff0c;Qt插件只有这个版本及以上…

企业信息建设现状

信息化建设是传统计算机与互联网技术高速发展并融合的产物&#xff0c;现阶段已经成为引领产业创新的决定性技术手段。 随着信息化的不断发展与进步&#xff0c;各行各业都开始了信息化的建设与应用。信息化是未来发展的大趋势&#xff0c;企业运用信息技术可以大幅度提高员工效…

【node】 地址标准化 解析手机号、姓名、行政区

地址标准化 解析手机号、姓名、行政区 实现效果链接源码 实现效果 将东光县科技园南路444号马晓姐13243214321 解析为 东光县科技园南路444号 13243214321 河北省;沧州市;东光县;东光镇 马晓姐 console.log(address, phone, divisions,name);链接 API概览 源码 https://gi…

NPM开发工具的简介和使用方法及代码示例

NPM&#xff08;Node Package Manager&#xff09;是Node.js的包管理工具&#xff0c;用于管理和共享被发布到模块仓库的JavaScript代码。本文将介绍NPM的定义、使用方法、代码示例以及总结。 一、NPM的定义 NPM是Node.js的默认包管理工具&#xff0c;它的功能包括安装、管理、…

CSS的盒子模型(重点)

网页布局的三大核心&#xff1a;盒子模型、浮动、定位 网页布局的过程&#xff1a; 1. 先准备好相关的网页元素&#xff0c;网页元素基本都是盒子 Box 。 2. 利用 CSS 设置好盒子样式&#xff0c;然后摆放到相应位置。 3. 往盒子里面装内容.网页布局的核心本质&#xff1a; 就…

【带头学C++】----- 九、类和对象 ---- 9.12 C++之友元函数(9.12.1---12.4)

❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️创做不易&#xff0c;麻烦点个关注❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️ ❤️❤️❤️❤️❤️❤️❤️❤️❤️文末有惊喜&#xff01;献舞一支&#xff01;❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️ 目录 9.12…

[论文阅读]Multimodal Virtual Point 3D Detection

Multimodal Virtual Point 3D Detection 多模态虚拟点3D检测 论文网址&#xff1a;MVP 论文代码&#xff1a;MVP 论文简读 方法MVP方法的核心思想是将RGB图像中的2D检测结果转换为虚拟的3D点&#xff0c;并将这些虚拟点与原始的Lidar点云合并。具体步骤如下&#xff1a; (1)…

Course3-Week2-推荐系统

Course3-Week2-推荐系统 文章目录 Course3-Week2-推荐系统1. 推荐机制的问题引入1.1 预测电影评分1.2 数学符号 2. 协同过滤算法2.1 协同过滤算法-线性回归2.2 协同过滤算法-逻辑回归2.3 均值归一化2.4 协同过滤算法的TensorFlow实现2.5 寻找相似的电影、协同过滤算法的缺点2.6…