给你的Ida插上翅膀

公众号: 奋飞安全
• 阅读 2

一、目标

“小x同学,把0x1011218f 的函数中的花指令去除掉”。

最近飞哥已经陷入到AI中无法自拔,感觉以后古法分析都快要成非遗了,以后的标题都得是"传承三十年,古法纯手工去花指令,定位关键算法"。

二、步骤

你的Ida Python在哪里?

首先你得知道你的ida python是谁? 在哪里?

原则一,不要用系统的python,不然你乱七八糟装一堆包,把系统的python干坏了,就废了,最好创建一个虚拟环境,这个python只给ida用

/Applications/IDA Professional 9.1.app/Contents/MacOS

目录下面找到 idapyswitch

fenfei@fenfei-Mac-Studio MacOS % ./idapyswitch 
The following Python installations were found:
    #0: 3.13.0 ('') (/opt/homebrew/Cellar/python@3.13/3.13.5/Frameworks/Python.framework/Versions/3.13/Python)
    #1: 3.12.0 ('') (/opt/homebrew/Cellar/python@3.12/3.12.10/Frameworks/Python.framework/Versions/3.12/Python)
    #2: 3.11.0 ('') (/opt/homebrew/Cellar/python@3.11/3.11.12/Frameworks/Python.framework/Versions/3.11/Python)
    #3: 3.10.0 ('') (/opt/homebrew/Cellar/python@3.10/3.10.17/Frameworks/Python.framework/Versions/3.10/Python)
    #4: 3.9.0 ('') (/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.9/Python3)
    #5: 3.9.0 ('') (/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.9/Python3)
Please pick a number between 0 and 5 (default: 0)

可以看到 我现在ida 用的是 py3.13

然后使用 conda 装个虚拟环境,然后里面也装python3.13

conda create -n ida_env python=3.13

修改 /Applications/IDA Professional 9.1.app/Contents/MacOS/python/init.py

增加一行 sys.path.append("/opt/miniconda3/envs/ida_env/lib/python3.13/site-packages")

恭喜你,从此以后你的ida python就专款专用了

💡 TIP
从ida File -> Script command... 执行 import sys print(sys.path)

可以确认一下你的配置是否正确,

插上翅膀

https://github.com/mrexodia/ida-pro-mcp

mcp是什么?这个得问ai

MCP 一般指的是 Model Context Protocol(模型上下文协议)。

一句话版理解(先看这个)

MCP = 给 AI 规定的一套“插件 / 外挂接口标准”

就像:

  • USB 是硬件接口标准
  • HTTP 是网络接口标准
  • MCP 是 AI 调用外部能力的接口标准

其实你就理解成,ida mcp 可以让AI ide 直接操作你的ida

我们开始安装 ida mcp

# 进入ida专用py环境
conda activate ida_env
pip uninstall ida-pro-mcp
pip install https://github.com/mrexodia/ida-pro-mcp/archive/refs/heads/main.zip
ida-pro-mcp --install

ok了, 安装完毕, 打开 ida ,找个样本反编译,然后 Edit -> Plugins -> MCP

[MCP] Server started:
  Streamable HTTP: http://127.0.0.1:13337/mcp
  SSE: http://127.0.0.1:13337/sse
  Config: http://127.0.0.1:13337/config.html

这就是启动成功,

💡 TIP
有时候端口会是 13338 ,根据实际情况配置 AI IDE

配置AI IDE

打开你常用的 AI IDE, 包括不限于 Cursor / CodeGeeX / Trae / Codebuddy

配置 MCP

{"mcpServers":{"ida":{"transport":"sse","url":"http://127.0.0.1:13337/sse","alwaysAllow":["idb_meta","list_funcs","disasm","decompile","lookup_funcs","analyze_funcs","get_bytes"]}}}

出来这个效果

给你的Ida插上翅膀

可以开始了


从ida mcp中,请把 0x101159B88 函数的花指令去掉

从ida mcp中,请帮我分析一下 xid 是如何生成的, 生成frida hook 脚本 跟踪一下。

嗯 真香

三、总结

感觉ai进步了,以前红极一时的 AI Prompt 没那么重要了,反正我说的 AI 基本都能听懂。

古法纯手工还有没有意义? 有个网友说过 你不会的别指望 ai 会,你能用 ai 搞出来是因为你会

给你的Ida插上翅膀 插上翅膀的人是天使,插上翅膀的老鼠是蝙蝠

💡 TIP
: 本文的目的只有一个就是学习更多的逆向技巧和思路,如果有人利用本文技术去进行非法商业获取利益带来的法律责任都是操作者自己承担,和本文以及作者没关系。

