diff --git a/MPQDumper/MPQDumper.cpp b/MPQDumper/MPQDumper.cpp new file mode 100644 index 0000000..d034bba --- /dev/null +++ b/MPQDumper/MPQDumper.cpp @@ -0,0 +1,179 @@ +#include "pch.h" +#include +#include +#include +#include +#include "MPQDumper.h" + +#pragma pack(push, 1) +struct MPQHeader { + DWORD magic; // 'MPQ\x1A' + DWORD headerSize; + DWORD archiveSize; + DWORD formatVersion; + DWORD sectorSize; + DWORD hashTableOffset; + DWORD blockTableOffset; + DWORD hashTableEntries; + DWORD blockTableEntries; +}; + +struct MPQHashTableEntry { + DWORD hashA; + DWORD hashB; + WORD locale; + WORD platform; + DWORD blockIndex; +}; + +struct MPQBlockTableEntry { + DWORD fileOffset; + DWORD fileSize; + DWORD compressedSize; + DWORD flags; +}; +#pragma pack(pop) + +unsigned long cryptTable[0x500]; + +void PrepareCryptTable() { + unsigned long seed = 0x00100001, index1 = 0, index2 = 0, i; + + for (index1 = 0; index1 < 0x100; index1++) { + for (index2 = index1, i = 0; i < 5; i++, index2 += 0x100) { + unsigned long temp1, temp2; + + seed = (seed * 125 + 3) % 0x2AAAAB; + temp1 = (seed & 0xFFFF) << 0x10; + + seed = (seed * 125 + 3) % 0x2AAAAB; + temp2 = (seed & 0xFFFF); + + cryptTable[index2] = (temp1 | temp2); + } + } +} + +// 哈希算法 +unsigned long HashString(const char* lpszFileName, unsigned long dwHashType) { + unsigned char* key = (unsigned char*)lpszFileName; + unsigned long seed1 = 0x7FED7FED, seed2 = 0xEEEEEEEE; + int ch; + + while (*key != 0) { + ch = toupper(*key++); + seed1 = cryptTable[(dwHashType << 8) + ch] ^ (seed1 + seed2); + seed2 = ch + seed1 + seed2 + (seed2 << 5) + 3; + } + return seed1; +} + +// 解析 MPQ 文件 +void ParseMPQ(const std::string& mpqPath) { + // 打开 MPQ 文件 + HANDLE hFile = CreateFileA(mpqPath.c_str(), GENERIC_READ, FILE_SHARE_READ, nullptr, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, nullptr); + if (hFile == INVALID_HANDLE_VALUE) { + std::ofstream logFile("C:\\MPQDump\\dll_error.txt", std::ios::app); + if (logFile.is_open()) { + logFile << "无法打开 MPQ 文件!错误代码: " << GetLastError() << std::endl; + logFile.close(); + } + return; + } + + // 读取文件头 + MPQHeader header; + DWORD bytesRead; + if (!ReadFile(hFile, &header, sizeof(header), &bytesRead, nullptr) || bytesRead != sizeof(header)) { + std::ofstream logFile("C:\\MPQDump\\dll_error.txt", std::ios::app); + if (logFile.is_open()) { + logFile << "无法读取 MPQ 文件头!错误代码: " << GetLastError() << std::endl; + logFile.close(); + } + CloseHandle(hFile); + return; + } + + // 检查魔数 + if (header.magic != 0x1A51504D) { // 'MPQ\x1A' + std::ofstream logFile("C:\\MPQDump\\dll_error.txt", std::ios::app); + if (logFile.is_open()) { + logFile << "无效的 MPQ 文件!魔数: " << std::hex << header.magic << std::endl; + logFile.close(); + } + CloseHandle(hFile); + return; + } + + // 读取哈希表 + std::vector hashTable(header.hashTableEntries); + SetFilePointer(hFile, header.hashTableOffset, nullptr, FILE_BEGIN); + if (!ReadFile(hFile, hashTable.data(), header.hashTableEntries * sizeof(MPQHashTableEntry), &bytesRead, nullptr)) { + std::ofstream logFile("C:\\MPQDump\\dll_error.txt", std::ios::app); + if (logFile.is_open()) { + logFile << "无法读取哈希表!错误代码: " << GetLastError() << std::endl; + logFile.close(); + } + CloseHandle(hFile); + return; + } + + // 读取块表 + std::vector blockTable(header.blockTableEntries); + SetFilePointer(hFile, header.blockTableOffset, nullptr, FILE_BEGIN); + if (!ReadFile(hFile, blockTable.data(), header.blockTableEntries * sizeof(MPQBlockTableEntry), &bytesRead, nullptr)) { + std::ofstream logFile("C:\\MPQDump\\dll_error.txt", std::ios::app); + if (logFile.is_open()) { + logFile << "无法读取块表!错误代码: " << GetLastError() << std::endl; + logFile.close(); + } + CloseHandle(hFile); + return; + } + + // 创建输出文件 + std::ofstream mpqFile("C:\\MPQDump\\mpq_paths.txt"); + if (!mpqFile.is_open()) { + std::ofstream logFile("C:\\MPQDump\\dll_error.txt", std::ios::app); + if (logFile.is_open()) { + logFile << "无法创建输出文件!" << std::endl; + logFile.close(); + } + CloseHandle(hFile); + return; + } + + // 遍历哈希表 + for (DWORD i = 0; i < header.hashTableEntries; i++) { + if (hashTable[i].blockIndex != 0xFFFFFFFF) { // 有效的文件条目 + mpqFile << "Entry " << i << ": HashA=" << std::hex << hashTable[i].hashA + << ", HashB=" << hashTable[i].hashB + << ", BlockIndex=" << hashTable[i].blockIndex << std::endl; + } + } + + // 关闭文件 + CloseHandle(hFile); + mpqFile.close(); + + std::ofstream logFile("C:\\MPQDump\\dll_success.txt", std::ios::app); + if (logFile.is_open()) { + logFile << "MPQ 文件解析完成,结果已保存到 C:\\MPQDump\\mpq_paths.txt" << std::endl; + logFile.close(); + } +} + +// 线程函数:解析 MPQ 文件 +DWORD WINAPI DumpMPQPaths(LPVOID lpParam) { + // 写入日志 + std::ofstream logFile("C:\\MPQDump\\dll_thread.txt", std::ios::app); + if (logFile.is_open()) { + logFile << "DumpMPQPaths 线程已启动" << std::endl; + logFile.close(); + } + + PrepareCryptTable(); + + ParseMPQ("D:\\wow_cn_3.3.5\\Data\\patch-3.mpq");//MPQ路径 + return 0; +} \ No newline at end of file diff --git a/MPQDumper/MPQDumper.h b/MPQDumper/MPQDumper.h new file mode 100644 index 0000000..0a695e7 --- /dev/null +++ b/MPQDumper/MPQDumper.h @@ -0,0 +1,13 @@ +#pragma once +#include + +#ifdef __cplusplus +extern "C" { +#endif + + // 导出函数 + __declspec(dllexport) DWORD WINAPI DumpMPQPaths(LPVOID lpParam); + +#ifdef __cplusplus +} +#endif \ No newline at end of file diff --git a/MPQDumper/MPQDumper.sln b/MPQDumper/MPQDumper.sln new file mode 100644 index 0000000..3ea64ae --- /dev/null +++ b/MPQDumper/MPQDumper.sln @@ -0,0 +1,28 @@ +锘 +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.12.35527.113 d17.12 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MPQDumper", "MPQDumper.vcxproj", "{A9ADDF85-D1B5-4002-8765-FE6E728F103D}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {A9ADDF85-D1B5-4002-8765-FE6E728F103D}.Debug|x64.ActiveCfg = Debug|x64 + {A9ADDF85-D1B5-4002-8765-FE6E728F103D}.Debug|x64.Build.0 = Debug|x64 + {A9ADDF85-D1B5-4002-8765-FE6E728F103D}.Debug|x86.ActiveCfg = Debug|Win32 + {A9ADDF85-D1B5-4002-8765-FE6E728F103D}.Debug|x86.Build.0 = Debug|Win32 + {A9ADDF85-D1B5-4002-8765-FE6E728F103D}.Release|x64.ActiveCfg = Release|x64 + {A9ADDF85-D1B5-4002-8765-FE6E728F103D}.Release|x64.Build.0 = Release|x64 + {A9ADDF85-D1B5-4002-8765-FE6E728F103D}.Release|x86.ActiveCfg = Release|Win32 + {A9ADDF85-D1B5-4002-8765-FE6E728F103D}.Release|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/MPQDumper/MPQDumper.vcxproj b/MPQDumper/MPQDumper.vcxproj new file mode 100644 index 0000000..1785e6a --- /dev/null +++ b/MPQDumper/MPQDumper.vcxproj @@ -0,0 +1,159 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 17.0 + Win32Proj + {a9addf85-d1b5-4002-8765-fe6e728f103d} + MPQDumper + 10.0 + + + + DynamicLibrary + true + v143 + Unicode + + + DynamicLibrary + false + v143 + true + Unicode + + + DynamicLibrary + true + v143 + Unicode + + + DynamicLibrary + false + v143 + true + Unicode + + + + + + + + + + + + + + + + + + + + + + Level3 + true + WIN32;_DEBUG;MPQDUMPER_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + true + Use + pch.h + + + Windows + true + false + + + + + Level3 + true + true + true + WIN32;NDEBUG;MPQDUMPER_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + true + Use + pch.h + + + Windows + true + true + true + false + + + + + Level3 + true + _DEBUG;MPQDUMPER_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + true + Use + pch.h + + + Windows + true + false + + + + + Level3 + true + true + true + NDEBUG;MPQDUMPER_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + true + Use + pch.h + + + Windows + true + true + true + false + + + + + + + + + + + + Create + Create + Create + Create + + + + + + \ No newline at end of file diff --git a/MPQDumper/MPQDumper.vcxproj.filters b/MPQDumper/MPQDumper.vcxproj.filters new file mode 100644 index 0000000..3a48f26 --- /dev/null +++ b/MPQDumper/MPQDumper.vcxproj.filters @@ -0,0 +1,39 @@ +锘 + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + 澶存枃浠 + + + 澶存枃浠 + + + 澶存枃浠 + + + + + 婧愭枃浠 + + + 婧愭枃浠 + + + 婧愭枃浠 + + + \ No newline at end of file diff --git a/MPQDumper/MPQDumper.vcxproj.user b/MPQDumper/MPQDumper.vcxproj.user new file mode 100644 index 0000000..88a5509 --- /dev/null +++ b/MPQDumper/MPQDumper.vcxproj.user @@ -0,0 +1,4 @@ +锘 + + + \ No newline at end of file diff --git a/MPQDumper/MPQDumper/Release/MPQDumper.Build.CppClean.log b/MPQDumper/MPQDumper/Release/MPQDumper.Build.CppClean.log new file mode 100644 index 0000000..07ddb4c --- /dev/null +++ b/MPQDumper/MPQDumper/Release/MPQDumper.Build.CppClean.log @@ -0,0 +1,19 @@ +d:\sm_az\tool\mpqdumper\mpqdumper\mpqdumper\release\mpqdumper.pch +d:\sm_az\tool\mpqdumper\mpqdumper\mpqdumper\release\vc143.pdb +d:\sm_az\tool\mpqdumper\mpqdumper\mpqdumper\release\pch.obj +d:\sm_az\tool\mpqdumper\mpqdumper\mpqdumper\release\mpqdumper.obj +d:\sm_az\tool\mpqdumper\mpqdumper\mpqdumper\release\dllmain.obj +d:\sm_az\tool\mpqdumper\mpqdumper\release\mpqdumper.dll +d:\sm_az\tool\mpqdumper\mpqdumper\release\mpqdumper.pdb +d:\sm_az\tool\mpqdumper\mpqdumper\release\mpqdumper.lib +d:\sm_az\tool\mpqdumper\mpqdumper\release\mpqdumper.exp +d:\sm_az\tool\mpqdumper\mpqdumper\mpqdumper\release\mpqdumper.ipdb +d:\sm_az\tool\mpqdumper\mpqdumper\mpqdumper\release\mpqdumper.iobj +d:\sm_az\tool\mpqdumper\mpqdumper\mpqdumper\release\mpqdumper.tlog\cl.command.1.tlog +d:\sm_az\tool\mpqdumper\mpqdumper\mpqdumper\release\mpqdumper.tlog\cl.items.tlog +d:\sm_az\tool\mpqdumper\mpqdumper\mpqdumper\release\mpqdumper.tlog\cl.read.1.tlog +d:\sm_az\tool\mpqdumper\mpqdumper\mpqdumper\release\mpqdumper.tlog\cl.write.1.tlog +d:\sm_az\tool\mpqdumper\mpqdumper\mpqdumper\release\mpqdumper.tlog\link.command.1.tlog +d:\sm_az\tool\mpqdumper\mpqdumper\mpqdumper\release\mpqdumper.tlog\link.read.1.tlog +d:\sm_az\tool\mpqdumper\mpqdumper\mpqdumper\release\mpqdumper.tlog\link.secondary.1.tlog +d:\sm_az\tool\mpqdumper\mpqdumper\mpqdumper\release\mpqdumper.tlog\link.write.1.tlog diff --git a/MPQDumper/MPQDumper/Release/MPQDumper.dll.recipe b/MPQDumper/MPQDumper/Release/MPQDumper.dll.recipe new file mode 100644 index 0000000..25ae360 --- /dev/null +++ b/MPQDumper/MPQDumper/Release/MPQDumper.dll.recipe @@ -0,0 +1,11 @@ +锘 + + + + D:\sm_az\Tool\MPQDumper\MPQDumper\Release\MPQDumper.dll + + + + + + \ No newline at end of file diff --git a/MPQDumper/MPQDumper/Release/MPQDumper.iobj b/MPQDumper/MPQDumper/Release/MPQDumper.iobj new file mode 100644 index 0000000..cdc0e52 Binary files /dev/null and b/MPQDumper/MPQDumper/Release/MPQDumper.iobj differ diff --git a/MPQDumper/MPQDumper/Release/MPQDumper.ipdb b/MPQDumper/MPQDumper/Release/MPQDumper.ipdb new file mode 100644 index 0000000..7e68af1 Binary files /dev/null and b/MPQDumper/MPQDumper/Release/MPQDumper.ipdb differ diff --git a/MPQDumper/MPQDumper/Release/MPQDumper.log b/MPQDumper/MPQDumper/Release/MPQDumper.log new file mode 100644 index 0000000..31b1e58 --- /dev/null +++ b/MPQDumper/MPQDumper/Release/MPQDumper.log @@ -0,0 +1,9 @@ +锘 pch.cpp + dllmain.cpp + MPQDumper.cpp + 姝e湪鍒涘缓搴 D:\sm_az\Tool\MPQDumper\MPQDumper\Release\MPQDumper.lib 鍜屽璞 D:\sm_az\Tool\MPQDumper\MPQDumper\Release\MPQDumper.exp + 姝e湪鐢熸垚浠g爜 + Previous IPDB not found, fall back to full compilation. + All 226 functions were compiled because no usable IPDB/IOBJ from previous compilation was found. + 宸插畬鎴愪唬鐮佺殑鐢熸垚 + MPQDumper.vcxproj -> D:\sm_az\Tool\MPQDumper\MPQDumper\Release\MPQDumper.dll diff --git a/MPQDumper/MPQDumper/Release/MPQDumper.obj b/MPQDumper/MPQDumper/Release/MPQDumper.obj new file mode 100644 index 0000000..5b89a9d Binary files /dev/null and b/MPQDumper/MPQDumper/Release/MPQDumper.obj differ diff --git a/MPQDumper/MPQDumper/Release/MPQDumper.pch b/MPQDumper/MPQDumper/Release/MPQDumper.pch new file mode 100644 index 0000000..673272f Binary files /dev/null and b/MPQDumper/MPQDumper/Release/MPQDumper.pch differ diff --git a/MPQDumper/MPQDumper/Release/MPQDumper.tlog/CL.command.1.tlog b/MPQDumper/MPQDumper/Release/MPQDumper.tlog/CL.command.1.tlog new file mode 100644 index 0000000..3b77679 Binary files /dev/null and b/MPQDumper/MPQDumper/Release/MPQDumper.tlog/CL.command.1.tlog differ diff --git a/MPQDumper/MPQDumper/Release/MPQDumper.tlog/CL.read.1.tlog b/MPQDumper/MPQDumper/Release/MPQDumper.tlog/CL.read.1.tlog new file mode 100644 index 0000000..61432a8 Binary files /dev/null and b/MPQDumper/MPQDumper/Release/MPQDumper.tlog/CL.read.1.tlog differ diff --git a/MPQDumper/MPQDumper/Release/MPQDumper.tlog/CL.write.1.tlog b/MPQDumper/MPQDumper/Release/MPQDumper.tlog/CL.write.1.tlog new file mode 100644 index 0000000..2f08c96 Binary files /dev/null and b/MPQDumper/MPQDumper/Release/MPQDumper.tlog/CL.write.1.tlog differ diff --git a/MPQDumper/MPQDumper/Release/MPQDumper.tlog/Cl.items.tlog b/MPQDumper/MPQDumper/Release/MPQDumper.tlog/Cl.items.tlog new file mode 100644 index 0000000..8a29ee7 --- /dev/null +++ b/MPQDumper/MPQDumper/Release/MPQDumper.tlog/Cl.items.tlog @@ -0,0 +1,3 @@ +D:\sm_az\Tool\MPQDumper\MPQDumper\dllmain.cpp;D:\sm_az\Tool\MPQDumper\MPQDumper\MPQDumper\Release\dllmain.obj +D:\sm_az\Tool\MPQDumper\MPQDumper\MPQDumper.cpp;D:\sm_az\Tool\MPQDumper\MPQDumper\MPQDumper\Release\MPQDumper.obj +D:\sm_az\Tool\MPQDumper\MPQDumper\pch.cpp;D:\sm_az\Tool\MPQDumper\MPQDumper\MPQDumper\Release\pch.obj diff --git a/MPQDumper/MPQDumper/Release/MPQDumper.tlog/MPQDumper.lastbuildstate b/MPQDumper/MPQDumper/Release/MPQDumper.tlog/MPQDumper.lastbuildstate new file mode 100644 index 0000000..3e6fafe --- /dev/null +++ b/MPQDumper/MPQDumper/Release/MPQDumper.tlog/MPQDumper.lastbuildstate @@ -0,0 +1,2 @@ +PlatformToolSet=v143:VCToolArchitecture=Native32Bit:VCToolsVersion=14.42.34433:TargetPlatformVersion=10.0.26100.0: +Release|Win32|D:\sm_az\Tool\MPQDumper\MPQDumper\| diff --git a/MPQDumper/MPQDumper/Release/MPQDumper.tlog/link.command.1.tlog b/MPQDumper/MPQDumper/Release/MPQDumper.tlog/link.command.1.tlog new file mode 100644 index 0000000..55cdd90 Binary files /dev/null and b/MPQDumper/MPQDumper/Release/MPQDumper.tlog/link.command.1.tlog differ diff --git a/MPQDumper/MPQDumper/Release/MPQDumper.tlog/link.read.1.tlog b/MPQDumper/MPQDumper/Release/MPQDumper.tlog/link.read.1.tlog new file mode 100644 index 0000000..1bfe4ed Binary files /dev/null and b/MPQDumper/MPQDumper/Release/MPQDumper.tlog/link.read.1.tlog differ diff --git a/MPQDumper/MPQDumper/Release/MPQDumper.tlog/link.secondary.1.tlog b/MPQDumper/MPQDumper/Release/MPQDumper.tlog/link.secondary.1.tlog new file mode 100644 index 0000000..e240dc5 --- /dev/null +++ b/MPQDumper/MPQDumper/Release/MPQDumper.tlog/link.secondary.1.tlog @@ -0,0 +1,5 @@ +^D:\SM_AZ\TOOL\MPQDUMPER\MPQDUMPER\MPQDUMPER\RELEASE\DLLMAIN.OBJ|D:\SM_AZ\TOOL\MPQDUMPER\MPQDUMPER\MPQDUMPER\RELEASE\MPQDUMPER.OBJ|D:\SM_AZ\TOOL\MPQDUMPER\MPQDUMPER\MPQDUMPER\RELEASE\PCH.OBJ +D:\sm_az\Tool\MPQDumper\MPQDumper\Release\MPQDumper.lib +D:\sm_az\Tool\MPQDumper\MPQDumper\Release\MPQDumper.EXP +D:\sm_az\Tool\MPQDumper\MPQDumper\MPQDumper\Release\MPQDumper.IPDB +D:\sm_az\Tool\MPQDumper\MPQDumper\MPQDumper\Release\MPQDumper.iobj diff --git a/MPQDumper/MPQDumper/Release/MPQDumper.tlog/link.write.1.tlog b/MPQDumper/MPQDumper/Release/MPQDumper.tlog/link.write.1.tlog new file mode 100644 index 0000000..4d7bf80 Binary files /dev/null and b/MPQDumper/MPQDumper/Release/MPQDumper.tlog/link.write.1.tlog differ diff --git a/MPQDumper/MPQDumper/Release/MPQDumper.vcxproj.FileListAbsolute.txt b/MPQDumper/MPQDumper/Release/MPQDumper.vcxproj.FileListAbsolute.txt new file mode 100644 index 0000000..e69de29 diff --git a/MPQDumper/MPQDumper/Release/dllmain.obj b/MPQDumper/MPQDumper/Release/dllmain.obj new file mode 100644 index 0000000..6bc7105 Binary files /dev/null and b/MPQDumper/MPQDumper/Release/dllmain.obj differ diff --git a/MPQDumper/MPQDumper/Release/pch.obj b/MPQDumper/MPQDumper/Release/pch.obj new file mode 100644 index 0000000..6f273f8 Binary files /dev/null and b/MPQDumper/MPQDumper/Release/pch.obj differ diff --git a/MPQDumper/MPQDumper/Release/vc143.pdb b/MPQDumper/MPQDumper/Release/vc143.pdb new file mode 100644 index 0000000..a1f10a0 Binary files /dev/null and b/MPQDumper/MPQDumper/Release/vc143.pdb differ diff --git a/MPQDumper/MPQDumper/x64/Release/MPQDumper.Build.CppClean.log b/MPQDumper/MPQDumper/x64/Release/MPQDumper.Build.CppClean.log new file mode 100644 index 0000000..6baf87b --- /dev/null +++ b/MPQDumper/MPQDumper/x64/Release/MPQDumper.Build.CppClean.log @@ -0,0 +1,19 @@ +d:\sm_az\tool\mpqdumper\mpqdumper\mpqdumper\x64\release\mpqdumper.pch +d:\sm_az\tool\mpqdumper\mpqdumper\mpqdumper\x64\release\vc143.pdb +d:\sm_az\tool\mpqdumper\mpqdumper\mpqdumper\x64\release\pch.obj +d:\sm_az\tool\mpqdumper\mpqdumper\mpqdumper\x64\release\mpqdumper.obj +d:\sm_az\tool\mpqdumper\mpqdumper\mpqdumper\x64\release\dllmain.obj +d:\sm_az\tool\mpqdumper\mpqdumper\x64\release\mpqdumper.dll +d:\sm_az\tool\mpqdumper\mpqdumper\x64\release\mpqdumper.pdb +d:\sm_az\tool\mpqdumper\mpqdumper\x64\release\mpqdumper.lib +d:\sm_az\tool\mpqdumper\mpqdumper\x64\release\mpqdumper.exp +d:\sm_az\tool\mpqdumper\mpqdumper\mpqdumper\x64\release\mpqdumper.ipdb +d:\sm_az\tool\mpqdumper\mpqdumper\mpqdumper\x64\release\mpqdumper.iobj +d:\sm_az\tool\mpqdumper\mpqdumper\mpqdumper\x64\release\mpqdumper.tlog\cl.command.1.tlog +d:\sm_az\tool\mpqdumper\mpqdumper\mpqdumper\x64\release\mpqdumper.tlog\cl.items.tlog +d:\sm_az\tool\mpqdumper\mpqdumper\mpqdumper\x64\release\mpqdumper.tlog\cl.read.1.tlog +d:\sm_az\tool\mpqdumper\mpqdumper\mpqdumper\x64\release\mpqdumper.tlog\cl.write.1.tlog +d:\sm_az\tool\mpqdumper\mpqdumper\mpqdumper\x64\release\mpqdumper.tlog\link.command.1.tlog +d:\sm_az\tool\mpqdumper\mpqdumper\mpqdumper\x64\release\mpqdumper.tlog\link.read.1.tlog +d:\sm_az\tool\mpqdumper\mpqdumper\mpqdumper\x64\release\mpqdumper.tlog\link.secondary.1.tlog +d:\sm_az\tool\mpqdumper\mpqdumper\mpqdumper\x64\release\mpqdumper.tlog\link.write.1.tlog diff --git a/MPQDumper/MPQDumper/x64/Release/MPQDumper.dll.recipe b/MPQDumper/MPQDumper/x64/Release/MPQDumper.dll.recipe new file mode 100644 index 0000000..1cf0a6e --- /dev/null +++ b/MPQDumper/MPQDumper/x64/Release/MPQDumper.dll.recipe @@ -0,0 +1,11 @@ +锘 + + + + D:\sm_az\Tool\MPQDumper\MPQDumper\x64\Release\MPQDumper.dll + + + + + + \ No newline at end of file diff --git a/MPQDumper/MPQDumper/x64/Release/MPQDumper.iobj b/MPQDumper/MPQDumper/x64/Release/MPQDumper.iobj new file mode 100644 index 0000000..1d4fe21 Binary files /dev/null and b/MPQDumper/MPQDumper/x64/Release/MPQDumper.iobj differ diff --git a/MPQDumper/MPQDumper/x64/Release/MPQDumper.ipdb b/MPQDumper/MPQDumper/x64/Release/MPQDumper.ipdb new file mode 100644 index 0000000..cadcd0a Binary files /dev/null and b/MPQDumper/MPQDumper/x64/Release/MPQDumper.ipdb differ diff --git a/MPQDumper/MPQDumper/x64/Release/MPQDumper.log b/MPQDumper/MPQDumper/x64/Release/MPQDumper.log new file mode 100644 index 0000000..36cd2e4 --- /dev/null +++ b/MPQDumper/MPQDumper/x64/Release/MPQDumper.log @@ -0,0 +1,21 @@ +锘 pch.cpp + dllmain.cpp + MPQDumper.cpp +D:\sm_az\Tool\MPQDumper\MPQDumper\MPQDumper.cpp(34,28): warning C4311: 鈥渞einterpret_cast鈥: 浠庘淧BYTE鈥濆埌鈥淒WORD鈥濈殑鎸囬拡鎴柇 + (缂栬瘧婧愭枃浠垛/MPQDumper.cpp鈥) + +D:\sm_az\Tool\MPQDumper\MPQDumper\MPQDumper.cpp(34,28): warning C4302: 鈥渞einterpret_cast鈥: 浠庘淧BYTE鈥濆埌鈥淒WORD鈥濇埅鏂 + (缂栬瘧婧愭枃浠垛/MPQDumper.cpp鈥) + +D:\sm_az\Tool\MPQDumper\MPQDumper\MPQDumper.cpp(56,45): warning C4311: 鈥渞einterpret_cast鈥: 浠庘淧VOID鈥濆埌鈥淒WORD鈥濈殑鎸囬拡鎴柇 + (缂栬瘧婧愭枃浠垛/MPQDumper.cpp鈥) + +D:\sm_az\Tool\MPQDumper\MPQDumper\MPQDumper.cpp(56,45): warning C4302: 鈥渞einterpret_cast鈥: 浠庘淧VOID鈥濆埌鈥淒WORD鈥濇埅鏂 + (缂栬瘧婧愭枃浠垛/MPQDumper.cpp鈥) + + 姝e湪鍒涘缓搴 D:\sm_az\Tool\MPQDumper\MPQDumper\x64\Release\MPQDumper.lib 鍜屽璞 D:\sm_az\Tool\MPQDumper\MPQDumper\x64\Release\MPQDumper.exp + 姝e湪鐢熸垚浠g爜 + Previous IPDB not found, fall back to full compilation. + All 149 functions were compiled because no usable IPDB/IOBJ from previous compilation was found. + 宸插畬鎴愪唬鐮佺殑鐢熸垚 + MPQDumper.vcxproj -> D:\sm_az\Tool\MPQDumper\MPQDumper\x64\Release\MPQDumper.dll diff --git a/MPQDumper/MPQDumper/x64/Release/MPQDumper.obj b/MPQDumper/MPQDumper/x64/Release/MPQDumper.obj new file mode 100644 index 0000000..788f596 Binary files /dev/null and b/MPQDumper/MPQDumper/x64/Release/MPQDumper.obj differ diff --git a/MPQDumper/MPQDumper/x64/Release/MPQDumper.pch b/MPQDumper/MPQDumper/x64/Release/MPQDumper.pch new file mode 100644 index 0000000..7b5edd4 Binary files /dev/null and b/MPQDumper/MPQDumper/x64/Release/MPQDumper.pch differ diff --git a/MPQDumper/MPQDumper/x64/Release/MPQDumper.tlog/CL.command.1.tlog b/MPQDumper/MPQDumper/x64/Release/MPQDumper.tlog/CL.command.1.tlog new file mode 100644 index 0000000..81b3954 Binary files /dev/null and b/MPQDumper/MPQDumper/x64/Release/MPQDumper.tlog/CL.command.1.tlog differ diff --git a/MPQDumper/MPQDumper/x64/Release/MPQDumper.tlog/CL.read.1.tlog b/MPQDumper/MPQDumper/x64/Release/MPQDumper.tlog/CL.read.1.tlog new file mode 100644 index 0000000..991c32e Binary files /dev/null and b/MPQDumper/MPQDumper/x64/Release/MPQDumper.tlog/CL.read.1.tlog differ diff --git a/MPQDumper/MPQDumper/x64/Release/MPQDumper.tlog/CL.write.1.tlog b/MPQDumper/MPQDumper/x64/Release/MPQDumper.tlog/CL.write.1.tlog new file mode 100644 index 0000000..fa39096 Binary files /dev/null and b/MPQDumper/MPQDumper/x64/Release/MPQDumper.tlog/CL.write.1.tlog differ diff --git a/MPQDumper/MPQDumper/x64/Release/MPQDumper.tlog/Cl.items.tlog b/MPQDumper/MPQDumper/x64/Release/MPQDumper.tlog/Cl.items.tlog new file mode 100644 index 0000000..44dde60 --- /dev/null +++ b/MPQDumper/MPQDumper/x64/Release/MPQDumper.tlog/Cl.items.tlog @@ -0,0 +1,3 @@ +D:\sm_az\Tool\MPQDumper\MPQDumper\dllmain.cpp;D:\sm_az\Tool\MPQDumper\MPQDumper\MPQDumper\x64\Release\dllmain.obj +D:\sm_az\Tool\MPQDumper\MPQDumper\MPQDumper.cpp;D:\sm_az\Tool\MPQDumper\MPQDumper\MPQDumper\x64\Release\MPQDumper.obj +D:\sm_az\Tool\MPQDumper\MPQDumper\pch.cpp;D:\sm_az\Tool\MPQDumper\MPQDumper\MPQDumper\x64\Release\pch.obj diff --git a/MPQDumper/MPQDumper/x64/Release/MPQDumper.tlog/MPQDumper.lastbuildstate b/MPQDumper/MPQDumper/x64/Release/MPQDumper.tlog/MPQDumper.lastbuildstate new file mode 100644 index 0000000..4ee6500 --- /dev/null +++ b/MPQDumper/MPQDumper/x64/Release/MPQDumper.tlog/MPQDumper.lastbuildstate @@ -0,0 +1,2 @@ +PlatformToolSet=v143:VCToolArchitecture=Native64Bit:VCToolsVersion=14.42.34433:TargetPlatformVersion=10.0.26100.0: +Release|x64|D:\sm_az\Tool\MPQDumper\MPQDumper\| diff --git a/MPQDumper/MPQDumper/x64/Release/MPQDumper.tlog/link.command.1.tlog b/MPQDumper/MPQDumper/x64/Release/MPQDumper.tlog/link.command.1.tlog new file mode 100644 index 0000000..cd3ea61 Binary files /dev/null and b/MPQDumper/MPQDumper/x64/Release/MPQDumper.tlog/link.command.1.tlog differ diff --git a/MPQDumper/MPQDumper/x64/Release/MPQDumper.tlog/link.read.1.tlog b/MPQDumper/MPQDumper/x64/Release/MPQDumper.tlog/link.read.1.tlog new file mode 100644 index 0000000..126db6c Binary files /dev/null and b/MPQDumper/MPQDumper/x64/Release/MPQDumper.tlog/link.read.1.tlog differ diff --git a/MPQDumper/MPQDumper/x64/Release/MPQDumper.tlog/link.secondary.1.tlog b/MPQDumper/MPQDumper/x64/Release/MPQDumper.tlog/link.secondary.1.tlog new file mode 100644 index 0000000..841d156 --- /dev/null +++ b/MPQDumper/MPQDumper/x64/Release/MPQDumper.tlog/link.secondary.1.tlog @@ -0,0 +1,5 @@ +^D:\SM_AZ\TOOL\MPQDUMPER\MPQDUMPER\MPQDUMPER\X64\RELEASE\DLLMAIN.OBJ|D:\SM_AZ\TOOL\MPQDUMPER\MPQDUMPER\MPQDUMPER\X64\RELEASE\MPQDUMPER.OBJ|D:\SM_AZ\TOOL\MPQDUMPER\MPQDUMPER\MPQDUMPER\X64\RELEASE\PCH.OBJ +D:\sm_az\Tool\MPQDumper\MPQDumper\x64\Release\MPQDumper.lib +D:\sm_az\Tool\MPQDumper\MPQDumper\x64\Release\MPQDumper.EXP +D:\sm_az\Tool\MPQDumper\MPQDumper\MPQDumper\x64\Release\MPQDumper.IPDB +D:\sm_az\Tool\MPQDumper\MPQDumper\MPQDumper\x64\Release\MPQDumper.iobj diff --git a/MPQDumper/MPQDumper/x64/Release/MPQDumper.tlog/link.write.1.tlog b/MPQDumper/MPQDumper/x64/Release/MPQDumper.tlog/link.write.1.tlog new file mode 100644 index 0000000..d4d8ad2 Binary files /dev/null and b/MPQDumper/MPQDumper/x64/Release/MPQDumper.tlog/link.write.1.tlog differ diff --git a/MPQDumper/MPQDumper/x64/Release/MPQDumper.vcxproj.FileListAbsolute.txt b/MPQDumper/MPQDumper/x64/Release/MPQDumper.vcxproj.FileListAbsolute.txt new file mode 100644 index 0000000..e69de29 diff --git a/MPQDumper/MPQDumper/x64/Release/dllmain.obj b/MPQDumper/MPQDumper/x64/Release/dllmain.obj new file mode 100644 index 0000000..eb283b1 Binary files /dev/null and b/MPQDumper/MPQDumper/x64/Release/dllmain.obj differ diff --git a/MPQDumper/MPQDumper/x64/Release/pch.obj b/MPQDumper/MPQDumper/x64/Release/pch.obj new file mode 100644 index 0000000..7a5ec7e Binary files /dev/null and b/MPQDumper/MPQDumper/x64/Release/pch.obj differ diff --git a/MPQDumper/MPQDumper/x64/Release/vc143.pdb b/MPQDumper/MPQDumper/x64/Release/vc143.pdb new file mode 100644 index 0000000..0ca8131 Binary files /dev/null and b/MPQDumper/MPQDumper/x64/Release/vc143.pdb differ diff --git a/MPQDumper/dllmain.cpp b/MPQDumper/dllmain.cpp new file mode 100644 index 0000000..371ec85 --- /dev/null +++ b/MPQDumper/dllmain.cpp @@ -0,0 +1,24 @@ +锘#include "pch.h" +#include +#include "MPQDumper.h" +#include + +// DLL 鍏ュ彛鐐 +BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) { + if (ul_reason_for_call == DLL_PROCESS_ATTACH) { + // 鍒涘缓鐩綍 + CreateDirectoryA("C:\\MPQDump", NULL); + + // 鍐欏叆鏃ュ織 + std::ofstream logFile("C:\\MPQDump\\dll_load.txt"); + if (logFile.is_open()) { + logFile << "DLL宸插姞杞" << std::endl; + logFile.close(); + } + + // 寤惰繜鍒涘缓绾跨▼锛岄伩鍏岲LL鍔犺浇鏃剁殑绾跨▼瀹夊叏闂 + Sleep(5000); // 寤惰繜5绉掞紝纭繚娓告垙瀹屽叏鍔犺浇 + CreateThread(NULL, 0, DumpMPQPaths, NULL, 0, NULL); + } + return TRUE; +} \ No newline at end of file diff --git a/MPQDumper/framework.h b/MPQDumper/framework.h new file mode 100644 index 0000000..80cbbc9 --- /dev/null +++ b/MPQDumper/framework.h @@ -0,0 +1,5 @@ +锘#pragma once + +#define WIN32_LEAN_AND_MEAN // 浠 Windows 澶存枃浠朵腑鎺掗櫎鏋佸皯浣跨敤鐨勫唴瀹 +// Windows 澶存枃浠 +#include diff --git a/MPQDumper/pch.cpp b/MPQDumper/pch.cpp new file mode 100644 index 0000000..b6fb8f4 --- /dev/null +++ b/MPQDumper/pch.cpp @@ -0,0 +1,5 @@ +锘// pch.cpp: 涓庨缂栬瘧鏍囧ご瀵瑰簲鐨勬簮鏂囦欢 + +#include "pch.h" + +// 褰撲娇鐢ㄩ缂栬瘧鐨勫ご鏃讹紝闇瑕佷娇鐢ㄦ婧愭枃浠讹紝缂栬瘧鎵嶈兘鎴愬姛銆 diff --git a/MPQDumper/pch.h b/MPQDumper/pch.h new file mode 100644 index 0000000..9660927 --- /dev/null +++ b/MPQDumper/pch.h @@ -0,0 +1,13 @@ +锘// pch.h: 杩欐槸棰勭紪璇戞爣澶存枃浠躲 +// 涓嬫柟鍒楀嚭鐨勬枃浠朵粎缂栬瘧涓娆★紝鎻愰珮浜嗗皢鏉ョ敓鎴愮殑鐢熸垚鎬ц兘銆 +// 杩欒繕灏嗗奖鍝 IntelliSense 鎬ц兘锛屽寘鎷唬鐮佸畬鎴愬拰璁稿浠g爜娴忚鍔熻兘銆 +// 浣嗘槸锛屽鏋滄澶勫垪鍑虹殑鏂囦欢涓殑浠讳綍涓涓湪鐢熸垚涔嬮棿鏈夋洿鏂帮紝瀹冧滑鍏ㄩ儴閮藉皢琚噸鏂扮紪璇戙 +// 璇峰嬁鍦ㄦ澶勬坊鍔犺棰戠箒鏇存柊鐨勬枃浠讹紝杩欏皢浣垮緱鎬ц兘浼樺娍鏃犳晥銆 + +#ifndef PCH_H +#define PCH_H + +// 娣诲姞瑕佸湪姝ゅ棰勭紪璇戠殑鏍囧ご +#include "framework.h" + +#endif //PCH_H