Skip to content

toco/IdiomMatcher

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

#IdiomMatcher Part of my bachelor thesis 'Matching of Control- and Data-Flow Constructs in Disassembled Code'. The goal is to implement a plugin for IDA which allows to find idioms specified by a pattern and mark them accordingly in IDA. This aids the reverse engineering of programs for unusual architectures, for which not all constructs are detected correctly.

##Dependencies

##Compile

  • Download the dependencies and place them in a directory contrib.
  • create a build directory, e.g. build
  • cd in the build directory.
  • run cmake with the following options, values may be depending on your configuration.
cmake -D IDA_DIR="/Applications/idaq.app/Contents/MacOS" -D IDA_SDK="contrib/idasdk67/" -D BOOST_DIR="contrib/boost_1_58_0" -D RAPID_JSON_DIR="contrib/rapidjson/include/" install ../

If you compile and install using cmake, it will automatically place the IdiomMatcher plugin in the plugin directory of IDA.

##Pattern Specification. Have a look into the patterns in the directory eval for examples of pattern specification. Normally you wouldn't manually write patterns, instead select some disassembly in IDA and create a pattern from there. Select disassembly and use the context menu or the menu "Edit/Other/Create Pattern from selection"

Patterns can be configure to extract values. The extracted values can be used in actions which will be exected once it was matched.

For more information about the pattern specification have a look at the documented IdiomMathcher.json example in the doc directory.

##Plugin usage Load patterns form disk or create patterns

##TODO

  • Add GUI for pattern editing.

##License Licenced under MIT License, see LICENSE for full text.

About

Pattern matching of control- and data flow structures for IDA.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published