Hyara (IDA Plugin)
Hyara is IDA Plugin that provides convenience when writing yararule.
You can designate the start and end addresses to automatically create rules.
It is created based on GUI, and adding features and improvements are currently underway.
Support for Ghidra and Binary Ninja are in development.
IDA Pro 6.8 ~ 7.0
$ pip install -r requirements.txt
(if error occurs during the installation of capstone or keystone, go to the installation page for each libarary and use the installation files)
copy Hyara.py to (IDA Pro installation directory)/plugins
copy assembler_disassembler.py to (IDA Pro installation directory)/plugins
Hyara: Ctrl + Shift + Y
assembler_disassembler: Ctrl + Shift + A
Hyara start screen and 5 options
- When you run Hyara, it aligns to the right like the above picture and the output window is aligned to the left.
- Select/Exit button uses IDAViewWrapper api to get the clicked address in IDA View. After done, you have to press it again to finish.
- After specifying the address, press the "Make" button to show the specified hexadecimal or strings as a result.
- When you click "Save", those results will be saved in the table below.
- Press "Export Yara Rule" to finally create the yararule using variables stored in the privious step.
- The comment option on the upper right side annotates the assemblies nicely.
- There are also options to create rich header and imphash.
- If you double-click the table, you can clear the rule.
- The wildcard option works but further development is still on going.
- This option is to extract strings within the range user specified.
- You can test the yararule you write on the fly.
- It has general option and recursive option.
- It also provides table alignment.
- YaraDetector shows which part is detected in the sample loaded to IDA, and when "Address" is clicked, it moves to the corresponding address on the IDA View.
- "YaraIcon" provides the convenience when you write the rule with Icon.
- When creating rules, be sure to check how the assembly changes when you use wildcards.
- Normally people uses website to convert assembly but you can check it by using this feature.
Description of "old_version"
- This version uses Choose and simplecustviewer.
- The Binary ninja plugin made the tool simple.
- I will make it elaborate using PyQt5 in the future.