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

2023-12-15 21:04

本文主要是介绍ida脚本环境开发配置idapythonidacpp三端环境(win,mac,linux),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

 

 

 

这篇关于ida脚本环境开发配置idapythonidacpp三端环境(win,mac,linux)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/497888

相关文章

Linux使用nload监控网络流量的方法

《Linux使用nload监控网络流量的方法》Linux中的nload命令是一个用于实时监控网络流量的工具,它提供了传入和传出流量的可视化表示,帮助用户一目了然地了解网络活动,本文给大家介绍了Linu... 目录简介安装示例用法基础用法指定网络接口限制显示特定流量类型指定刷新率设置流量速率的显示单位监控多个

ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法

《ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法》本文介绍了Elasticsearch的基本概念,包括文档和字段、索引和映射,还详细描述了如何通过Docker... 目录1、ElasticSearch概念2、ElasticSearch、Kibana和IK分词器部署

Linux流媒体服务器部署流程

《Linux流媒体服务器部署流程》文章详细介绍了流媒体服务器的部署步骤,包括更新系统、安装依赖组件、编译安装Nginx和RTMP模块、配置Nginx和FFmpeg,以及测试流媒体服务器的搭建... 目录流媒体服务器部署部署安装1.更新系统2.安装依赖组件3.解压4.编译安装(添加RTMP和openssl模块

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

linux下多个硬盘划分到同一挂载点问题

《linux下多个硬盘划分到同一挂载点问题》在Linux系统中,将多个硬盘划分到同一挂载点需要通过逻辑卷管理(LVM)来实现,首先,需要将物理存储设备(如硬盘分区)创建为物理卷,然后,将这些物理卷组成... 目录linux下多个硬盘划分到同一挂载点需要明确的几个概念硬盘插上默认的是非lvm总结Linux下多

SpringBoot+MyBatis-Flex配置ProxySQL的实现步骤

《SpringBoot+MyBatis-Flex配置ProxySQL的实现步骤》本文主要介绍了SpringBoot+MyBatis-Flex配置ProxySQL的实现步骤,文中通过示例代码介绍的非常详... 目录 目标 步骤 1:确保 ProxySQL 和 mysql 主从同步已正确配置ProxySQL 的

Spring Boot整合log4j2日志配置的详细教程

《SpringBoot整合log4j2日志配置的详细教程》:本文主要介绍SpringBoot项目中整合Log4j2日志框架的步骤和配置,包括常用日志框架的比较、配置参数介绍、Log4j2配置详解... 目录前言一、常用日志框架二、配置参数介绍1. 日志级别2. 输出形式3. 日志格式3.1 PatternL

linux进程D状态的解决思路分享

《linux进程D状态的解决思路分享》在Linux系统中,进程在内核模式下等待I/O完成时会进入不间断睡眠状态(D状态),这种状态下,进程无法通过普通方式被杀死,本文通过实验模拟了这种状态,并分析了如... 目录1. 问题描述2. 问题分析3. 实验模拟3.1 使用losetup创建一个卷作为pv的磁盘3.

配置springboot项目动静分离打包分离lib方式

《配置springboot项目动静分离打包分离lib方式》本文介绍了如何将SpringBoot工程中的静态资源和配置文件分离出来,以减少jar包大小,方便修改配置文件,通过在jar包同级目录创建co... 目录前言1、分离配置文件原理2、pom文件配置3、使用package命令打包4、总结前言默认情况下,

10个Python自动化办公的脚本分享

《10个Python自动化办公的脚本分享》在日常办公中,我们常常会被繁琐、重复的任务占据大量时间,本文为大家分享了10个实用的Python自动化办公案例及源码,希望对大家有所帮助... 目录1. 批量处理 Excel 文件2. 自动发送邮件3. 批量重命名文件4. 数据清洗5. 生成 PPT6. 自动化测试