r/AskReverseEngineering Mar 03 '26

Asking for resources to learn to read old binary data files to preserve data

I'm asking for some basic resources to learn to how to reverse engineer old binary data files so that I can create a reader for the files and display stats, export to other formats, etc.

What I've done: these are PAF files. Personal Ancestral Files, genealogy, family history. There are one or two proprietary programs that will read them, but I want to do it myself. I know the discontinued application, PAF, that wrote the data files was in C. I have some basic info about what "might" be the data structures from older documentation from version 2 (I'm working with version 5) that spells out the binary data structure. Big structural differences, but some similarities might carry over. And I'm guessing that the data is somewhat similar to the export format they use, GEDCOM. I have access to the application that creates the files, so I can create test files and look for small changes. I've been using HexFiend on a Mac to look at the binary to "see what I can see", but not experienced with data reverse engineering techniques.

What I'm looking for: good quality basic level information about applications and techniques that are helpful and used for the work of reverse engineering binary data. I'm a software engineer with a math/comp science background, but other than writing an assembly sim in college, I've not worked in this area at all. So any pointers on tools and techniques would be greatly appreciated. thanks!

2 Upvotes

2 comments sorted by

1

u/OlegMax Apr 16 '26

If the question still stands, could you share some sample, please?

1

u/MackNNations 3d ago

GEDCOM is a text-based format.

The files you have from the PAF application are binary?

You're starting in a good place by snooping around the files with a hex editor.

You might be able to download PAF 2.31 from the Internet Archive.
https://archive.org/details/personal-ancestral-file-release-2.31

The old PAF 2.0 app is DOS-based, or Apple II.

If you could run the old app, in an emulator for DOS, Apple, etc. , then build a new data file, then compare the structures, it might shine some light on it.

I would say look into IDA, Ghidra disassemblers and debuggers like OllyDbg, x64dbg.

Study everything you can about GEDCOM and PAF:

The following is a selected release history:
PAF 1.0 (MS-DOS) released in April 1984. Written in BASIC and did not have support for GEDCOM.[10][11][12][13][14]
PAF 2.0 (MS-DOS, Apple II, CP/M) released in April 1986. Supported an early specification of GEDCOM 2.0.[15] Due to PAF's slowness in BASIC, it was rewritten in C).[16][17][18]
PAF 2.1 (DOS, ProDOS, Macintosh) released in 1987.[19] Supported an early specification of GEDCOM 4.0.
PAF 2.2 (MS-DOS, ProDOS, Mac) released in 1989.[20] Supported an early specification of GEDCOM 4.0.
PAF 2.3 (MS-DOS, Macintosh) released in 1994.[21][22] The Macintosh version was called PAF:Family Records and MacPAF. Supported an early specification of GEDCOM 4.0.
PAF 2.31 (MS-DOS, Macintosh) released 30 Sep 1994.[23] This was the final release of the Macintosh version and only worked on Classic OS - OS 8.5through OS 9.2.2.[24] Supported an early specification of GEDCOM 4.0.
PAF 3.0 (DOS) released May 1997.[25] Supports the current GEDCOM 5.5 specification.
PAF 3.0M (DOS) released June 1999. A maintenance release of PAF 3.0; Shows as Release 3.01M.
PAF 4.0 released 28 June 1999. (Win9x/NT) Freeware. Supports the current GEDCOM 5.5 specification.[26] PAF 4.0 was based on Ancestral Quest.[27][28]
PAF 5.0 released in November 2000 (Win9x/NT) Freeware. Supports the current GEDCOM 5.5 specification. First version to support Unicodeallowing multiple languages.[29][30] Included was a standalone read-only Palm OS application to view, but not edit, PAF data.[31][32][33][34][35]
PAF 5.1 released in 2001 (Win9x/NT) Freeware. Supports the current GEDCOM 5.5 specification. Support multiple languages.[29]
PAF 5.2 released 23 July 2002 (Win9x/NT) Freeware. Supports the current GEDCOM 5.5 specification. Supports multiple languages.[36]

...from Wikipedia.

GEDCOM specifications:
https://gedcom.io/specs/

Versions:
https://www.gedcom.org/versions.html