OpenSSL Analysis with SciTools

What is it?

Ever wondered how OpenSSL evolved over the year? Here is a almost complete history of all the version of OpenSSL. Download any 2 versions and see what the developer has changed in them. Not the changes lines, git can do that. We'll show you how call trees have changed!!!

Download (almost) Any Version here!

(Fully ready to analyze with SciTools Understand):

OpenSSL 0.9.7_ a b c d e f g h i j k l m

OpenSSL 0.9.8_ a b c d e f g h i j k l m n o p q r s t u v w x y za zb zc zd ze zf zg zh

OpenSSL 1.0.0_ a b c d e f g h i j k l m n o p q r s t

OpenSSL 1.0.1_ a b c d e f g h i j k l m n o p q r s t u

OpenSSL 1.0.2_ a b c d e f g h i j k l m n o p q r s t u

OpenSSL 1.1.0_ a b c d e f g h i j k l

OpenSSL 1.1.1_ a b c d e f g h i j k l m n

OpenSSL 3.0.xv3.0.0 v3.0.1 v3.0.2

How to download an analysis for OpenSSL?

  1. Download SciTools Understand at
  2. Download the Zip File(s) corresponding to the OpenSSL Version(s) you want to explore, let's assume X_Y_Z
  3. Unzip the downloaded file, let's assume
  4. It will create a folder named SciTools_OpenSSL_OpenSSL_X_Y_Z
  5. Open Understand
  6. Select File >> Open >> Project
  7. Open SciTools_OpenSSL_OpenSSL_X_Y_Z/databaseOpenSSL_X_Y_Z.und
  8. You will be prompted to map DEPENDENCIES_USR. This tells SciTools Understand where to find the system header files. They are packaged in each zip file, do don't worry!
  9. Map DEPENDENCIES_USR to SciTools_OpenSSL_OpenSSL_X_Y_Z/usr (make it point to the usr folder that is directly under the folder created when unzipping)
  10. Hit "OK", analysis should start or, if needed, select Project >> Analyze All Files.

Can I compare 2 versions?

Yes !!!! That's where the magic happens!

  1. Simply download and build both versions you want to compare, make sure to analyze them.
  2. Open The First Version in Understand and Select  Compare >> Comparison Projects
  3. Add the Second Version as the comparison project
  4. Have fun with all the comparison features! Here are a few suggestions:
  • Compare >> Locate Changed Entities will show you all that changed
  • Compare >> Changed Treemap will show it graphically
  • Look a Call Tree and select the "Compare" variant of the graph
  • from a command line try "und export -changes -db DB1.und -cmpdb DB2.und outputFileName.csv" to create a report for all changes.

Don't want to do it manually, use this script to get it all downloaded and analyzed :)

  1. Make sure you have "und" in your path
  2. Make sure you have a full license of Understand (Eval will not work here) or contact me with your evaluation key at
  3. Go in an empty directory
  4. Run this BATCH script (Windows), or an equivalent on Linux...

