Giter Site home page Giter Site logo

evyatar9 / gpthidra Goto Github PK

View Code? Open in Web Editor NEW
315.0 10.0 24.0 4.19 MB

GptHidra is a Ghidra plugin that uses the OpenAI Chat GPT to explain functions. With GptHidra, you can easily understand the purpose and behavior of functions in your codebase. Now with GPT4 Support!

Python 100.00%
ghidra python reverse-engineering api chatgpt extension gpt-3 plugin gpt-4

gpthidra's Introduction

GptHidra

GptHidra is a Ghidra plugin that uses the OpenAI Chat GPT to explain functions. With GptHidra, you can easily understand the purpose and behavior of functions in your codebase.

example.gif

What's New

GPT-4 Integration: Benefit from the latest advancements in natural language processing, providing even more insightful and accurate code explanations.

Learn more about accessing to GPT-4.

Requirements

Installation

  1. Download the GptHidra script GptHidra.py.
  2. Open the Ghidra Script Manager (found in the Tools menu).
  3. Click the New button to create a new script.
  4. Select Python as the language and give the script the name GptHidra.py.
  5. Paste the contents of the GptHidra.py script into the editor window.
  6. Replace API_KEY = '' with your OpenAI Chat GPT API key.
  7. Click the Save button to save the script.

Usage

To use GptHidra, select a function in the Ghidra decompiler and do one of the following:

  1. Press Ctrl + Alt + G (you can edit the script to change this shortcut).

  2. Go to Tools -> GptHidra (you can edit the script to change this menu item).

An explanation of the selected function will be printed to the Ghidra console.

Contact

Telegram: @evyatar9

Discord: evyatar9

Contributing

If you would like to contribute to the GptHidra extension, feel free to submit a pull request or report any issues you encounter on the GptHidra repository.

References

https://ghidra.re/ghidra_docs/api/ghidra/app/decompiler/DecompInterface.html

https://beta.openai.com/docs/

Support

You can support my work buying me a coffee:

buymeacoffe

Stargazers over time

Stargazers over time

gpthidra's People

Contributors

evyatar9 avatar superkenvery avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gpthidra's Issues

404 Error on API Call

Receiving a 404 error when trying to send a request to https://api.openai.com/v1/chat/completions.

Traceback (most recent call last): File "C:\Users\New\ghidra_scripts\GptHydra.py", line 75, in <module> explanation = explainFunction(c_code) File "C:\Users\New\ghidra_scripts\GptHydra.py", line 75, in <module> explanation = explainFunction(c_code) File "C:\Users\New\ghidra_scripts\GptHydra.py", line 34, in explainFunction response = json.loads(urllib2.urlopen(req).read()) File "C:\Users\New\Downloads\ghidra_11.0.2_PUBLIC_20240326\ghidra_11.0.2_PUBLIC\Ghidra\Features\Python\data\jython-2.7.3\Lib\urllib2.py", line 154, in urlopen return opener.open(url, data, timeout) File "C:\Users\New\Downloads\ghidra_11.0.2_PUBLIC_20240326\ghidra_11.0.2_PUBLIC\Ghidra\Features\Python\data\jython-2.7.3\Lib\urllib2.py", line 435, in open response = meth(req, response) File "C:\Users\New\Downloads\ghidra_11.0.2_PUBLIC_20240326\ghidra_11.0.2_PUBLIC\Ghidra\Features\Python\data\jython-2.7.3\Lib\urllib2.py", line 547, in http_response response = self.parent.error( File "C:\Users\New\Downloads\ghidra_11.0.2_PUBLIC_20240326\ghidra_11.0.2_PUBLIC\Ghidra\Features\Python\data\jython-2.7.3\Lib\urllib2.py", line 473, in error return self._call_chain(*args) File "C:\Users\New\Downloads\ghidra_11.0.2_PUBLIC_20240326\ghidra_11.0.2_PUBLIC\Ghidra\Features\Python\data\jython-2.7.3\Lib\urllib2.py", line 407, in _call_chain result = func(*args) File "C:\Users\New\Downloads\ghidra_11.0.2_PUBLIC_20240326\ghidra_11.0.2_PUBLIC\Ghidra\Features\Python\data\jython-2.7.3\Lib\urllib2.py", line 556, in http_error_default raise HTTPError(req.get_full_url(), code, msg, hdrs, fp) urllib2.HTTPError: HTTP Error 404: Not Found

The URL opens in a browser (asks for API key, as expected). Not able to be called from Ghidra though for some reason. Have you ran into this? Is it a settings issue?

urllib2.HTTPError: HTTP Error 429: Too Many Requests

I have been attempting to use this tool for months. I deleted and created new keys but still get this error.

Traceback (most recent call last):
  File "/home/deadbeef/ghidra_scripts/GptHidra.py", line 84, in <module>
    explanation = explainFunction(c_code)
  File "/home/deadbeef/ghidra_scripts/GptHidra.py", line 84, in <module>
    explanation = explainFunction(c_code)
  File "/home/deadbeef/ghidra_scripts/GptHidra.py", line 43, in explainFunction
    response = json.loads(urllib2.urlopen(req).read())
  File "/opt/ghidra_10.2.2_PUBLIC/Ghidra/Features/Python/data/jython-2.7.3/Lib/urllib2.py", line 154, in urlopen
    return opener.open(url, data, timeout)
  File "/opt/ghidra_10.2.2_PUBLIC/Ghidra/Features/Python/data/jython-2.7.3/Lib/urllib2.py", line 435, in open
    response = meth(req, response)
  File "/opt/ghidra_10.2.2_PUBLIC/Ghidra/Features/Python/data/jython-2.7.3/Lib/urllib2.py", line 547, in http_response
    response = self.parent.error(
  File "/opt/ghidra_10.2.2_PUBLIC/Ghidra/Features/Python/data/jython-2.7.3/Lib/urllib2.py", line 473, in error
    return self._call_chain(*args)
  File "/opt/ghidra_10.2.2_PUBLIC/Ghidra/Features/Python/data/jython-2.7.3/Lib/urllib2.py", line 407, in _call_chain
    result = func(*args)
  File "/opt/ghidra_10.2.2_PUBLIC/Ghidra/Features/Python/data/jython-2.7.3/Lib/urllib2.py", line 556, in http_error_default
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 429: Too Many Requests

Any ideas?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.