🤬
  • 新增runpe功能,验证hook dll是否被加载

  • Loading...
  • maoku committed 2 months ago
    a0d41fa9
    1 parent 82f1ce4e
  • ■ ■ ■ ■ ■ ■
    .gitignore
    skipped 4 lines
    5 5  /SearchAvailableExe/Release
    6 6  /x64
    7 7  /SearchAvailableExe/x64
     8 +/TestLoad/Debug
     9 +/TestLoad/Release
     10 +/TestLoad/x64
    8 11   
  • ■ ■ ■ ■ ■ ■
    SearchAvailableExe/SearchAvailableExe.cpp
    skipped 103 lines
    104 104   printf(" -o,--output: <path> Output file to save dll info. Default is output command.\n");
    105 105   printf(" -i,--input: <path> Input search path. Default traverse all disks.\n");
    106 106   printf(" -w,--write: <bool> Whether to only output information about directories with write permissions, with the default value being 'no'.\n");
    107  - printf(" -c,--count: <count> Controls the output of the number of DLLs loaded by white programs, only outputting if the count is less than or equal to a specified value. The default value is 5.\n");
     107 + printf(" -c,--count: <count> Controls the output of the number of DLLs loaded by white programs, only outputting if the count is less than or equal to a specified value. The default value is 1.\n");
    108 108   printf(" -b,--bit: <count> Select the output bitness, supporting 32, 64, and 96 bits. The default is 96 bits, while also outputting information for 32 and 64-bit white programs.\n");
    109 109   exit(0);
    110 110  }
    skipped 2 lines
    113 113  
    114 114   memset(&c, 0, sizeof(c));
    115 115  
    116  - c.dllCount = 5;
     116 + c.dllCount = 1;
    117 117   c.bit = 96;
    118 118   
    119 119   get_opt(argc, argv, OPT_TYPE_NONE, NULL, "h;?", "help", usage);
    skipped 28 lines
    148 148   sort(results.begin(), results.end(), compare);
    149 149   
    150 150   results.erase(std::remove_if(results.begin(), results.end(), isUnwanted), results.end());
     151 + 
     152 + //运行目标程序,判断是否会加载hook的dll
     153 + RunPE();
    151 154   
    152 155   for (const auto& result : results) {
    153 156   *output << result->filePath << endl;
    skipped 32 lines
  • ■ ■ ■ ■ ■
    SearchAvailableExe/Tools.cpp
    1 1  #include "Tools.h"
    2 2   
    3 3  extern vector<PResultInfo> results;
    4  -std::unordered_map<std::string, std::wstring> md5Map;
     4 +extern ARG_CONFIG c;
    5 5  std::mutex mtx;
    6 6   
    7  -std::string calculateMD5(BYTE* buffer, DWORD bytesRead) {
    8  - std::string md5;
    9  - 
    10  - // 初始化加密API
    11  - HCRYPTPROV hProv = 0;
    12  - if (!CryptAcquireContext(&hProv, NULL, NULL, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT)) {
    13  - std::cerr << "CryptAcquireContext failed\n";
    14  - return md5;
    15  - }
    16  - 
    17  - HCRYPTHASH hHash = 0;
    18  - if (!CryptCreateHash(hProv, CALG_MD5, 0, 0, &hHash)) {
    19  - std::cerr << "CryptCreateHash failed\n";
    20  - CryptReleaseContext(hProv, 0);
    21  - return md5;
    22  - }
    23  - 
    24  - // 读取文件并更新哈希值
    25  - if (!CryptHashData(hHash, buffer, bytesRead, 0)) {
    26  - std::cerr << "CryptHashData failed\n";
    27  - CryptDestroyHash(hHash);
    28  - CryptReleaseContext(hProv, 0);
    29  - return md5;
    30  - }
    31  - 
    32  - // 获取哈希值
    33  - DWORD hashSize = 16; // MD5 哈希值大小为 16 字节
    34  - BYTE hashBuffer[16];
    35  - if (CryptGetHashParam(hHash, HP_HASHVAL, hashBuffer, &hashSize, 0)) {
    36  - std::stringstream ss;
    37  - ss << std::hex << std::setfill('0');
    38  - for (int i = 0; i < hashSize; ++i) {
    39  - ss << std::setw(2) << static_cast<unsigned int>(hashBuffer[i]);
    40  - }
    41  - md5 = ss.str();
    42  - }
    43  - else {
    44  - std::cerr << "CryptGetHashParam failed\n";
    45  - }
    46  - 
    47  - CryptDestroyHash(hHash);
    48  - CryptReleaseContext(hProv, 0);
    49  - 
    50  - return md5;
    51  -}
    52  - 
    53 7  string wstring2string(wstring wstr)
    54 8  {
    55 9   string result;
    skipped 165 lines
    221 175  {
    222 176   const char* known_dlls[] = {"kernel32", "wow64cpu", "wowarmhw", "xtajit", "advapi32", "clbcatq", "combase", "COMDLG32", "coml2", "difxapi", "gdi32", "gdiplus", "IMAGEHLP", "IMM32", "MSCTF", "MSVCRT", "NORMALIZ", "NSI", "ole32", "OLEAUT32", "PSAPI", "rpcrt4", "sechost", "Setupapi", "SHCORE", "SHELL32", "SHLWAPI", "user32", "WLDAP32", "wow64cpu", "wow64", "wow64base", "wow64con", "wow64win", "WS2_32", "xtajit64"};
    223 177   string fileDir = GetDirectoryFromPath(ConvertWideToMultiByte(filePath)) + "\\";
     178 + result->fileDir = fileDir;
    224 179   
    225 180   if (hasWritePermission(fileDir))
    226 181   result->isWrite = true;
    skipped 126 lines
    353 308   return FALSE;
    354 309   }
    355 310  
    356  - /* string md5 = calculateMD5(pbFile, dwFileSize);
    357  - {
    358  - std::lock_guard<std::mutex> lock(mtx);
    359  - if (md5Map.find(md5) != md5Map.end())
    360  - return FALSE;
    361  - 
    362  - md5Map[md5] = filePath;
    363  - }*/
    364  -
    365 311   ResultInfo* result = new ResultInfo;
    366 312   result->filePath = wstring2string(filePath);
    367 313  
    skipped 17 lines
    385 331   return TRUE;
    386 332  }
    387 333   
     334 +int readFileContext(string path, char** contexts)
     335 +{
     336 + ifstream inFile(path, std::ios::binary);
     337 + if (!inFile) {
     338 + printf("%s open fail\n", path.c_str());
     339 + return -1;
     340 + }
     341 + 
     342 + inFile.seekg(0, std::ios::end);
     343 + std::streamsize payloadFileSize = inFile.tellg();
     344 + inFile.seekg(0, std::ios::beg);
     345 + 
     346 + *contexts = new char[payloadFileSize];
     347 + 
     348 + if (!inFile.read(*contexts, payloadFileSize)) {
     349 + printf("%s payloadBuffer read fail\n", path.c_str());
     350 + delete[] contexts;
     351 + return -1;
     352 + }
     353 + 
     354 + inFile.close();
     355 + 
     356 + return payloadFileSize;
     357 +}
     358 + 
     359 +void saveFile(string filePath, char* buffer, DWORD fileSize)
     360 +{
     361 + std::ofstream outFile;
     362 + outFile.open(filePath, std::ios::binary | std::ios::trunc);
     363 + outFile.write(buffer, fileSize);
     364 + outFile.close();
     365 +}
     366 + 
     367 +int fixExportTable(string targetFilePath, string sourceFilePath)
     368 +{
     369 + char* targetBuffer;
     370 + DWORD fileSize = readFileContext(targetFilePath, &targetBuffer);
     371 + 
     372 + PIMAGE_DOS_HEADER pDH = (PIMAGE_DOS_HEADER)targetBuffer;
     373 + PIMAGE_NT_HEADERS pNtH = (PIMAGE_NT_HEADERS)((DWORD)pDH + pDH->e_lfanew);
     374 + PIMAGE_OPTIONAL_HEADER pOH = &pNtH->OptionalHeader;
     375 + IMAGE_DATA_DIRECTORY exportDirectory;
     376 + 
     377 + if (*(PWORD)((size_t)pDH + pDH->e_lfanew + 0x18) == IMAGE_NT_OPTIONAL_HDR32_MAGIC)
     378 + {
     379 + PIMAGE_NT_HEADERS32 pNtH32 = PIMAGE_NT_HEADERS32((size_t)pDH + pDH->e_lfanew);
     380 + PIMAGE_OPTIONAL_HEADER32 pOH32 = &pNtH32->OptionalHeader;
     381 + 
     382 + exportDirectory = pOH32->DataDirectory[0];
     383 + }
     384 + else {
     385 + PIMAGE_NT_HEADERS64 pNtH64 = PIMAGE_NT_HEADERS64((size_t)pDH + pDH->e_lfanew);
     386 + PIMAGE_OPTIONAL_HEADER64 pOH64 = &pNtH64->OptionalHeader;
     387 + 
     388 + exportDirectory = pOH64->DataDirectory[0];
     389 + }
     390 + 
     391 + IMAGE_EXPORT_DIRECTORY* exportDir = (IMAGE_EXPORT_DIRECTORY*)(targetBuffer + rvaToFOA(targetBuffer, exportDirectory.VirtualAddress));
     392 + 
     393 + DWORD* nameRVAs = (DWORD*)(targetBuffer + rvaToFOA(targetBuffer, exportDir->AddressOfNames));
     394 + 
     395 + char* sourceBuffer;
     396 + readFileContext(sourceFilePath, &sourceBuffer);
     397 + 
     398 + pDH = (PIMAGE_DOS_HEADER)sourceBuffer;
     399 + pNtH = (PIMAGE_NT_HEADERS)((DWORD)pDH + pDH->e_lfanew);
     400 + pOH = &pNtH->OptionalHeader;
     401 + 
     402 + if (*(PWORD)((size_t)pDH + pDH->e_lfanew + 0x18) == IMAGE_NT_OPTIONAL_HDR32_MAGIC)
     403 + {
     404 + PIMAGE_NT_HEADERS32 pNtH32 = PIMAGE_NT_HEADERS32((size_t)pDH + pDH->e_lfanew);
     405 + PIMAGE_OPTIONAL_HEADER32 pOH32 = &pNtH32->OptionalHeader;
     406 + 
     407 + exportDirectory = pOH32->DataDirectory[0];
     408 + }
     409 + else {
     410 + PIMAGE_NT_HEADERS64 pNtH64 = PIMAGE_NT_HEADERS64((size_t)pDH + pDH->e_lfanew);
     411 + PIMAGE_OPTIONAL_HEADER64 pOH64 = &pNtH64->OptionalHeader;
     412 + 
     413 + exportDirectory = pOH64->DataDirectory[0];
     414 + }
     415 + 
     416 + IMAGE_EXPORT_DIRECTORY* exportDir_source = (IMAGE_EXPORT_DIRECTORY*)(sourceBuffer + rvaToFOA(sourceBuffer, exportDirectory.VirtualAddress));
     417 + 
     418 + DWORD* nameRVAs_source = (DWORD*)(sourceBuffer + rvaToFOA(sourceBuffer, exportDir_source->AddressOfNames));
     419 + 
     420 + for (int i = 0; i < exportDir_source->NumberOfNames; i++)
     421 + {
     422 + DWORD nameRVA_source = nameRVAs_source[i];
     423 + char* exportFunctionName_source = sourceBuffer + rvaToFOA(sourceBuffer, nameRVA_source);
     424 + 
     425 + DWORD nameRVA = nameRVAs[i];
     426 + char* exportFunctionName = targetBuffer + rvaToFOA(targetBuffer, nameRVA);
     427 + 
     428 + memcpy(exportFunctionName, exportFunctionName_source, strlen(exportFunctionName_source)+1);
     429 + }
     430 + 
     431 + saveFile(targetFilePath, targetBuffer, fileSize);
     432 + 
     433 + delete[] targetBuffer;
     434 + delete[] sourceBuffer;
     435 + 
     436 + return 0;
     437 +}
     438 + 
     439 +std::string GetCurrentPath() {
     440 + char buffer[MAX_PATH];
     441 + GetModuleFileNameA(NULL, buffer, MAX_PATH);
     442 + std::string::size_type pos = std::string(buffer).find_last_of("\\/");
     443 + return std::string(buffer).substr(0, pos);
     444 +}
     445 + 
     446 +std::string GenerateRandomFolderName() {
     447 + std::random_device rd;
     448 + std::mt19937 gen(rd());
     449 + std::uniform_int_distribution<int> dist(1, 1000000);
     450 + 
     451 + // 生成随机字符串作为文件夹名
     452 + const char charset[] = "ghijklmnopq_rstuvwxyz0123456789abcdef";
     453 + const size_t charsetSize = sizeof(charset) - 1;
     454 + const size_t folderNameLength = 10; // 文件夹名长度
     455 + std::string folderName;
     456 + for (size_t i = 0; i < folderNameLength; ++i) {
     457 + folderName += charset[dist(gen) % charsetSize];
     458 + }
     459 + return folderName;
     460 +}
     461 + 
     462 +string CreateRandomFolder(const std::string& basePath) {
     463 + std::string randomFolderName = GenerateRandomFolderName();
     464 + std::string folderPath = basePath + "\\" + randomFolderName;
     465 + 
     466 + if (CreateDirectoryA(folderPath.c_str(), NULL) || GetLastError() == ERROR_ALREADY_EXISTS) {
     467 + return folderPath;
     468 + }
     469 + 
     470 + return 0;
     471 +}
     472 + 
    388 473  std::wstring ConvertToWideString(const char* input) {
    389 474   int length = strlen(input) + 1;
    390 475   int requiredLength = MultiByteToWideChar(CP_ACP, 0, input, length, NULL, 0);
    skipped 3 lines
    394 479   delete[] buffer;
    395 480   return result;
    396 481  }
     482 + 
     483 +string CopyFileToFolder(const std::string& sourceFilePath, const std::string& targetFolderPath, bool isNeedHook, bool isPreDll, int bit) {
     484 + std::string targetFilePath = targetFolderPath + "\\" + sourceFilePath.substr(sourceFilePath.find_last_of("\\/") + 1);
     485 + 
     486 + if (isNeedHook) {
     487 + std::string hookFilePath = GetCurrentPath() + "\\TestLoad_x86.dll";
     488 + if (bit == 64)
     489 + hookFilePath = GetCurrentPath() + "\\TestLoad_x64.dll";
     490 + 
     491 + if (isPreDll) {
     492 + CopyFileA(hookFilePath.c_str(), targetFilePath.c_str(), FALSE);
     493 + fixExportTable(targetFilePath, sourceFilePath);
     494 + }
     495 + else {
     496 + CopyFileA(hookFilePath.c_str(), targetFilePath.c_str(), FALSE);
     497 + }
     498 + }
     499 + else {
     500 + CopyFileA(sourceFilePath.c_str(), targetFilePath.c_str(), FALSE);
     501 + }
     502 + 
     503 + return targetFilePath;
     504 +}
     505 + 
     506 +bool DeleteDirectory(const string& path) {
     507 + WIN32_FIND_DATAA findData;
     508 + HANDLE hFind = FindFirstFileA((path + "\\*").c_str(), &findData);
     509 + 
     510 + if (hFind == INVALID_HANDLE_VALUE) {
     511 + return false;
     512 + }
     513 + 
     514 + do {
     515 + if (strcmp(findData.cFileName, ".") != 0 && strcmp(findData.cFileName, "..") != 0) {
     516 + string filePath = path + "\\" + findData.cFileName;
     517 + if (findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
     518 + // 递归删除子目录
     519 + if (!DeleteDirectory(filePath)) {
     520 + FindClose(hFind);
     521 + return false;
     522 + }
     523 + }
     524 + else {
     525 + // 删除文件
     526 + DWORD fileAttributes = GetFileAttributesA(filePath.c_str());
     527 + !SetFileAttributesA(filePath.c_str(), fileAttributes & ~FILE_ATTRIBUTE_READONLY);
     528 + 
     529 + if (!DeleteFileA(filePath.c_str())) {
     530 + FindClose(hFind);
     531 + return false;
     532 + }
     533 + }
     534 + }
     535 + } while (FindNextFileA(hFind, &findData) != 0);
     536 + 
     537 + FindClose(hFind);
     538 + 
     539 + // 删除空目录
     540 + if (!RemoveDirectoryA(path.c_str())) {
     541 + return false;
     542 + }
     543 + 
     544 + return true;
     545 +}
     546 + 
     547 +int TestCreateProcess(string runFilePath) {
     548 + // 定义进程信息结构体
     549 + STARTUPINFOA si = { sizeof(si) };
     550 + PROCESS_INFORMATION pi;
     551 + 
     552 + // 创建进程
     553 + if (!CreateProcessA(
     554 + nullptr, // 指向可执行文件名的指针(在这里,nullptr表示使用当前可执行文件)
     555 + (char*)runFilePath.c_str(), // 可执行文件的路径
     556 + nullptr, // 安全属性
     557 + nullptr, // 安全属性
     558 + FALSE, // 指定是否继承句柄
     559 + CREATE_NO_WINDOW, // 指定窗口显示方式(这里指定为无窗口)
     560 + nullptr, // 指定新进程的环境块
     561 + nullptr, // 指定新进程的当前目录
     562 + &si, // STARTUPINFO 结构体
     563 + &pi)) { // 接收新进程信息的 PROCESS_INFORMATION 结构体
     564 + std::cerr << "Failed to create process. Error code: " << GetLastError() << std::endl;
     565 + return 1;
     566 + }
     567 + 
     568 + // 等待进程结束
     569 + WaitForSingleObject(pi.hProcess, 2 * 1000);
     570 + 
     571 + TerminateProcess(pi.hProcess, 0);
     572 + 
     573 + // 获取进程的退出码
     574 + DWORD exitCode;
     575 + GetExitCodeProcess(pi.hProcess, &exitCode);
     576 + 
     577 + // 输出退出码
     578 + std::cout << runFilePath << " Process exited with code: " << exitCode << std::endl;
     579 + 
     580 + // 关闭进程和线程句柄
     581 + CloseHandle(pi.hProcess);
     582 + CloseHandle(pi.hThread);
     583 + 
     584 + return 0;
     585 +}
     586 + 
     587 +void RunPE() {
     588 + std::string currentPath = GetCurrentPath();
     589 + 
     590 + for (const auto& result : results) {
     591 + string folderPath = CreateRandomFolder(currentPath);
     592 + 
     593 + string runFilePath = CopyFileToFolder(result->filePath, folderPath, false, false, result->bit);
     594 + 
     595 + bool flag;
     596 + if (result->preLoadDlls.size() > 0) {
     597 + flag = result->preLoadDlls.size() <= c.dllCount ? true : false;
     598 + 
     599 + for (const auto& dll : result->preLoadDlls) {
     600 + CopyFileToFolder(result->fileDir + dll, folderPath, flag, true, result->bit);
     601 + }
     602 + }
     603 + 
     604 + if (result->postLoadDlls.size() > 0) {
     605 + flag = result->postLoadDlls.size() <= c.dllCount ? true : false;
     606 + 
     607 + for (const auto& dll : result->postLoadDlls) {
     608 + CopyFileToFolder(result->fileDir + dll, folderPath, flag, false, result->bit);
     609 + }
     610 + }
     611 + 
     612 + TestCreateProcess(runFilePath);
     613 + 
     614 + DeleteDirectory(folderPath.c_str());
     615 + }
     616 +}
  • ■ ■ ■ ■ ■ ■
    SearchAvailableExe/Tools.h
    skipped 8 lines
    9 9  #include <algorithm>
    10 10  #include <filesystem>
    11 11  #include <mutex>
     12 +#include <random>
    12 13   
    13 14  using namespace std;
    14 15   
    15 16  typedef struct {
    16 17   bool isWrite;
    17 18   string filePath;
     19 + string fileDir;
    18 20   int bit;
    19 21   vector<char*> preLoadDlls;
    20 22   vector<char*> postLoadDlls;
    skipped 10 lines
    31 33   
    32 34  BOOL VerifyFileSignature(LPCWSTR filePath);
    33 35  std::wstring ConvertToWideString(const char* input);
     36 +void RunPE();
    34 37   
  • ■ ■ ■ ■ ■ ■
    SearchAvailableExe.sln
    skipped 4 lines
    5 5  MinimumVisualStudioVersion = 10.0.40219.1
    6 6  Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SearchAvailableExe", "SearchAvailableExe\SearchAvailableExe.vcxproj", "{E4D4D27B-A771-4FD8-B4B3-A3ECFDEDD75B}"
    7 7  EndProject
     8 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestLoad", "TestLoad\TestLoad.vcxproj", "{BD648B11-99C0-4E7F-AB74-D3C168431C34}"
     9 +EndProject
    8 10  Global
    9 11   GlobalSection(SolutionConfigurationPlatforms) = preSolution
    10 12   Debug|x64 = Debug|x64
    skipped 10 lines
    21 23   {E4D4D27B-A771-4FD8-B4B3-A3ECFDEDD75B}.Release|x64.Build.0 = Release|x64
    22 24   {E4D4D27B-A771-4FD8-B4B3-A3ECFDEDD75B}.Release|x86.ActiveCfg = Release|Win32
    23 25   {E4D4D27B-A771-4FD8-B4B3-A3ECFDEDD75B}.Release|x86.Build.0 = Release|Win32
     26 + {BD648B11-99C0-4E7F-AB74-D3C168431C34}.Debug|x64.ActiveCfg = Debug|x64
     27 + {BD648B11-99C0-4E7F-AB74-D3C168431C34}.Debug|x64.Build.0 = Debug|x64
     28 + {BD648B11-99C0-4E7F-AB74-D3C168431C34}.Debug|x86.ActiveCfg = Debug|Win32
     29 + {BD648B11-99C0-4E7F-AB74-D3C168431C34}.Debug|x86.Build.0 = Debug|Win32
     30 + {BD648B11-99C0-4E7F-AB74-D3C168431C34}.Release|x64.ActiveCfg = Release|x64
     31 + {BD648B11-99C0-4E7F-AB74-D3C168431C34}.Release|x64.Build.0 = Release|x64
     32 + {BD648B11-99C0-4E7F-AB74-D3C168431C34}.Release|x86.ActiveCfg = Release|Win32
     33 + {BD648B11-99C0-4E7F-AB74-D3C168431C34}.Release|x86.Build.0 = Release|Win32
    24 34   EndGlobalSection
    25 35   GlobalSection(SolutionProperties) = preSolution
    26 36   HideSolutionNode = FALSE
    skipped 6 lines
  • ■ ■ ■ ■ ■ ■
    TestLoad/TestLoad.vcxproj
     1 +<?xml version="1.0" encoding="utf-8"?>
     2 +<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
     3 + <ItemGroup Label="ProjectConfigurations">
     4 + <ProjectConfiguration Include="Debug|Win32">
     5 + <Configuration>Debug</Configuration>
     6 + <Platform>Win32</Platform>
     7 + </ProjectConfiguration>
     8 + <ProjectConfiguration Include="Release|Win32">
     9 + <Configuration>Release</Configuration>
     10 + <Platform>Win32</Platform>
     11 + </ProjectConfiguration>
     12 + <ProjectConfiguration Include="Debug|x64">
     13 + <Configuration>Debug</Configuration>
     14 + <Platform>x64</Platform>
     15 + </ProjectConfiguration>
     16 + <ProjectConfiguration Include="Release|x64">
     17 + <Configuration>Release</Configuration>
     18 + <Platform>x64</Platform>
     19 + </ProjectConfiguration>
     20 + </ItemGroup>
     21 + <PropertyGroup Label="Globals">
     22 + <VCProjectVersion>16.0</VCProjectVersion>
     23 + <Keyword>Win32Proj</Keyword>
     24 + <ProjectGuid>{bd648b11-99c0-4e7f-ab74-d3c168431c34}</ProjectGuid>
     25 + <RootNamespace>TestLoad</RootNamespace>
     26 + <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
     27 + </PropertyGroup>
     28 + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
     29 + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     30 + <ConfigurationType>DynamicLibrary</ConfigurationType>
     31 + <UseDebugLibraries>true</UseDebugLibraries>
     32 + <PlatformToolset>v143</PlatformToolset>
     33 + <CharacterSet>Unicode</CharacterSet>
     34 + </PropertyGroup>
     35 + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     36 + <ConfigurationType>DynamicLibrary</ConfigurationType>
     37 + <UseDebugLibraries>false</UseDebugLibraries>
     38 + <PlatformToolset>v143</PlatformToolset>
     39 + <WholeProgramOptimization>true</WholeProgramOptimization>
     40 + <CharacterSet>Unicode</CharacterSet>
     41 + </PropertyGroup>
     42 + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
     43 + <ConfigurationType>DynamicLibrary</ConfigurationType>
     44 + <UseDebugLibraries>true</UseDebugLibraries>
     45 + <PlatformToolset>v143</PlatformToolset>
     46 + <CharacterSet>Unicode</CharacterSet>
     47 + </PropertyGroup>
     48 + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
     49 + <ConfigurationType>DynamicLibrary</ConfigurationType>
     50 + <UseDebugLibraries>false</UseDebugLibraries>
     51 + <PlatformToolset>v143</PlatformToolset>
     52 + <WholeProgramOptimization>true</WholeProgramOptimization>
     53 + <CharacterSet>Unicode</CharacterSet>
     54 + </PropertyGroup>
     55 + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
     56 + <ImportGroup Label="ExtensionSettings">
     57 + </ImportGroup>
     58 + <ImportGroup Label="Shared">
     59 + </ImportGroup>
     60 + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
     61 + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
     62 + </ImportGroup>
     63 + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
     64 + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
     65 + </ImportGroup>
     66 + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
     67 + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
     68 + </ImportGroup>
     69 + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
     70 + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
     71 + </ImportGroup>
     72 + <PropertyGroup Label="UserMacros" />
     73 + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
     74 + <ClCompile>
     75 + <WarningLevel>Level3</WarningLevel>
     76 + <SDLCheck>true</SDLCheck>
     77 + <PreprocessorDefinitions>WIN32;_DEBUG;TESTLOAD_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
     78 + <ConformanceMode>true</ConformanceMode>
     79 + <PrecompiledHeader>Use</PrecompiledHeader>
     80 + <PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
     81 + </ClCompile>
     82 + <Link>
     83 + <SubSystem>Windows</SubSystem>
     84 + <GenerateDebugInformation>true</GenerateDebugInformation>
     85 + <EnableUAC>false</EnableUAC>
     86 + </Link>
     87 + </ItemDefinitionGroup>
     88 + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
     89 + <ClCompile>
     90 + <WarningLevel>Level3</WarningLevel>
     91 + <FunctionLevelLinking>true</FunctionLevelLinking>
     92 + <IntrinsicFunctions>true</IntrinsicFunctions>
     93 + <SDLCheck>true</SDLCheck>
     94 + <PreprocessorDefinitions>WIN32;NDEBUG;TESTLOAD_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
     95 + <ConformanceMode>true</ConformanceMode>
     96 + <PrecompiledHeader>NotUsing</PrecompiledHeader>
     97 + <PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
     98 + <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
     99 + </ClCompile>
     100 + <Link>
     101 + <SubSystem>Windows</SubSystem>
     102 + <EnableCOMDATFolding>true</EnableCOMDATFolding>
     103 + <OptimizeReferences>true</OptimizeReferences>
     104 + <GenerateDebugInformation>false</GenerateDebugInformation>
     105 + <EnableUAC>false</EnableUAC>
     106 + </Link>
     107 + </ItemDefinitionGroup>
     108 + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
     109 + <ClCompile>
     110 + <WarningLevel>Level3</WarningLevel>
     111 + <SDLCheck>true</SDLCheck>
     112 + <PreprocessorDefinitions>_DEBUG;TESTLOAD_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
     113 + <ConformanceMode>true</ConformanceMode>
     114 + <PrecompiledHeader>Use</PrecompiledHeader>
     115 + <PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
     116 + </ClCompile>
     117 + <Link>
     118 + <SubSystem>Windows</SubSystem>
     119 + <GenerateDebugInformation>true</GenerateDebugInformation>
     120 + <EnableUAC>false</EnableUAC>
     121 + </Link>
     122 + </ItemDefinitionGroup>
     123 + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
     124 + <ClCompile>
     125 + <WarningLevel>Level3</WarningLevel>
     126 + <FunctionLevelLinking>true</FunctionLevelLinking>
     127 + <IntrinsicFunctions>true</IntrinsicFunctions>
     128 + <SDLCheck>true</SDLCheck>
     129 + <PreprocessorDefinitions>NDEBUG;TESTLOAD_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
     130 + <ConformanceMode>true</ConformanceMode>
     131 + <PrecompiledHeader>NotUsing</PrecompiledHeader>
     132 + <PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
     133 + <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
     134 + </ClCompile>
     135 + <Link>
     136 + <SubSystem>Windows</SubSystem>
     137 + <EnableCOMDATFolding>true</EnableCOMDATFolding>
     138 + <OptimizeReferences>true</OptimizeReferences>
     139 + <GenerateDebugInformation>false</GenerateDebugInformation>
     140 + <EnableUAC>false</EnableUAC>
     141 + </Link>
     142 + </ItemDefinitionGroup>
     143 + <ItemGroup>
     144 + <ClCompile Include="dllmain.cpp" />
     145 + </ItemGroup>
     146 + <ItemGroup>
     147 + <ClInclude Include="export.hpp" />
     148 + </ItemGroup>
     149 + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
     150 + <ImportGroup Label="ExtensionTargets">
     151 + </ImportGroup>
     152 +</Project>
  • ■ ■ ■ ■ ■ ■
    TestLoad/TestLoad.vcxproj.filters
     1 +<?xml version="1.0" encoding="utf-8"?>
     2 +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
     3 + <ItemGroup>
     4 + <Filter Include="源文件">
     5 + <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
     6 + <Extensions>cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
     7 + </Filter>
     8 + <Filter Include="头文件">
     9 + <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
     10 + <Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions>
     11 + </Filter>
     12 + <Filter Include="资源文件">
     13 + <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
     14 + <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
     15 + </Filter>
     16 + </ItemGroup>
     17 + <ItemGroup>
     18 + <ClCompile Include="dllmain.cpp">
     19 + <Filter>源文件</Filter>
     20 + </ClCompile>
     21 + </ItemGroup>
     22 + <ItemGroup>
     23 + <ClInclude Include="export.hpp">
     24 + <Filter>源文件</Filter>
     25 + </ClInclude>
     26 + </ItemGroup>
     27 +</Project>
  • ■ ■ ■ ■ ■ ■
    TestLoad/TestLoad.vcxproj.user
     1 +<?xml version="1.0" encoding="utf-8"?>
     2 +<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
     3 + <PropertyGroup />
     4 +</Project>
  • ■ ■ ■ ■ ■ ■
    TestLoad/dllmain.cpp
     1 +#include <windows.h>
     2 +#include <stdio.h>
     3 + 
     4 +#include "export.hpp"
     5 + 
     6 +BOOL APIENTRY DllMain( HMODULE hModule,
     7 + DWORD ul_reason_for_call,
     8 + LPVOID lpReserved
     9 + )
     10 +{
     11 + switch (ul_reason_for_call)
     12 + {
     13 + 
     14 + case DLL_PROCESS_ATTACH:
     15 + exit(0x2222);
     16 + case DLL_THREAD_ATTACH:
     17 + case DLL_THREAD_DETACH:
     18 + case DLL_PROCESS_DETACH:
     19 + break;
     20 + }
     21 + return TRUE;
     22 +}
     23 + 
     24 + 
  • ■ ■ ■ ■ ■ ■
    TestLoad/export.hpp
     1 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________1() {
     2 + return;
     3 +}
     4 + 
     5 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________2() {
     6 + return;
     7 +}
     8 + 
     9 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________3() {
     10 + return;
     11 +}
     12 + 
     13 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________4() {
     14 + return;
     15 +}
     16 + 
     17 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________5() {
     18 + return;
     19 +}
     20 + 
     21 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________6() {
     22 + return;
     23 +}
     24 + 
     25 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________7() {
     26 + return;
     27 +}
     28 + 
     29 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________8() {
     30 + return;
     31 +}
     32 + 
     33 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________9() {
     34 + return;
     35 +}
     36 + 
     37 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________10() {
     38 + return;
     39 +}
     40 + 
     41 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________11() {
     42 + return;
     43 +}
     44 + 
     45 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________12() {
     46 + return;
     47 +}
     48 + 
     49 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________13() {
     50 + return;
     51 +}
     52 + 
     53 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________14() {
     54 + return;
     55 +}
     56 + 
     57 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________15() {
     58 + return;
     59 +}
     60 + 
     61 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________16() {
     62 + return;
     63 +}
     64 + 
     65 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________17() {
     66 + return;
     67 +}
     68 + 
     69 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________18() {
     70 + return;
     71 +}
     72 + 
     73 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________19() {
     74 + return;
     75 +}
     76 + 
     77 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________20() {
     78 + return;
     79 +}
     80 + 
     81 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________21() {
     82 + return;
     83 +}
     84 + 
     85 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________22() {
     86 + return;
     87 +}
     88 + 
     89 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________23() {
     90 + return;
     91 +}
     92 + 
     93 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________24() {
     94 + return;
     95 +}
     96 + 
     97 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________25() {
     98 + return;
     99 +}
     100 + 
     101 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________26() {
     102 + return;
     103 +}
     104 + 
     105 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________27() {
     106 + return;
     107 +}
     108 + 
     109 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________28() {
     110 + return;
     111 +}
     112 + 
     113 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________29() {
     114 + return;
     115 +}
     116 + 
     117 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________30() {
     118 + return;
     119 +}
     120 + 
     121 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________31() {
     122 + return;
     123 +}
     124 + 
     125 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________32() {
     126 + return;
     127 +}
     128 + 
     129 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________33() {
     130 + return;
     131 +}
     132 + 
     133 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________34() {
     134 + return;
     135 +}
     136 + 
     137 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________35() {
     138 + return;
     139 +}
     140 + 
     141 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________36() {
     142 + return;
     143 +}
     144 + 
     145 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________37() {
     146 + return;
     147 +}
     148 + 
     149 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________38() {
     150 + return;
     151 +}
     152 + 
     153 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________39() {
     154 + return;
     155 +}
     156 + 
     157 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________40() {
     158 + return;
     159 +}
     160 + 
     161 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________41() {
     162 + return;
     163 +}
     164 + 
     165 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________42() {
     166 + return;
     167 +}
     168 + 
     169 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________43() {
     170 + return;
     171 +}
     172 + 
     173 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________44() {
     174 + return;
     175 +}
     176 + 
     177 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________45() {
     178 + return;
     179 +}
     180 + 
     181 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________46() {
     182 + return;
     183 +}
     184 + 
     185 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________47() {
     186 + return;
     187 +}
     188 + 
     189 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________48() {
     190 + return;
     191 +}
     192 + 
     193 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________49() {
     194 + return;
     195 +}
     196 + 
     197 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________50() {
     198 + return;
     199 +}
     200 + 
     201 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________51() {
     202 + return;
     203 +}
     204 + 
     205 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________52() {
     206 + return;
     207 +}
     208 + 
     209 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________53() {
     210 + return;
     211 +}
     212 + 
     213 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________54() {
     214 + return;
     215 +}
     216 + 
     217 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________55() {
     218 + return;
     219 +}
     220 + 
     221 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________56() {
     222 + return;
     223 +}
     224 + 
     225 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________57() {
     226 + return;
     227 +}
     228 + 
     229 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________58() {
     230 + return;
     231 +}
     232 + 
     233 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________59() {
     234 + return;
     235 +}
     236 + 
     237 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________60() {
     238 + return;
     239 +}
     240 + 
     241 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________61() {
     242 + return;
     243 +}
     244 + 
     245 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________62() {
     246 + return;
     247 +}
     248 + 
     249 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________63() {
     250 + return;
     251 +}
     252 + 
     253 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________64() {
     254 + return;
     255 +}
     256 + 
     257 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________65() {
     258 + return;
     259 +}
     260 + 
     261 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________66() {
     262 + return;
     263 +}
     264 + 
     265 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________67() {
     266 + return;
     267 +}
     268 + 
     269 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________68() {
     270 + return;
     271 +}
     272 + 
     273 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________69() {
     274 + return;
     275 +}
     276 + 
     277 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________70() {
     278 + return;
     279 +}
     280 + 
     281 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________71() {
     282 + return;
     283 +}
     284 + 
     285 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________72() {
     286 + return;
     287 +}
     288 + 
     289 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________73() {
     290 + return;
     291 +}
     292 + 
     293 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________74() {
     294 + return;
     295 +}
     296 + 
     297 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________75() {
     298 + return;
     299 +}
     300 + 
     301 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________76() {
     302 + return;
     303 +}
     304 + 
     305 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________77() {
     306 + return;
     307 +}
     308 + 
     309 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________78() {
     310 + return;
     311 +}
     312 + 
     313 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________79() {
     314 + return;
     315 +}
     316 + 
     317 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________80() {
     318 + return;
     319 +}
     320 + 
     321 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________81() {
     322 + return;
     323 +}
     324 + 
     325 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________82() {
     326 + return;
     327 +}
     328 + 
     329 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________83() {
     330 + return;
     331 +}
     332 + 
     333 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________84() {
     334 + return;
     335 +}
     336 + 
     337 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________85() {
     338 + return;
     339 +}
     340 + 
     341 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________86() {
     342 + return;
     343 +}
     344 + 
     345 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________87() {
     346 + return;
     347 +}
     348 + 
     349 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________88() {
     350 + return;
     351 +}
     352 + 
     353 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________89() {
     354 + return;
     355 +}
     356 + 
     357 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________90() {
     358 + return;
     359 +}
     360 + 
     361 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________91() {
     362 + return;
     363 +}
     364 + 
     365 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________92() {
     366 + return;
     367 +}
     368 + 
     369 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________93() {
     370 + return;
     371 +}
     372 + 
     373 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________94() {
     374 + return;
     375 +}
     376 + 
     377 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________95() {
     378 + return;
     379 +}
     380 + 
     381 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________96() {
     382 + return;
     383 +}
     384 + 
     385 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________97() {
     386 + return;
     387 +}
     388 + 
     389 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________98() {
     390 + return;
     391 +}
     392 + 
     393 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________99() {
     394 + return;
     395 +}
     396 + 
     397 +extern "C" __declspec(dllexport) void TestLoad__________________________________________________________________________________________________100() {
     398 + return;
     399 +}
Please wait...
Page is in error, reload to recover