鱼C论坛

 找回密码
 立即注册
查看: 163|回复: 4

给定exe文件查看dll依赖以及所用函数

[复制链接]
发表于 2024-4-8 13:56:17 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
自己用C++实现一个程序,传入exe文件,输出对应dll依赖以及dll文件所用函数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-4-8 13:56:53 | 显示全部楼层
要实现这个功能,你可以使用Windows API来读取exe文件的依赖项和dll文件中所用的函数。

首先,你需要使用`LoadLibraryEx`函数来加载exe文件,并使用`GetModuleHandleEx`函数获取它的模块句柄。然后,你可以使用`EnumProcessModules`函数来获取这个进程所加载的所有模块(包括dll文件)。接下来,你可以使用`GetModuleFileNameEx`函数来获取每个模块的文件名,并使用`GetModuleInformation`函数来获取每个模块的大小等信息。

当你获取到每个dll文件的路径后,你可以使用`LoadLibraryEx`函数加载dll文件,并使用`GetProcAddress`函数获取dll文件中的函数地址。然后,你可以使用`EnumResourceNames`函数或者`EnumResourceTypes`函数来枚举dll文件中的所有资源。

下面是一个简单的示例代码,展示了如何实现这个功能:

  1. #include <windows.h>
  2. #include <iostream>

  3. void listDllDependencies(const char* exeFilePath) {
  4.     HMODULE hExeModule = LoadLibraryExA(exeFilePath, NULL, DONT_RESOLVE_DLL_REFERENCES);
  5.     if (hExeModule == NULL) {
  6.         std::cout << "Failed to load exe." << std::endl;
  7.         return;
  8.     }

  9.     // 获取进程中所有模块
  10.     HMODULE hModules[1024];
  11.     DWORD cbNeeded;
  12.     if (!EnumProcessModules(GetCurrentProcess(), hModules, sizeof(hModules), &cbNeeded)) {
  13.         std::cout << "Failed to enum process modules." << std::endl;
  14.         return;
  15.     }

  16.     std::cout << "DLL Dependencies:" << std::endl;
  17.     for (int i = 0; i < cbNeeded / sizeof(HMODULE); i++) {
  18.         char moduleFilePath[MAX_PATH];
  19.         GetModuleFileNameExA(GetCurrentProcess(), hModules[i], moduleFilePath, MAX_PATH);
  20.         
  21.         std::cout << "    " << moduleFilePath << std::endl;
  22.     }
  23.    
  24.     FreeLibrary(hExeModule);
  25. }

  26. void listDllFunctions(const char* dllFilePath) {
  27.     HMODULE hDllModule = LoadLibraryExA(dllFilePath, NULL, DONT_RESOLVE_DLL_REFERENCES);
  28.     if (hDllModule == NULL) {
  29.         std::cout << "Failed to load dll." << std::endl;
  30.         return;
  31.     }

  32.     // 获取dll文件中所有导出的函数
  33.     FARPROC funcAddress;
  34.     DWORD index = 0;
  35.     while ((funcAddress = GetProcAddress(hDllModule, (LPCSTR)index++)) != NULL) {
  36.         std::cout << "    " << (LPVOID)funcAddress << std::endl;
  37.     }

  38.     FreeLibrary(hDllModule);
  39. }

  40. int main() {
  41.     const char* exeFile = "your_exe_file_path.exe";
  42.     const char* dllFile = "your_dll_file_path.dll";

  43.     std::cout << "DLL Dependencies of the exe file:" << std::endl;
  44.     listDllDependencies(exeFile);

  45.     std::cout << "Functions used in the dll file:" << std::endl;
  46.     listDllFunctions(dllFile);

  47.     return 0;
  48. }
复制代码


请替换`your_exe_file_path.exe`和`your_dll_file_path.dll`为你要查看的相应文件的路径。这个程序会输出exe文件的依赖dll文件列表以及dll文件中导出的函数。

希望能对你有所帮助!如果还有疑问,请随时向我提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-4-8 14:21:21 | 显示全部楼层
第15行:EnumProcessModules”: 找不到标识符
第21行: warning C4018: “<”: 有符号/无符号不匹配
第23行: error C3861: “GetModuleFileNameExA”: 找不到标识符
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-8 14:21:44 | 显示全部楼层
3507620743 发表于 2024-04-08 14:21
第15行:EnumProcessModules”: 找不到标识符
第21行 ...


