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

 

 

 

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

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

相关文章

微信小程序自定义组件---父子组件通信

有三种方式 属性绑定 父组件 子组件 事件绑定 步骤1&#xff1a;定义一个自定义事件 步骤2&#xff1a;bind:sync"自定义事件名称" 步骤3&#xff1a;this.triggerEvent(事件名&#xff0c;{参数}) 步骤4&#xff1a;通过e.detail.value获取子组件传递过来的数据 …

Dockerfile创建镜像LNMP+WordPress

目录 实验部署 nginx 配置mysql 配置php 实验部署 INMPwordpress nginx 172.111.0.10 docker-nginx mysql 172.111.0.20 docker-mysql php 172.111.0.30 docker-php nginx 关闭防火墙和安全机制在opt目录创建nginx MySQL php目录 cd nginx mysql php vim Dockerfile#声…

袋鼠目标检测数据集VOC+YOLO格式1400多张

袋鼠是双门齿目袋鼠亚目袋鼠科大袋鼠属的哺乳动物。袋鼠跳得最高、最远。雌性袋鼠都长有一个前开的育儿袋&#xff0c;袋鼠也因此得名。 [8]袋鼠泛指任一种属于袋鼠目的有袋动物&#xff0c; [7]它头小眼大耳朵长&#xff0c;面部较长&#xff0c;鼻孔两侧有黑色须痕。袋鼠胆小…

电阻的运用

本文引注 https://baijiahao.baidu.com/s?id1749115196647029942&wfrspider&forpc 一、零欧电阻 在电子电路设计时经常用到的一种元件就是电阻&#xff0c;我们都知道电阻在电路中起到分压限流的作用。然而&#xff0c;实际使用时会用到一种特殊的电阻&#xff1a;零…

wgcloud访问页面如何加前缀/wgcloud

nginx配置实现加/wgcloud - WGCLOUD

接口测试 — 4.Requests库GET、Post请求

Requests库GET请求是使用HTTP协议中的GET请求方式对目标网站发起请求。 &#xff08;不带参数的GET请求请看上一篇文章的练习&#xff09; 1、Requests库待参数的GET请求 使用Get方法带参数请求时&#xff0c;是params参数字典&#xff0c;而不是data参数字典。data参数字典…

upload-labs笔记

简介 upload-labs是一个使用php语言编写的&#xff0c;专门收集渗透测试和CTF中遇到的各种上传漏洞的靶场。旨在帮助大家对上传漏洞有一个全面的了解。目前一共21关&#xff0c;每一关都包含着不同上传方式。 文件上传漏洞是指&#xff1a; Web 服务器允许用户将文件上传至其…

【期末复习向】长江后浪推前浪之ChatGPT概述

参考文章&#xff1a;GPT系列模型技术路径演进-CSDN博客 这篇文章讲了之前称霸NLP领域的预训练模型bert&#xff0c;它是基于预训练理念&#xff0c;采用完形填空和下一句预测任务2个预训练任务完成特征的提取。当时很多的特定领域的NLP任务&#xff08;如情感分类&#xff0c…

一款基于分布式文件存储的数据库MongoDB的介绍及基本使用教程

MongoDB 是由C语言编写的&#xff0c;是一个基于分布式文件存储的开源数据库系统。 在高负载的情况下&#xff0c;添加更多的节点&#xff0c;可以保证服务器性能。 MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB 将数据存储为一个文档&#xff0c;数据结…

本地项目添加到gitlab命令操作

gitlab上面创建一个跟项目名同名的文件夹 创建文件夹&#xff0c;填写信息 添加readme文档&#xff0c;先保存下创建的文件夹 回到项目&#xff0c;复制项目的git 地址 然后进入到本地项目的文件夹&#xff0c;如d:/workspace/spring-demo&#xff0c;右键打开git bash弹框 命令…

六石管理学:装死式管理,工作都拖死

前几天急三火四的完成了泰山OFFICE riscv64版本&#xff0c;发送给了泰山头目。然后开源社区问我情况和我的回答&#xff1a; 这种没有下文的行为&#xff0c;其实是装死。以前合伙创业时遇到&#xff0c;在泰山更是经常遇到。不管你说什么&#xff0c;事情多么重要&#xff0c…

超声波清洗机应该怎样使用?清洁能力强超声波清洗机推荐

其实超声波清洗机使用方法非常简单&#xff0c;只需要将清洁物品放进超声波清洗机内&#xff0c;加入水打开开关即可开始使用&#xff0c;不需要太复杂操作就可以开启清洗&#xff0c;等待个数分钟就可以得到一个干干净净的物品被清洗完毕&#xff01;可见现在科技进步&#xf…