点赞
收藏
评论区
推荐文章
小程序逆向分析 (一)
一、目标李老板:奋飞呀,最近耍小程序的比较多,而且貌似js好耍一点?要不咱们也试试?奋飞:你是老板,你说了算喽。第一次搞小程序,得找个软柿子捏,就找个以前分析过的某段子App的小程序吧。反编译静态分析动态调试二、步骤春天在哪里?app下载回来就是apk包,那么小程序在哪里?小程序是一个以wxapkg为后缀的文件,在android手机的/da
Ustinain Ustinain
4年前
关于我想要编写dll文件这件事
0x1前言首先我们要用C、C编写dll,肯定是需要一个合适的编写软件,什么!?你不知道什么是dll,那你这有必要去看看我得上一篇了虽然篇幅不长,但是可以让你对dll有个大致得印象,由于本人用的CLion2019的版本的,至于为什么不用VS,因为里面配置过于繁琐,很不友好,CLion安装包以及破解群文件都有,可以去下载直接使用。话不多说,进入今天
不能Hook的人生不值得 jsHook和模拟执行
一、目标李老板:奋飞呀,上次分析的那个App光能Debug还不够呀,网页中的js也用不了Frida,我还想Hook它的函数,咋搞呀?再有App可以RPC去执行签名,这个js我如何去利用呀?总不能代码都改成js去做请求吧?奋飞:老板呀,你一下提这么多要求,不是明摆着要我们加班吗?这次加班费可得加倍。二、步骤最简单易行的jsHookcon
某车联网App 通讯协议加密分析(二) Unidbg手把手跑通
一、目标有一段时间没有写unidbg相关的文章了,这个样本挺合适,难度适中,还适当给你挖个小坑。所以后面是一个系列文章,包含unidbg补环境,TraceBlock对比流程,TraceCode定位差异。掌握好这一系列套路,Native分析可以算入门了。这次先来把so用unidbg跑通v6.1.0二、步骤DumpsoIDA打开 libencryp
Frida Stalker 是什么?
一、目标在分析so中的算法时,Trace和Debug是常用的手段。了解一些调试器原理的同学都知道,Trace和Debug需要修改原始代码加上个int3,来激活调试器。这样有些App可以依赖检测关键代码来判断是否被调试。也许你会说,我们可以patch掉检测代码,上次飞哥遇到一个狠人app,B去检测A处的代码,C去检测B处的代码,D去检测C处的代码,……反正
Souleigh ✨ Souleigh ✨
5年前
10分钟学会python函数式编程
在这篇文章里,你将学会什么是函数范式以及如何使用Python进行函数式编程。你也将了解列表推导和其它形式的推导。函数范式在命令式范式中,通过为计算机提供一系列指令然后执行它们来完成任务。在执行这些指令时,可以改变某些状态。例如,假设你最初将A设置为5,然后更改A的值。这时在变量内部值的意义上,你改变了A的状态。在函数式范式中,你不用告诉计算机做什
代码还原的技术: Unidbg hook_add_new实现条件断点(二)
一、目标在做代码还原的时候,有时候会分析一组结果,希望在中途下个条件断点,比如在代码行0x1234,R00x5678的时候触发断点。今天我们就来试着搞一下。TIP:Unidbg代码同步到官方最新版,最新版已经支持浮点寄存器的显示了。二、步骤先写个floatdemotwo把祖传算法升个级extern"C"JNIEXPORTjstringJNIC
Wesley13 Wesley13
4年前
PIC中档单片机汇编指令详解(5)
位操作指令详述BCF数据寄存器指定位清0语法形式:BCFf,b操作数:f为数据寄存器的低7位地址(0x00~0x7F)B为数据位编号(0~7)执行时间:一个指令周期执行过程:使数据寄存器f的的b位清0状态标志影响:无说明:该指令可对任何数据寄存器的任意一个位置清0,常用于标志位的设定和清除,或者把某一管脚置成低电平。指
Wesley13 Wesley13
4年前
FLV文件格式
1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  
Stella981 Stella981
4年前
Linux应急响应(二):捕捉短连接
0x00前言​短连接(shortconnnection)是相对于长连接而言的概念,指的是在数据传送过程中,只在需要发送数据时,才去建立一个连接,数据发送完成后,则断开此连接,即每次连接只完成一项业务的发送。在系统维护中,一般很难去察觉,需要借助网络安全设备或者抓包分析,才能够去发现。0x01应急场景​
公众号:  奋飞安全
公众号: 奋飞安全
Lv1
奋飞,国家高级信息系统项目管理师,独立安全研究员。 http://91fans.com.cn/
文章
65
粉丝
4
获赞
44