Dear.Va
Dear.Va
我也没有找到修改伪代码的接口……我本来打算给这个插件添加自动重命名伪代码变量的功能,但我同样也没找到。
BaseTool中不应该包含调用GPT的代码,因为BaseTool是由GPT来使用的。我采用的是[LangChain](https://www.langchain.com/)框架,它的原理是在调用GPT的时候告诉他当前有哪些可用的BaseTool,之后GPT会自动选择合适的BaseTool来使用,以此循环,这被称作Agent。 如果你希望更改GPT的调用方式,你需要更改`ida_copilot/copilot.py`的代码 ``` python class Copilot: def run(self, temperature=0.2, model='gpt-3.5-turbo-0613'): # ... agent = initialize_agent( agent_type=AgentType.OPENAI_MULTI_FUNCTIONS, llm=ChatOpenAI(temperature=temperature, model=model), #
我有空会研究一下修改代码的功能,感谢指路
你的理解没问题,BaseTool指定了工具的描述,在调用GPT时就会将描述格式化成prompt传给GPT,GPT就可以理解工具的用途和调用方式(如参数列表),并以`JSON`的形式输出。之后LangChain解析JSON,并调用对应的工具。
LangChain应该支持多种大模型(包括本地模型),你可以在官网上找到教程
default_prompt也是要进行构建的,其模板大致如下: [基础描述] [工具描述] [输出描述] 具体地,在本项目中可能为: 你是一个经验丰富的逆向工程师,使用IDA分析…… 你可以使用下面的工具: 工具1名称、描述、参数 工具2名称、描述、参数 工具3名称、描述、参数 在输出时,如果要使用工具,则使用JSON输出工具名和参数。确保你的输出可以被`json.loads`解析。 这个过程叫做提示工程(Prompt engineering)
感觉整个插件需要彻底重写,另加入RAG等功能
An LLM can read assembly. However, most LLMs are designed for reading code. I'm afraid that they have a poor ability in reading assemblies.
Sorry about my late reply. The installation of this plugin is quite simple: Just place the files into `plugin` folder. As for the IDAPython, it should be included in the...
目前下面的许多问题其实是很容易被大模型解决的,但是IDA的api文档不够详细,并且有很多api在版本更新中出现了变化。等我完成这段时间的工作之后,需要深入研究才能够实现这些功能。