Reverse Engineering with Ghidra

4 DAY U_LONG 32 CPE HOUR TRAINING: AUGUST 2021 * WEEK 1: JUL 31-AUG 6

Jeremy Blackthorne

Abstract

This is a hands-on course on using Ghidra for reverse engineering and vulnerability research. Exercises include Windows binaries, Linux binaries, and device firmware. Binaries will also be in a variety of architectures, including ARM, PowerPC, MIPS, x86, and x64. After completing this course, students will have the practical skills to use Ghidra in their day-to-day reversing tasks.

SUGGESTED COMBO:
MASTERING GHIDRA: AUTOMATION AND SCRIPTING FOR REVERSE ENGINEERING

Course Topics

Introduction

  • Ghidra overview
  • Project management
  • Code navigation, manipulation
  • Symbols, labels, bookmarks, searching
  • Disassembler-decompiler interaction
  • Patching

Ghidra Expert Tools

  • Decompiler deep dive
  • Datatype management
  • Memory management
  • P-code
  • Program flow
  • Ghidra tools
  • Plugin groups

Automation with Ghidra

  • Java/Jython refresher
  • The Ghidra FlatAPI
  • Development with Eclipse and the GhidraDev plugin
  • Analysis in Ghidra headless mode
  • Java-Jython interop

Prerequisites

Students are expected to have some experience with static and dynamic analysis, Linux, Windows, command line tools, shell scripting, C, and Python. Students should have the ability to do the following:

  • Declare an array pointer in C
  • Write a python script to XOR an encoded string
  • Perform a function trace using a debugger
  • Identify dead code using a disassembler

Software requirements

Students are expected to have their own computers which can run a 30GB virtual machine. A recommended hardware configuration is the following:

  • 50 GB of free hard disk space
  • 16 GB of RAM
  • 4 Processor cores
  • VMWare or Virtual Box to import an ova file