From 289bf9b62213f65d0258a71cfe2b590827ae8635 Mon Sep 17 00:00:00 2001 From: hfiref0x Date: Wed, 13 Dec 2023 19:22:58 +0700 Subject: [PATCH] v 1.4.1 Address #6 --- Binary/sxsexp32.exe | Bin 34304 -> 34816 bytes Binary/sxsexp64.exe | Bin 38400 -> 38400 bytes SXSEXP.sha256 | 28 ------------------ Source/sxsexp/main.c | 42 ++++++++++++++++++--------- Source/sxsexp/sup.c | 46 ++++++++++++++++++++++++++++++ Source/sxsexp/sup.h | 33 +++++++++++++++++---- Source/sxsexp/sxsexp.vcxproj.user | 3 +- Source/sxsexp/sxsexpres.rc | Bin 4598 -> 4602 bytes 8 files changed, 104 insertions(+), 48 deletions(-) delete mode 100644 SXSEXP.sha256 diff --git a/Binary/sxsexp32.exe b/Binary/sxsexp32.exe index 8b1c160578e1a516d133e74fafaa0eb8eba6e67a..b4e4b9360524bd525f7989a35788bf11b427bede 100644 GIT binary patch delta 7899 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 delta 7531 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 P>gh(U90&W)YuBr&! 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 K_gi-4I{ph3j0g|_ delta 9864 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 diff --git a/SXSEXP.sha256 b/SXSEXP.sha256 deleted file mode 100644 index 68f487d..0000000 --- a/SXSEXP.sha256 +++ /dev/null @@ -1,28 +0,0 @@ -ccf9f5edb6e1612d68735b00975c2c6a5bed55c54ec17265732882e045e2c7c4 *Binary\sxsexp32.exe -68cdfaf4a87a9593214a341c2e481559820513a789e7026e54cfc60cd79339a5 *Binary\sxsexp64.exe -e277ada5a29cde5800aebcdbaa0b4a10ba455878438b862d63231645ed9df7f6 *Source\sxsexp.sln -6e54592ead25d859980692d5853c46d66705cbb1ebb0e90b9bd0fb66e29df5ad *Source\sxsexp\global.h -d22937400e4f3f69f59775766fae33159d4bd62a89fbf20bd935c37f69caf9b9 *Source\sxsexp\main.c -e5dff4e924f884be772e4db3a3ec5ef7bb04d8441c113d44854046455d25cd56 *Source\sxsexp\resource.h -7fbe8809e0640869e7e11412568c30b9c5065f87738ed81ca8344eefec9c18ec *Source\sxsexp\sup.c -1b41ad36e34e4fe8d922f6d8a85319b69fabe8e544d305f9942a58e59f52153f *Source\sxsexp\sup.h -6e30b6728a2e69429ba763787324333d9ad9b2ef4f6287fabe132e5b7975d23f *Source\sxsexp\sxsexp.manifest -e5368df15a9c35151082eaff569c0ee36d610244b9b29d9929c8a7b3bf3a809f *Source\sxsexp\sxsexp.vcxproj -aac48660fc7af9b0fa7de3c9a79ff8ebabfdc9827cf2b7df6e1207c9b34c96d8 *Source\sxsexp\sxsexp.vcxproj.filters -9ea95f7f02416cc7b42fe7730d0d61cd40a5bd52fd56218d3588897a09aff1f6 *Source\sxsexp\sxsexp.vcxproj.user -506029ab54b0bc1bee32d0276e1eef4090154d24c2905fa4a37b7569ac4cc739 *Source\sxsexp\sxsexpres.rc -7894c0230d378f5cb7ad3d365cb7c77e1fb95762cb46a4e4b68a760115674ae8 *Source\sxsexp\wcp.h -893b90b942372928009bad64f166c7018701497e4f7cd1753cdc44f76da06707 *Source\sxsexp\minirtl\cmdline.c -bd6fe82852c4fcdfab559defa33ea394b752a4e4a5ac0653ae20c4a94b0175ed *Source\sxsexp\minirtl\cmdline.h -2a08385892845104b4f07d693ca395eba3a09e4aa89ad791be3807919316ed67 *Source\sxsexp\minirtl\minirtl.h -d7fbfd69df3840022dab1f8f2d529ce04abac8cee0234448bfd0a67feb6aea22 *Source\sxsexp\minirtl\rtltypes.h -e56e67b10a67f0d5ef4128c7ab0c6cb9ba9966916720525edfa6abf3101dfe13 *Source\sxsexp\minirtl\u64tohex.c -f81c975acd016c97776dd3a8e3218e148682b0336ff3fcd77fad6d9b86ddf107 *Source\sxsexp\minirtl\ultohex.c -9cbedf9b92abaef3ea28de28dd523ac44079592178ef727c7003c339a5a54712 *Source\sxsexp\minirtl\ultostr.c -83772aa217508279294d91af5cfabec9b5e00b836a2e2f5fe37cf1ebc2905a52 *Source\sxsexp\minirtl\_strcat.c -ef1b18997ea473ac8d516ef60efc64b9175418b8f078e088d783fdaef2544969 *Source\sxsexp\minirtl\_strcmpi.c -969b35213fa23ff50a169e5498a97f28bc6f5820b447b78ec9dc6910dd8cc3e8 *Source\sxsexp\minirtl\_strcpy.c -27159b8ff67d3f8e6c7fdb4b57b9f57f899bdfedf92cf10276269245c6f4e066 *Source\sxsexp\minirtl\_strend.c -60f19c6b805801e13824c4d9d44748da8245cd936971411d3d36b873121888eb *Source\sxsexp\minirtl\_strlen.c -87cc72bb8e3f1534bee09ee278ecd928d975ebb94aeffc767b67249815a0bf3a *Source\sxsexp\minirtl\_strncmpi.c -0434d69daa20fbf87d829ffc17e43dcc2db3386aff434af888011fdec2f645a4 *Source\sxsexp\minirtl\_strncpy.c diff --git a/Source/sxsexp/main.c b/Source/sxsexp/main.c index 91628f8..0cb2fca 100644 --- a/Source/sxsexp/main.c +++ b/Source/sxsexp/main.c @@ -4,9 +4,9 @@ * * TITLE: MAIN.C * -* VERSION: 1.40 +* VERSION: 1.41 * -* DATE: 19 Jul 2023 +* DATE: 10 Dec 2023 * * Program entry point. * @@ -25,6 +25,7 @@ HANDLE g_Heap = NULL; SUP_DECOMPRESSOR gDecompressor; +SUP_DELTA_COMPRESSION gMsDeltaContext; SUP_CONSOLE gConsole; #define T_UNSUPFORMAT TEXT("This format is not supported by this tool") @@ -33,7 +34,7 @@ SUP_CONSOLE gConsole; // // Help output. // -#define T_TITLE TEXT("SXSEXP v1.4.0 from Jul 20 2023, (c) 2016 - 2023 hfiref0x\r\n\ +#define T_TITLE TEXT("SXSEXP v1.4.1 from Dec 10 2023, (c) 2016 - 2023 hfiref0x\r\n\ Expand compressed files from WinSxS folder (DCD01, DCN01, DCM01, DCS01 formats).\r\n") #define T_HELP TEXT("SXSEXP \r\n\ @@ -75,7 +76,7 @@ VOID PrintDataHeader( inputDelta.lpStart = header.pDCD->Data; inputDelta.uSize = SourceFileSize - FIELD_OFFSET(DCD_HEADER, Data); //size without header specific fields inputDelta.Editable = FALSE; - if (!GetDeltaInfoB(inputDelta, &dhi)) { + if (!gMsDeltaContext.GetDeltaInfoB(inputDelta, &dhi)) { supConsoleWriteLine(&gConsole, T_ERRORDELTA); break; } @@ -98,7 +99,7 @@ VOID PrintDataHeader( inputDelta.lpStart = header.pDCN->Data; inputDelta.uSize = SourceFileSize - FIELD_OFFSET(DCN_HEADER, Data); //size without header inputDelta.Editable = FALSE; - if (!GetDeltaInfoB(inputDelta, &dhi)) { + if (!gMsDeltaContext.GetDeltaInfoB(inputDelta, &dhi)) { supConsoleWriteLine(&gConsole, T_ERRORDELTA); break; } @@ -181,12 +182,12 @@ BOOL ProcessFileDCN( inputDelta.Editable = FALSE; inputDelta.lpStart = ((PDCN_HEADER)SourceFile)->Data; inputDelta.uSize = SourceFileSize - FIELD_OFFSET(DCN_HEADER, Data); - if (GetDeltaInfoB(inputDelta, &deltaHeaderInfo)) { + if (gMsDeltaContext.GetDeltaInfoB(inputDelta, &deltaHeaderInfo)) { RtlSecureZeroMemory(&sourceDelta, sizeof(DELTA_INPUT)); RtlSecureZeroMemory(&targetOutput, sizeof(DELTA_OUTPUT)); - bResult = ApplyDeltaB(DELTA_FLAG_NONE, sourceDelta, inputDelta, &targetOutput); + bResult = gMsDeltaContext.ApplyDeltaB(DELTA_FLAG_NONE, sourceDelta, inputDelta, &targetOutput); if (bResult) { pvData = HeapAlloc(g_Heap, HEAP_ZERO_MEMORY, targetOutput.uSize); @@ -197,7 +198,7 @@ BOOL ProcessFileDCN( else { dwLastError = GetLastError(); } - DeltaFree(targetOutput.lpStart); + gMsDeltaContext.DeltaFree(targetOutput.lpStart); } else { dwLastError = GetLastError(); @@ -298,7 +299,7 @@ BOOL ProcessFileDCD( ioutput.lpStart = NULL; ioutput.uSize = 0; - bResult = ApplyDeltaB(DELTA_FLAG_NONE, isrc, idelta, &ioutput); + bResult = gMsDeltaContext.ApplyDeltaB(DELTA_FLAG_NONE, isrc, idelta, &ioutput); if (bResult) { pvData = HeapAlloc(g_Heap, HEAP_ZERO_MEMORY, ioutput.uSize); @@ -309,7 +310,7 @@ BOOL ProcessFileDCD( else { dwLastError = GetLastError(); } - DeltaFree(ioutput.lpStart); + gMsDeltaContext.DeltaFree(ioutput.lpStart); } else { dwLastError = GetLastError(); @@ -495,7 +496,7 @@ BOOL ProcessFileDCM( inputDelta.Editable = FALSE; inputDelta.lpStart = ((PDCM_HEADER)SourceFile)->Data; inputDelta.uSize = SourceFileSize - FIELD_OFFSET(DCM_HEADER, Data); - if (!GetDeltaInfoB(inputDelta, &dhi)) { + if (!gMsDeltaContext.GetDeltaInfoB(inputDelta, &dhi)) { dwLastError = GetLastError(); supConsoleWriteLine(&gConsole, T_ERRORDELTA); break; @@ -508,7 +509,7 @@ BOOL ProcessFileDCM( RtlSecureZeroMemory(&targetDelta, sizeof(DELTA_OUTPUT)); - bResult = ApplyDeltaB(DELTA_FLAG_NONE, sourceDelta, inputDelta, &targetDelta); + bResult = gMsDeltaContext.ApplyDeltaB(DELTA_FLAG_NONE, sourceDelta, inputDelta, &targetDelta); if (bResult) { pvData = HeapAlloc(g_Heap, HEAP_ZERO_MEMORY, targetDelta.uSize); @@ -520,7 +521,7 @@ BOOL ProcessFileDCM( dwLastError = GetLastError(); } - DeltaFree(targetDelta.lpStart); + gMsDeltaContext.DeltaFree(targetDelta.lpStart); } else { dwLastError = GetLastError(); @@ -942,6 +943,21 @@ void main() break; } + if (!supInitializeMsDeltaAPI(&gMsDeltaContext)) { + supConsoleDisplayWin32Error(&gConsole, TEXT("SXSEXP: Fatal error, failed to initialize MsDelta API")); + break; + } + else { + RtlSecureZeroMemory(szSourcePath, sizeof(szSourcePath)); + if (GetModuleFileName(gMsDeltaContext.hModule, + (LPWSTR)&szSourcePath, + MAX_PATH)) + { + supConsoleWriteLine(&gConsole, TEXT("SXSEXP: Loaded MsDelta.dll")); + supConsoleWriteLine(&gConsole, szSourcePath); + } + } + if (_strcmpi(szBuffer, L"/d") == 0) { uResult = DCDMode(lpCmdLine); break; diff --git a/Source/sxsexp/sup.c b/Source/sxsexp/sup.c index f6560ad..6f86eb0 100644 --- a/Source/sxsexp/sup.c +++ b/Source/sxsexp/sup.c @@ -462,6 +462,52 @@ CFILE_TYPE supGetFileType( return Result; } +/* +* supInitializeMsDeltaAPI +* +* Purpose: +* +* Allocate pointers to MsDelta engine routines. +* +*/ +BOOL supInitializeMsDeltaAPI( + _Inout_ PSUP_DELTA_COMPRESSION MsDeltaContext +) +{ + FARPROC pfn; + HMODULE hModule; + + MsDeltaContext->ApplyDeltaB = NULL; + MsDeltaContext->DeltaFree = NULL; + MsDeltaContext->GetDeltaInfoB = NULL; + + hModule = LoadLibrary(TEXT("msdelta.dll")); + MsDeltaContext->hModule = hModule; + + if (hModule == NULL) + return FALSE; + + pfn = GetProcAddress(hModule, "ApplyDeltaB"); + if (pfn) + MsDeltaContext->ApplyDeltaB = (pfnApplyDeltaB)pfn; + else + return FALSE; + + pfn = GetProcAddress(hModule, "DeltaFree"); + if (pfn) + MsDeltaContext->DeltaFree = (pfnDeltaFree)pfn; + else + return FALSE; + + pfn = GetProcAddress(hModule, "GetDeltaInfoB"); + if (pfn) + MsDeltaContext->GetDeltaInfoB = (pfnGetDeltaInfoB)pfn; + else + return FALSE; + + return TRUE; +} + /* * supInitCabinetDecompressionAPI * diff --git a/Source/sxsexp/sup.h b/Source/sxsexp/sup.h index fb23985..0d2f8a2 100644 --- a/Source/sxsexp/sup.h +++ b/Source/sxsexp/sup.h @@ -4,9 +4,9 @@ * * TITLE: SUP.H * -* VERSION: 1.40 +* VERSION: 1.41 * -* DATE: 19 Jul 2023 +* DATE: 10 Dec 2023 * * Program support routines header file. * @@ -101,6 +101,27 @@ typedef struct _SUP_DECOMPRESSOR { pfnDecompress Decompress; } SUP_DECOMPRESSOR, * PSUP_DECOMPRESSOR; +typedef BOOL (WINAPI* pfnApplyDeltaB)( + _In_ DELTA_FLAG_TYPE ApplyFlags, + _In_ DELTA_INPUT Source, + _In_ DELTA_INPUT Delta, + _Out_ LPDELTA_OUTPUT lpTarget); + +typedef BOOL (WINAPI* pfnDeltaFree)( + _In_ LPVOID lpMemory); + +typedef BOOL (WINAPI* pfnGetDeltaInfoB)( + _In_ DELTA_INPUT Delta, + _Out_ LPDELTA_HEADER_INFO lpHeaderInfo); + +typedef struct _SUP_DELTA_COMPRESSION { + HMODULE hModule; + pfnApplyDeltaB ApplyDeltaB; + pfnDeltaFree DeltaFree; + pfnGetDeltaInfoB GetDeltaInfoB; +} SUP_DELTA_COMPRESSION, * PSUP_DELTA_COMPRESSION; + + // // CONSOLE START // @@ -137,6 +158,11 @@ VOID supConsoleDisplayWin32Error( // // CONSOLE END // +BOOL supInitializeMsDeltaAPI( + _Inout_ PSUP_DELTA_COMPRESSION MsDeltaContext); + +BOOL supInitCabinetDecompressionAPI( + _Inout_ PSUP_DECOMPRESSOR Decompressor); CFILE_TYPE supGetFileType( _In_ PVOID FileBuffer); @@ -155,9 +181,6 @@ VOID supPrintDeltaHeaderInfo( _In_ PSUP_CONSOLE Console, _In_ LPDELTA_HEADER_INFO DeltaHeaderInfo); -BOOL supInitCabinetDecompressionAPI( - _Inout_ PSUP_DECOMPRESSOR Decompressor); - BOOL supMapInputFile( _In_ LPCWSTR FileName, _Out_ PULONG FileSize, diff --git a/Source/sxsexp/sxsexp.vcxproj.user b/Source/sxsexp/sxsexp.vcxproj.user index 821f122..04fdb41 100644 --- a/Source/sxsexp/sxsexp.vcxproj.user +++ b/Source/sxsexp/sxsexp.vcxproj.user @@ -1,8 +1,7 @@  - - + c:\install\file.bin c:\install\file.unpacked WindowsLocalDebugger diff --git a/Source/sxsexp/sxsexpres.rc b/Source/sxsexp/sxsexpres.rc index 0ad2cce0ea3999a40158d1d0f7f1983011cd6d34..970362a99b6cf5ec6a7828dfe20d6fdcf0e89b62 100644 GIT binary patch delta 94 zcmeyS{7ZR51p8zz!9|lh82Ki%a8z*{GUzZEF&Hx#G8j$n5 XAh#fjz~qD6;*;6