抱歉,关于第15行的错误,我在代码中漏掉了对Windows API头文件的引用,你需要添加以下头文件:
  1. #include <psapi.h>
复制代码


而关于第21行的警告,它是因为返回的是一个unsigned int类型的值。你可以对返回的值做强制类型转换或者忽略这个警告,例如:
  1. (DWORD_PTR)moduleBase
复制代码


下面是更新后的示例代码:
  1. #include <iostream>
  2. #include <Windows.h>
  3. #include <psapi.h>

  4. void listDllDependencies(const char* exeFilePath) {
  5.     HMODULE hExeModule = LoadLibraryExA(exeFilePath, NULL, DONT_RESOLVE_DLL_REFERENCES);
  6.     if (hExeModule == NULL) {
  7.         std::cout << "Failed to load the input exe file." << std::endl;
  8.         return;
  9.     }

  10.     HMODULE moduleHandles[1024];
  11.     DWORD cbNeeded;
  12.     if (!EnumProcessModules(GetCurrentProcess(), moduleHandles, sizeof(moduleHandles), &cbNeeded)) {
  13.         std::cout << "Failed to enumerate process modules." << std::endl;
  14.         return;
  15.     }

  16.     for (int i = 0; i < (cbNeeded / sizeof(HMODULE)); ++i) {
  17.         char moduleName[MAX_PATH];
  18.         if (GetModuleFileNameExA(GetCurrentProcess(), moduleHandles[i], moduleName, MAX_PATH)) {
  19.             std::cout << "Module: " << moduleName << std::endl;

  20.             MODULEINFO moduleInfo;
  21.             if (GetModuleInformation(GetCurrentProcess(), moduleHandles[i], &moduleInfo, sizeof(moduleInfo))) {
  22.                 std::cout << "Base Address: 0x" << std::hex << (DWORD_PTR)moduleInfo.lpBaseOfDll << std::endl;
  23.                 std::cout << "Size: " << std::dec << moduleInfo.SizeOfImage << std::endl;
  24.             }
  25.         }
  26.     }

  27.     FreeLibrary(hExeModule);
  28. }

  29. int main() {
  30.     const char* exeFilePath = "C:\\path\\to\\your\\exe\\file.exe";
  31.     listDllDependencies(exeFilePath);

  32.     return 0;
  33. }
复制代码


