添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

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 PyHelper IDA PyHelper是Interactive Disassembler的 脚本 ,可帮助编写 IDA Python 脚本 和插件。 它通过获取所有可通过 IDA Python 访问的名称来做到这一点,并使它们在可浏览列表中可用,这些列表可任意排序,扫描(Alt-T)和过滤(Ctrl-F)。 双击列表条目将打开一个单独的视图,其中显示该条目的文档字符串(如果有)。 按Alt-E打开整个模块以供查看。 该 IDA Python 项目与 Python 3兼容。 为了与较旧版本的 IDA 兼容,您可能需要查看此项目的 Python 2分支。
IDA 代码 使用 IDA Code可以轻松地在 IDA 环境 中执行和调试 Python 脚本 ,而无需离开Visual Studio Code。 VS Code扩展可以在找到。 IDA Code仍处于早期状态,预计会出现错误。如果遇到任何问题,请打开一个新的问题。 速度:快速创建和执行 脚本 。 调试:随时附加一个 Python 调试器。 兼容性: IDA Code不需要您以特定方式修改 脚本 。可以从 IDA 内部执行所有 脚本 ,而无需进行更改。 模块化: IDA Code并未广泛使用安全包装器进行线程同步,这使您可以在任何给定时间从任何路径导入任何模块。而是 IDA Code将 脚本 执行线程与 IDA 主线程同步,以避免性能和意外问题。 IDA Code支持 Python 2和 Python 3! 要设置 IDA 插件的依赖关系,请运行: # make sure to use the correct Python version
设置调式符号路径,设置 环境 变量:_NT_SYMBOL_PATH=symsrv*symsrv.dll*D:\symbols*http://msdl.microsoft.com/download/symbols/ 打开 IDA 的patch pro gram菜单打开 ida gui.cfg文件,找到DISPLAY_PATCH_SUBMENU = NO设置为YES 显示中文字符:修改 ida ...
添加 环境 变量 _NT_SYMBOL_PATH symsrv*symsrv.dll*D:\symbols*http://msdl.microsoft.com/download/symbols/  (注意:自已事先建好文件夹) 2、在 IDA 安装目录下的cfg下的pdb.cfg文件中设置调式符号路径   PDBSYM_DOWNLOAD_PATH    =
IDA 必须是安装版的,我以前用的是免安装版的。 python 版本、 IDA 版本, IDA Pyhton版本必须匹配。 python IDA IDA Python 必须都是32位的或者都是64位的。 安装关键点 下面这些东西必备,缺一不可: python 27.dll(我安装的是 python 2.7,如果安装的是pyhton2.6那就是py... 删除 IDA 7.0目录\ python \sip.pyd 删除 IDA 7.0目录\ python \PyQt5目录 比如你的 python 安装目录是C:\ python 27-x64 添加 环境 变量 PYTHON HOME=C:\ python 27-x64 QT_QPA_PLATFORM_PLUGIN_PATH=C:\ python 27-x64\Lib\site-packages\PyQt5\plugins\platforms 修改 IDA 7.0目录\plugins\plugins.cfg ; Python _editor Python _editor 0 0 ; Python _editor 1 下载地址 https://xclient.info/s/hex-rays- ida - pro .html#versions 下载的dmp文件的密码均为xclient.info 2 解决运行 ida 奔溃的方案 参考:https://blog.csdn.net/u010953692/article/details/94907317 下载该文件:https:... sudo xattr -rd com.apple.quarantine ida 64.app 即可运行 链接地址???? :链接: https://pan.ba id u.com/s/1v3RcCCMlRCT9a01AWk-exA 提取码: r32v
1. 执行菜单的File-&gt;New-&gt; Pro ject… (Ctrl-Shift-N)打开新建工程窗口。  2. 展开左侧的Visual C++项目模板分支,然后选择右侧的 Win 32 Pro ject条目,输入工程名称,然后点击确定。 3.出现 Win 32Application Wizard 4. 使用默认设置 5. 生成的文件夹及文件 6. VS 解决方案资源...