GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - trolldbois/python-haystack-reverse: Memory forensics data structure reversing

BranchesTags
Open more actions menu

Latest commit

 

History

1,818 Commits
1,818 Commits

Folders and files

NameName
Last commit message
Last commit date
docs
docs
 
 
haystack
haystack
 
 
test
test
 
 
.gitignore
.gitignore
 
 
.travis.yml
.travis.yml
 
 
CHANGES.txt
CHANGES.txt
 
 
CodingStyle.txt
CodingStyle.txt
 
 
LICENSE.txt
LICENSE.txt
 
 
MANIFEST.in
MANIFEST.in
 
 
README.rst
README.rst
 
 
TODO
TODO
 
 
requirements.txt
requirements.txt
 
 
setup.cfg
setup.cfg
 
 
setup.py
setup.py
 
 

Repository files navigation

python-haystack-reverse memory forensics

Build status of the master branch on Mac/Linux Test coverage Code Health Latest version released on PyPi

Quick Start:

Haystack-reverse CLI in the docs/ folder.

Introduction:

python-haystack-reverse is extension of python-haystack focused on reversing memory structure in allocated memory.

It aims at helping an analyst in reverse engineering the memory records types present in a process heap. It focuses on reconstruction, classification of classic C structures from memory. It attempts to recreate types definition.

Scripts & Entry Points:

A few entry points exists to handle the format your memory dump.

Memory dump folder produced by haystack-live-dump from the haystack package

  • haystack-reverse reverse CLI - reverse all allocation chunks
  • haystack-reverse-show show the reversed record at a specific address
  • haystack-reverse-hex show a specific record hex bytes at a specific address
  • haystack-reverse-parents show the records pointing to the allocated record at a specific address

Memory dump file produced by a Minidump tool

  • haystack-minidump-reverse reverse CLI - reverse all allocation chunks
  • haystack-minidump-reverse-show show the reversed record at a specific address
  • haystack-minidump-reverse-hex show a specific record hex bytes at a specific address
  • haystack-minidump-reverse-parents show the records pointing to the allocated record at a specific address

How to get a memory dump:

See python-haystack or use Sysinternals procdump.

Heap analysis / forensics:

Quick info:
  • The haystack-xxx-reverse family of entry points parse the heap for allocator structures,

pointers values, small integers and text (ascii/utf). Given all the previous information, it can extract instances and helps you in classifying and defining structures types.

IPython notebook usage guide:
  • Haystack-reverse CLI in the docs/ folder.

Command line example: --------------------_ The first step is to launch the analysis process with the haystack-xxx-reverse entry point. This will create several files in the cache/ folder in the memory dump folder:

$ haystack-reverse haystack/test/src/test-ctypes6.64.dump
$ ls -l haystack/test/src/test-ctypes6.64.dump/cache
$ ls -l haystack/test/src/test-ctypes6.64.dump/cache/structs

This will create a few files. The most interesting one being the <yourdumpfolder>/cache/xxxxx.headers_values.py that gives you an ctypes listing of all found structures, with guesstimates on fields types.

A <yourdumpfolder>/cache/graph.gexf file is also produced to help you visualize instances links. It gets messy for any kind of serious application.

  • *.headers_values.py contains the list of heuristicly reversed record types.
  • *.strings contains the list of heuristicly typed strings field in reversed record.

Other Entry points for reversing:

  • haystack-reverse-show show a specific record at a specific address
  • haystack-reverse-hex show a specific record hex bytes at a specific address
  • haystack-reverse-parents show the records pointing to the allocated record at a specific address
  • haystack-minidump-reverse-show show a specific record at a specific address
  • haystack-minidump-reverse-hex show a specific record hex bytes at a specific address
  • haystack-minidump-reverse-parents show the records pointing to the allocated record at a specific address

Dependencies:

  • haystack
  • python-numpy
  • python-networkx
  • python-levenshtein
  • several others...

About

Memory forensics data structure reversing

Resources

Readme
GPL-3.0 license
Activity

Stars

3 stars

Watchers

1 watching

Forks

1 fork
Report repository

Releases

Packages

Used by

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.