请记住,这只是一个简单的示例代码,你可能需要根据实际需求进行适当的修改和完善。另外,这段代码默认使用的是ASCII字符集的路径,如果你使用的是Unicode字符集,请在函数名后面加上`W`,例如`LoadLibraryExW`、`GetModuleFileNameExW`等。希望能帮到你!如果还有其他问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-10 19:50:26 | 显示全部楼层
这段时间有点忙,现在才写完
第一点写完了,第二点写了一半
我就不用代码去查找dll的位置了,我直接把依赖的dll复制到当前目录
而且这只是一次扫描,后面再有新的dll也不管了
剩下的代码你自己写吧,我感兴趣的那部分,我已经写了

  1. $ ls
  2. KERNEL32.dll  main.cpp  main.exe  steam_api64.dll  test.exe
  3. $ cat main.cpp
  4. #include <iostream>
  5. #include <vector>
  6. #include <string>
  7. #include <fstream>
  8. #include <iterator>
  9. #include <cstdint>
  10. #include <utility>
  11. #include <sstream>
  12. #include <iomanip>
  13. #include <stdexcept>
  14. #include <exception>
  15. #include <windows.h>

  16. using std::vector, std::string, std::pair;
  17. using std::ifstream, std::istreambuf_iterator;
  18. using std::cout, std::endl;
  19. using std::stringstream, std::hex, std::setw, std::setfill;
  20. using std::exception, std::runtime_error;

  21. string string_from_file(const string &filename) {
  22.     ifstream in(filename);
  23.     istreambuf_iterator<char> beg(in), end;
  24.     return string(beg, end);
  25. }

  26. ULONGLONG file_offset(const IMAGE_NT_HEADERS *inh, ULONG rva) {
  27.     const IMAGE_SECTION_HEADER *ish = (const IMAGE_SECTION_HEADER *)(inh + 1);
  28.     for(size_t i = 0; i < inh->FileHeader.NumberOfSections; ++i) {
  29.         if(ish[i].VirtualAddress <= rva && rva < ish[i].VirtualAddress + ish[i].SizeOfRawData) {
  30.             return ish[i].PointerToRawData + rva - ish[i].VirtualAddress;
  31.         }
  32.     }
  33.     throw runtime_error("invalid rva");
  34. }

  35. const void *obj_addr(const IMAGE_DOS_HEADER *idh, ULONGLONG offset) {
  36.     return (const uint8_t *)idh + offset;
  37. }

  38. const string string_hex(ULONGLONG value) {
  39.     stringstream ss;
  40.     ss << hex << setw(16) << setfill('0') << value;
  41.     return ss.str();
  42. }

  43. const vector<pair<string, vector<string>>> parse_import_descriptor(const string &filename) {
  44.     vector<pair<string, vector<string>>> result;
  45.     string pe_file = string_from_file(filename);
  46.     const IMAGE_DOS_HEADER *idh = (const IMAGE_DOS_HEADER *)pe_file.data();
  47.     if(idh->e_magic != IMAGE_DOS_SIGNATURE) throw runtime_error("idh->e_magic != IMAGE_DOS_SIGNATURE");
  48.     const IMAGE_NT_HEADERS *inh = (const IMAGE_NT_HEADERS *)obj_addr(idh, idh->e_lfanew);
  49.     if(inh->Signature != IMAGE_NT_SIGNATURE) throw runtime_error("inh->Signature != IMAGE_NT_SIGNATURE");
  50.     //const IMAGE_FILE_HEADER *ifh = &inh->FileHeader;
  51.     const IMAGE_OPTIONAL_HEADER *ioh = &inh->OptionalHeader;
  52.     if(!ioh->DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].Size) return result;
  53.     const IMAGE_IMPORT_DESCRIPTOR *iid = (const IMAGE_IMPORT_DESCRIPTOR *)
  54.         obj_addr(idh, file_offset(inh, ioh->DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress));
  55.     for(size_t i = 0; ; ++i) {
  56.         if(!iid[i].Characteristics) break;
  57.         const char *name = (const char *)obj_addr(idh, file_offset(inh, iid[i].Name));
  58.         result.push_back(pair<string, vector<string>>(string(name), vector<string>()));
  59.         const IMAGE_THUNK_DATA *itd = (const IMAGE_THUNK_DATA *)obj_addr(idh, file_offset(inh, iid[i].OriginalFirstThunk));
  60.         for(size_t i = 0; ; ++i) {
  61.             if(!itd[i].u1.Ordinal) break;
  62.             string name;
  63.             if(itd[i].u1.Ordinal & IMAGE_ORDINAL_FLAG) {
  64.                 name = string("ordinal: ") + string_hex(itd[i].u1.Ordinal & ~IMAGE_ORDINAL_FLAG);
  65.             } else {
  66.                 const IMAGE_IMPORT_BY_NAME *iibn = (const IMAGE_IMPORT_BY_NAME *)
  67.                     obj_addr(idh, file_offset(inh, itd[i].u1.Ordinal));
  68.                 name = string((const char *)iibn->Name);
  69.             }
  70.             result.back().second.push_back(name);
  71.         }
  72.     }
  73.     return result;
  74. }

  75. void print_result(const string &filename, const vector<pair<string, vector<string>>> &v) {
  76.     cout << filename << endl;
  77.     for(const auto &i: v) {
  78.         cout << "    " << i.first << std::endl;
  79.         for(const auto &i: i.second) {
  80.             cout << "        " << i << std::endl;
  81.         }
  82.     }
  83. }

  84. int main() {
  85.     string filename = "test.exe";
  86.     vector<pair<string, vector<string>>> v = parse_import_descriptor(filename);
  87.     print_result(filename, v);
  88.     for(const auto &i: v) {
  89.         try {
  90.             vector<pair<string, vector<string>>> v = parse_import_descriptor(i.first);
  91.             print_result(i.first, v);
  92.         } catch(const exception &e) {
  93.             cout << i.first << ": " << e.what() << endl;
  94.         }
  95.     }
  96.     return 0;
  97. }
  98. $ ./main
  99. test.exe
  100.     WINMM.dll
  101.         midiInOpen
  102.         midiInStart
  103.         midiInClose
  104.         midiInGetErrorTextA
  105.         midiInGetNumDevs
  106.         midiInGetID
  107.         midiInStop
  108.         midiInGetDevCapsA
  109.         timeBeginPeriod
  110.         timeGetTime
  111.         timeEndPeriod
  112.     OPENGL32.dll
  113.         wglGetProcAddress
  114.         wglDeleteContext
  115.         wglMakeCurrent
  116.         wglCreateContext
  117.     KERNEL32.dll
  118.         GetLastError
  119.         GetCurrentThread
  120.         QueryPerformanceFrequency
  121.         CloseHandle
  122.         GetNativeSystemInfo
  123.         GetSystemInfo
  124.         LoadLibraryW
  125.         GetLocalTime
  126.         GetProcAddress
  127.         GlobalLock
  128.         GetCurrentProcessId
  129.         SystemTimeToFileTime
  130.         CreateProcessW
  131.         FreeLibrary
  132.         GetConsoleWindow
  133.         GetSystemTime
  134.         QueryPerformanceCounter
  135.         GlobalUnlock
  136.         LoadLibraryExW
  137.         GetExitCodeProcess
  138.         LoadLibraryA
  139.         GetSystemPowerStatus
  140.         SetConsoleTextAttribute
  141.         MultiByteToWideChar
  142.         FlushFileBuffers
  143.         GetFileSizeEx
  144.         GetTimeZoneInformation
  145.         ReadConsoleW
  146.         SetFilePointerEx
  147.         HeapReAlloc
  148.         CreatePipe
  149.         GetFileAttributesExW
  150.         EnumSystemLocalesW
  151.         GetUserDefaultLCID
  152.         IsValidLocale
  153.         GetLocaleInfoW
  154.         LCMapStringW
  155.         CompareStringW
  156.         GetCommandLineA
  157.         WriteFile
  158.         RemoveDirectoryW
  159.         MoveFileExW
  160.         FileTimeToSystemTime
  161.         SystemTimeToTzSpecificLocalTime
  162.         PeekNamedPipe
  163.         GetFileInformationByHandle
  164.         GetDriveTypeW
  165.         CreateFileW
  166.         FormatMessageW
  167.         FreeLibraryAndExitThread
  168.         ExitThread
  169.         CreateThread
  170.         ReadFile
  171.         GetFileType
  172.         SetStdHandle
  173.         DuplicateHandle
  174.         TlsFree
  175.         TlsSetValue
  176.         TlsGetValue
  177.         TlsAlloc
  178.         RtlUnwind
  179.         RaiseException
  180.         RtlPcToFileHeader
  181.         RtlUnwindEx
  182.         GetStartupInfoW
  183.         IsDebuggerPresent
  184.         InitializeSListHead
  185.         IsProcessorFeaturePresent
  186.         SetUnhandledExceptionFilter
  187.         UnhandledExceptionFilter
  188.         RtlVirtualUnwind
  189.         RtlLookupFunctionEntry
  190.         RtlCaptureContext
  191.         CreateEventW
  192.         ResetEvent
  193.         InitializeCriticalSectionAndSpinCount
  194.         GetCPInfo
  195.         GetStringTypeW
  196.         LCMapStringEx
  197.         DecodePointer
  198.         EncodePointer
  199.         GetModuleHandleW
  200.         GetConsoleMode
  201.         Sleep
  202.         LCIDToLocaleName
  203.         GetModuleHandleA
  204.         WaitForSingleObject
  205.         GetEnvironmentVariableW
  206.         SetThreadPriority
  207.         GetUserDefaultUILanguage
  208.         GetLocaleInfoEx
  209.         SetEnvironmentVariableW
  210.         GetModuleFileNameW
  211.         TerminateProcess
  212.         OutputDebugStringA
  213.         GetStdHandle
  214.         GetCurrentProcess
  215.         SetPriorityClass
  216.         GetSystemTimeAsFileTime
  217.         SetLastError
  218.         GetConsoleScreenBufferInfo
  219.         SetConsoleCtrlHandler
  220.         WideCharToMultiByte
  221.         LocalFree
  222.         GlobalAlloc
  223.         GetCommandLineW
  224.         GetConsoleOutputCP
  225.         GetFullPathNameW
  226.         IsValidCodePage
  227.         GetACP
  228.         GetOEMCP
  229.         GetEnvironmentStringsW
  230.         FreeEnvironmentStringsW
  231.         GetModuleHandleExW
  232.         WriteConsoleW
  233.         SetEndOfFile
  234.         EnterCriticalSection
  235.         LeaveCriticalSection
  236.         InitializeCriticalSection
  237.         DeleteCriticalSection
  238.         FindNextFileW
  239.         FindClose
  240.         CreateSemaphoreA
  241.         CreateEventA
  242.         VirtualFree
  243.         CreateMutexA
  244.         ReleaseMutex
  245.         HeapFree
  246.         GetTickCount64
  247.         HeapAlloc
  248.         GetProcessHeap
  249.         ReleaseSemaphore
  250.         SetEvent
  251.         TryEnterCriticalSection
  252.         ReplaceFileW
  253.         CreateDirectoryW
  254.         GetVolumeInformationW
  255.         GetLogicalDrives
  256.         FindFirstFileExW
  257.         GetFileAttributesW
  258.         DeleteFileW
  259.         GetCurrentDirectoryW
  260.         SetCurrentDirectoryW
  261.         GetTempFileNameW
  262.         GetDiskFreeSpaceExA
  263.         ExitProcess
  264.         InitializeSRWLock
  265.         ReleaseSRWLockExclusive
  266.         AcquireSRWLockExclusive
  267.         InitializeCriticalSectionEx
  268.         GetCurrentThreadId
  269.         InitializeConditionVariable
  270.         WakeConditionVariable
  271.         WakeAllConditionVariable
  272.         SleepConditionVariableCS
  273.         SleepConditionVariableSRW
  274.         WaitForSingleObjectEx
  275.         GetExitCodeThread
  276.         HeapSize
  277.     ole32.dll
  278.         CoInitialize
  279.         CoCreateInstance
  280.         PropVariantClear
  281.         CoTaskMemFree
  282.     USER32.dll
  283.         GetDC
  284.         GetRawInputDeviceInfoA
  285.         GetRawInputDeviceList
  286.         DefWindowProcW
  287.         AdjustWindowRectEx
  288.         GetKeyState
  289.         GetMessageExtraInfo
  290.         AllowSetForegroundWindow
  291.         CallWindowProcW
  292.         CloseTouchInputHandle
  293.         GetTouchInputInfo
  294.         GetWindowRect
  295.         LoadCursorA
  296.         IsWindowVisible
  297.         SetWindowPos
  298.         MessageBoxW
  299.         MonitorFromWindow
  300.         SetWindowRgn
  301.         EnumDisplayMonitors
  302.         CreateWindowExW
  303.         GetKeyboardLayoutNameA
  304.         ScreenToClient
  305.         GetSystemMetrics
  306.         SetWindowTextW
  307.         RegisterClassExW
  308.         ShowWindow
  309.         OpenClipboard
  310.         DispatchMessageW
  311.         SetTimer
  312.         DestroyIcon
  313.         RegisterTouchWindow
  314.         CreateIconIndirect
  315.         ClientToScreen
  316.         CloseClipboard
  317.         EmptyClipboard
  318.         PeekMessageW
  319.         GetKeyboardLayoutList
  320.         GetRawInputData
  321.         TrackMouseEvent
  322.         GetKeyboardLayout
  323.         CreateIconFromResource
  324.         MessageBoxA
  325.         MoveWindow
  326.         SetFocus
  327.         RegisterRawInputDevices
  328.         TranslateMessage
  329.         GetClipboardData
  330.         ClipCursor
  331.         SendMessageA
  332.         SetCapture
  333.         SetClipboardData
  334.         SetCursor
  335.         LoadIconA
  336.         FlashWindowEx
  337.         SystemParametersInfoA
  338.         GetClientRect
  339.         IsClipboardFormatAvailable
  340.         GetWindowLongPtrA
  341.         ActivateKeyboardLayout
  342.         KillTimer
  343.         SetWindowLongPtrA
  344.         ReleaseCapture
  345.         SetForegroundWindow
  346.         IsIconic
  347.         SetCursorPos
  348.         ReleaseDC
  349.         GetCursorPos
  350.     GDI32.dll
  351.         GetObjectA
  352.         ChoosePixelFormat
  353.         SetPixelFormat
  354.         SwapBuffers
  355.         DeleteObject
  356.         CreateBitmap
  357.         SetTextColor
  358.         BitBlt
  359.         CreateCompatibleBitmap
  360.         SelectObject
  361.         CreateCompatibleDC
  362.         CreatePolygonRgn
  363.         GetDeviceCaps
  364.         CreateRectRgn
  365.         DeleteDC
  366.         SetBkColor
  367.     SHELL32.dll
  368.         DragQueryFileW
  369.         CommandLineToArgvW
  370.         ShellExecuteW
  371.         SHGetKnownFolderPath
  372.         SHFileOperationW
  373.         DragAcceptFiles
  374.     ADVAPI32.dll
  375.         GetCurrentHwProfileA
  376.         RegOpenKeyExW
  377.         RegCloseKey
  378.         RegQueryValueExW
  379.     DINPUT8.dll
  380.         DirectInput8Create
  381.     IMM32.dll
  382.         ImmReleaseContext
  383.         ImmGetContext
  384.         ImmAssociateContext
  385.         ImmSetCompositionWindow
  386.     AVRT.dll
  387.         AvSetMmThreadCharacteristicsA
  388.         AvSetMmThreadPriority
  389.     dwmapi.dll
  390.         DwmIsCompositionEnabled
  391.         DwmEnableBlurBehindWindow
  392.         DwmFlush
  393.     IPHLPAPI.DLL
  394.         GetBestInterfaceEx
  395.         GetAdaptersAddresses
  396.     SHLWAPI.dll
  397.         PathFileExistsW
  398.     WSOCK32.dll
  399.         ordinal: 0000000000000074
  400.         ordinal: 0000000000000097
  401.         ordinal: 000000000000000d
  402.         ordinal: 0000000000000009
  403.         ordinal: 000000000000000f
  404.         ordinal: 0000000000000003
  405.         ordinal: 0000000000000013
  406.         ordinal: 0000000000000006
  407.         ordinal: 0000000000000008
  408.         ordinal: 000000000000000e
  409.         ordinal: 000000000000006f
  410.         ordinal: 0000000000000015
  411.         ordinal: 0000000000000004
  412.         ordinal: 0000000000000017
  413.         ordinal: 0000000000000014
  414.         ordinal: 000000000000000a
  415.         ordinal: 0000000000000002
  416.         ordinal: 0000000000000010
  417.         ordinal: 0000000000000012
  418.         ordinal: 000000000000000c
  419.         ordinal: 0000000000000011
  420.         ordinal: 0000000000000073
  421.         ordinal: 0000000000000001
  422.     WS2_32.dll
  423.         freeaddrinfo
  424.         getnameinfo
  425.         inet_pton
  426.         WSAConnect
  427.         getaddrinfo
  428.     bcrypt.dll
  429.         BCryptGenRandom
  430.     steam_api64.dll
  431.         SteamAPI_UnregisterCallback
  432.         SteamGameServer_Shutdown
  433.         SteamInternal_ContextInit
  434.         SteamAPI_Shutdown
  435.         SteamInternal_FindOrCreateGameServerInterface
  436.         SteamAPI_GetHSteamUser
  437.         SteamAPI_ReleaseCurrentThreadMemory
  438.         SteamAPI_IsSteamRunning
  439.         SteamInternal_GameServer_Init
  440.         SteamAPI_RegisterCallResult
  441.         SteamAPI_RegisterCallback
  442.         SteamGameServer_GetHSteamUser
  443.         SteamAPI_RestartAppIfNecessary
  444.         SteamAPI_Init
  445.         SteamAPI_UnregisterCallResult
  446.         SteamInternal_FindOrCreateUserInterface
  447.         SteamAPI_RunCallbacks
  448. WINMM.dll: idh->e_magic != IMAGE_DOS_SIGNATURE
  449. OPENGL32.dll: idh->e_magic != IMAGE_DOS_SIGNATURE
  450. KERNEL32.dll
  451. ole32.dll: idh->e_magic != IMAGE_DOS_SIGNATURE
  452. USER32.dll: idh->e_magic != IMAGE_DOS_SIGNATURE
  453. GDI32.dll: idh->e_magic != IMAGE_DOS_SIGNATURE
  454. SHELL32.dll: idh->e_magic != IMAGE_DOS_SIGNATURE
  455. ADVAPI32.dll: idh->e_magic != IMAGE_DOS_SIGNATURE
  456. DINPUT8.dll: idh->e_magic != IMAGE_DOS_SIGNATURE
  457. IMM32.dll: idh->e_magic != IMAGE_DOS_SIGNATURE
  458. AVRT.dll: idh->e_magic != IMAGE_DOS_SIGNATURE
  459. dwmapi.dll: idh->e_magic != IMAGE_DOS_SIGNATURE
  460. IPHLPAPI.DLL: idh->e_magic != IMAGE_DOS_SIGNATURE
  461. SHLWAPI.dll: idh->e_magic != IMAGE_DOS_SIGNATURE
  462. WSOCK32.dll: idh->e_magic != IMAGE_DOS_SIGNATURE
  463. WS2_32.dll: idh->e_magic != IMAGE_DOS_SIGNATURE
  464. bcrypt.dll: idh->e_magic != IMAGE_DOS_SIGNATURE
  465. steam_api64.dll
  466.     KERNEL32.dll
  467.         TlsAlloc
  468.         TlsGetValue
  469.         TlsSetValue
  470.         TlsFree
  471.         LoadLibraryExW
  472.         OpenProcess
  473.         GetExitCodeProcess
  474.         InitializeCriticalSection
  475.         EnterCriticalSection
  476.         LeaveCriticalSection
  477.         DeleteCriticalSection
  478.         InitializeCriticalSectionAndSpinCount
  479.         LoadLibraryExA
  480.         GetModuleFileNameW
  481.         GetModuleHandleA
  482.         GetModuleHandleExW
  483.         GetCommandLineW
  484.         GetEnvironmentVariableA
  485.         SetEnvironmentVariableA
  486.         OutputDebugStringA
  487.         GetFileAttributesW
  488.         MultiByteToWideChar
  489.         WideCharToMultiByte
  490.         GetLastError
  491.         FreeLibrary
  492.         CloseHandle
  493.         GetProcAddress
  494.         SetEndOfFile
  495.         ReadConsoleW
  496.         SetEvent
  497.         ResetEvent
  498.         WaitForSingleObjectEx
  499.         CreateEventW
  500.         GetModuleHandleW
  501.         RtlCaptureContext
  502.         RtlLookupFunctionEntry
  503.         RtlVirtualUnwind
  504.         IsDebuggerPresent
  505.         UnhandledExceptionFilter
  506.         SetUnhandledExceptionFilter
  507.         GetStartupInfoW
  508.         IsProcessorFeaturePresent
  509.         QueryPerformanceCounter
  510.         GetCurrentProcessId
  511.         GetCurrentThreadId
  512.         GetSystemTimeAsFileTime
  513.         InitializeSListHead
  514.         RtlPcToFileHeader
  515.         RaiseException
  516.         RtlUnwindEx
  517.         InterlockedFlushSList
  518.         SetLastError
  519.         EncodePointer
  520.         GetCurrentProcess
  521.         TerminateProcess
  522.         ExitProcess
  523.         GetModuleFileNameA
  524.         HeapFree
  525.         HeapAlloc
  526.         GetACP
  527.         GetStdHandle
  528.         GetFileType
  529.         GetStringTypeW
  530.         LCMapStringW
  531.         FindClose
  532.         FindFirstFileExA
  533.         FindNextFileA
  534.         IsValidCodePage
  535.         GetOEMCP
  536.         GetCPInfo
  537.         GetCommandLineA
  538.         GetEnvironmentStringsW
  539.         FreeEnvironmentStringsW
  540.         GetProcessHeap
  541.         SetStdHandle
  542.         FlushFileBuffers
  543.         WriteFile
  544.         GetConsoleCP
  545.         GetConsoleMode
  546.         CreateFileW
  547.         HeapSize
  548.         HeapReAlloc
  549.         SetFilePointerEx
  550.         WriteConsoleW
  551.         ReadFile
  552.     ADVAPI32.dll
  553.         RegOpenKeyExW
  554.         RegCloseKey
  555.         RegQueryValueExW
  556.     SHELL32.dll
  557.         ShellExecuteW
  558. $
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-1 12:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表