@echo off
set list=OpenSSL_0_9_7
set list=%list%;OpenSSL_0_9_7a
set list=%list%;OpenSSL_0_9_7b
set list=%list%;OpenSSL_0_9_7c
set list=%list%;OpenSSL_0_9_7d
set list=%list%;OpenSSL_0_9_7e
set list=%list%;OpenSSL_0_9_7f
set list=%list%;OpenSSL_0_9_7g
set list=%list%;OpenSSL_0_9_7h
set list=%list%;OpenSSL_0_9_7i
set list=%list%;OpenSSL_0_9_7j
set list=%list%;OpenSSL_0_9_7k
set list=%list%;OpenSSL_0_9_7l
set list=%list%;OpenSSL_0_9_7m
set list=%list%;OpenSSL_0_9_8
set list=%list%;OpenSSL_0_9_8a
set list=%list%;OpenSSL_0_9_8b
set list=%list%;OpenSSL_0_9_8c
set list=%list%;OpenSSL_0_9_8d
set list=%list%;OpenSSL_0_9_8e
set list=%list%;OpenSSL_0_9_8f
set list=%list%;OpenSSL_0_9_8g
set list=%list%;OpenSSL_0_9_8h
set list=%list%;OpenSSL_0_9_8i
set list=%list%;OpenSSL_0_9_8j
set list=%list%;OpenSSL_0_9_8k
set list=%list%;OpenSSL_0_9_8l
set list=%list%;OpenSSL_0_9_8m
set list=%list%;OpenSSL_0_9_8n
set list=%list%;OpenSSL_0_9_8o
set list=%list%;OpenSSL_0_9_8p
set list=%list%;OpenSSL_0_9_8q
set list=%list%;OpenSSL_0_9_8r
set list=%list%;OpenSSL_0_9_8s
set list=%list%;OpenSSL_0_9_8t
set list=%list%;OpenSSL_0_9_8u
set list=%list%;OpenSSL_0_9_8v
set list=%list%;OpenSSL_0_9_8w
set list=%list%;OpenSSL_0_9_8x
set list=%list%;OpenSSL_0_9_8y
set list=%list%;OpenSSL_0_9_8za
set list=%list%;OpenSSL_0_9_8zb
set list=%list%;OpenSSL_0_9_8zc
set list=%list%;OpenSSL_0_9_8zd
set list=%list%;OpenSSL_0_9_8ze
set list=%list%;OpenSSL_0_9_8zf
set list=%list%;OpenSSL_0_9_8zg
set list=%list%;OpenSSL_0_9_8zh
set list=%list%;OpenSSL_1_0_0
set list=%list%;OpenSSL_1_0_0a
set list=%list%;OpenSSL_1_0_0b
set list=%list%;OpenSSL_1_0_0c
set list=%list%;OpenSSL_1_0_0d
set list=%list%;OpenSSL_1_0_0e
set list=%list%;OpenSSL_1_0_0f
set list=%list%;OpenSSL_1_0_0g
set list=%list%;OpenSSL_1_0_0h
set list=%list%;OpenSSL_1_0_0i
set list=%list%;OpenSSL_1_0_0j
set list=%list%;OpenSSL_1_0_0k
set list=%list%;OpenSSL_1_0_0l
set list=%list%;OpenSSL_1_0_0m
set list=%list%;OpenSSL_1_0_0n
set list=%list%;OpenSSL_1_0_0o
set list=%list%;OpenSSL_1_0_0p
set list=%list%;OpenSSL_1_0_0q
set list=%list%;OpenSSL_1_0_0r
set list=%list%;OpenSSL_1_0_0s
set list=%list%;OpenSSL_1_0_0t
set list=%list%;OpenSSL_1_0_1
set list=%list%;OpenSSL_1_0_1a
set list=%list%;OpenSSL_1_0_1b
set list=%list%;OpenSSL_1_0_1c
set list=%list%;OpenSSL_1_0_1d
set list=%list%;OpenSSL_1_0_1e
set list=%list%;OpenSSL_1_0_1f
set list=%list%;OpenSSL_1_0_1g
set list=%list%;OpenSSL_1_0_1h
set list=%list%;OpenSSL_1_0_1i
set list=%list%;OpenSSL_1_0_1j
set list=%list%;OpenSSL_1_0_1k
set list=%list%;OpenSSL_1_0_1l
set list=%list%;OpenSSL_1_0_1m
set list=%list%;OpenSSL_1_0_1n
set list=%list%;OpenSSL_1_0_1o
set list=%list%;OpenSSL_1_0_1p
set list=%list%;OpenSSL_1_0_1q
set list=%list%;OpenSSL_1_0_1r
set list=%list%;OpenSSL_1_0_1s
set list=%list%;OpenSSL_1_0_1t
set list=%list%;OpenSSL_1_0_1u
set list=%list%;OpenSSL_1_0_2
set list=%list%;OpenSSL_1_0_2a
set list=%list%;OpenSSL_1_0_2b
set list=%list%;OpenSSL_1_0_2c
set list=%list%;OpenSSL_1_0_2d
set list=%list%;OpenSSL_1_0_2e
set list=%list%;OpenSSL_1_0_2f
set list=%list%;OpenSSL_1_0_2g
set list=%list%;OpenSSL_1_0_2h
set list=%list%;OpenSSL_1_0_2i
set list=%list%;OpenSSL_1_0_2j
set list=%list%;OpenSSL_1_0_2k
set list=%list%;OpenSSL_1_0_2l
set list=%list%;OpenSSL_1_0_2m
set list=%list%;OpenSSL_1_0_2n
set list=%list%;OpenSSL_1_0_2o
set list=%list%;OpenSSL_1_0_2p
set list=%list%;OpenSSL_1_0_2q
set list=%list%;OpenSSL_1_0_2r
set list=%list%;OpenSSL_1_0_2s
set list=%list%;OpenSSL_1_0_2t
set list=%list%;OpenSSL_1_0_2u
set list=%list%;OpenSSL_1_1_0
set list=%list%;OpenSSL_1_1_0a
set list=%list%;OpenSSL_1_1_0b
set list=%list%;OpenSSL_1_1_0c
set list=%list%;OpenSSL_1_1_0d
set list=%list%;OpenSSL_1_1_0e
set list=%list%;OpenSSL_1_1_0f
set list=%list%;OpenSSL_1_1_0g
set list=%list%;OpenSSL_1_1_0h
set list=%list%;OpenSSL_1_1_0i
set list=%list%;OpenSSL_1_1_0j
set list=%list%;OpenSSL_1_1_0k
set list=%list%;OpenSSL_1_1_0l
set list=%list%;OpenSSL_1_1_1
set list=%list%;OpenSSL_1_1_1a
set list=%list%;OpenSSL_1_1_1b
set list=%list%;OpenSSL_1_1_1c
set list=%list%;OpenSSL_1_1_1d
set list=%list%;OpenSSL_1_1_1e
set list=%list%;OpenSSL_1_1_1f
set list=%list%;OpenSSL_1_1_1g
set list=%list%;OpenSSL_1_1_1h
set list=%list%;OpenSSL_1_1_1i
set list=%list%;OpenSSL_1_1_1j
set list=%list%;OpenSSL_1_1_1k
set list=%list%;OpenSSL_1_1_1l
set list=%list%;OpenSSL_1_1_1m
set list=%list%;OpenSSL_1_1_1n
set list=%list%;openssl-3.0.0
set list=%list%;openssl-3.0.1
set list=%list%;openssl-3.0.2
for %%T in (%list%) do (
CALL :processOpen %%T, ""
@echo on
echo "Processing Version (%~1)"
echo "Extracting"
curl --ssl-no-revoke --output
powershell -command "Expand-Archive -Force .\%~1"
cd .\%~1
und add -root DEPENDENCIES_USR=.\usr -db .\database%~1.und
und analyze -db .\database%~1.und
cd ..


Leave a comment

Please note, comments must be approved before they are published