From a27b3cc43ff87635f68d44eac584c29bb5d56aa8 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Thu, 26 Aug 2021 20:43:58 -0700 Subject: [PATCH] Add old version UPX detection --- BurnOutSharp/PackerType/UPX.cs | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/BurnOutSharp/PackerType/UPX.cs b/BurnOutSharp/PackerType/UPX.cs index a5bdf03c..3a7966e5 100644 --- a/BurnOutSharp/PackerType/UPX.cs +++ b/BurnOutSharp/PackerType/UPX.cs @@ -60,13 +60,24 @@ namespace BurnOutSharp.PackerType { try { - int index = positions[0]; - index -= 5; + // Check the normal version location first + int index = positions[0] - 5; string versionString = Encoding.ASCII.GetString(fileContent, index, 4); - if (!char.IsNumber(versionString[0])) - return "(Unknown Version)"; + if (char.IsNumber(versionString[0])) + return versionString; + + // Check for the old-style string + // + // Example: + // $Info: This file is packed with the UPX executable packer http://upx.tsx.org $ + // $Id: UPX 1.02 Copyright (C) 1996-2000 the UPX Team. All Rights Reserved. $ + // UPX! + index = positions[0] - 67; + versionString = Encoding.ASCII.GetString(fileContent, index, 4); + if (char.IsNumber(versionString[0])) + return versionString; - return versionString; + return "(Unknown Version)"; } catch {