imagehlp.h
来自「这是VCF框架的代码」· C头文件 代码 · 共 2,420 行 · 第 1/5 页
H
2,420 行
/*++ BUILD Version: 0001 Increment this if a change has global effectsCopyright (c) Microsoft Corporation. All rights reserved.Module Name: imagehlp.hAbstract: This module defines the prototypes and constants required for the image help routines.Revision History:--*/#ifndef _IMAGEHLP_#define _IMAGEHLP_#if _MSC_VER > 1020#pragma once#endif// As a general principal always call the 64 bit version// of every API, if a choice exists. The 64 bit version// works great on 32 bit platforms, and is forward// compatible to 64 bit platforms.#ifdef _WIN64#ifndef _IMAGEHLP64#define _IMAGEHLP64#endif#endif#ifndef WINTRUST_H#include <wintrust.h>#endif#ifdef __cplusplusextern "C" {#endif#ifdef _IMAGEHLP_SOURCE_#define IMAGEAPI __stdcall#define DBHLP_DEPRECIATED#else#define IMAGEAPI DECLSPEC_IMPORT __stdcall#define DBHLP_DEPRECIATED DECLSPEC_DEPRECATED#endif#define DBHLPAPI IMAGEAPI#define IMAGE_SEPARATION (64*1024)typedef struct _LOADED_IMAGE { PSTR ModuleName; HANDLE hFile; PUCHAR MappedAddress;#ifdef _IMAGEHLP64 PIMAGE_NT_HEADERS64 FileHeader;#else PIMAGE_NT_HEADERS32 FileHeader;#endif PIMAGE_SECTION_HEADER LastRvaSection; ULONG NumberOfSections; PIMAGE_SECTION_HEADER Sections; ULONG Characteristics; BOOLEAN fSystemImage; BOOLEAN fDOSImage; LIST_ENTRY Links; ULONG SizeOfImage;} LOADED_IMAGE, *PLOADED_IMAGE;BOOLIMAGEAPIBindImage( IN PSTR ImageName, IN PSTR DllPath, IN PSTR SymbolPath );typedef enum _IMAGEHLP_STATUS_REASON { BindOutOfMemory, BindRvaToVaFailed, BindNoRoomInImage, BindImportModuleFailed, BindImportProcedureFailed, BindImportModule, BindImportProcedure, BindForwarder, BindForwarderNOT, BindImageModified, BindExpandFileHeaders, BindImageComplete, BindMismatchedSymbols, BindSymbolsNotUpdated} IMAGEHLP_STATUS_REASON;typedefBOOL(__stdcall *PIMAGEHLP_STATUS_ROUTINE)( IMAGEHLP_STATUS_REASON Reason, PSTR ImageName, PSTR DllName, ULONG_PTR Va, ULONG_PTR Parameter );BOOLIMAGEAPIBindImageEx( IN DWORD Flags, IN PSTR ImageName, IN PSTR DllPath, IN PSTR SymbolPath, IN PIMAGEHLP_STATUS_ROUTINE StatusRoutine );#define BIND_NO_BOUND_IMPORTS 0x00000001#define BIND_NO_UPDATE 0x00000002#define BIND_ALL_IMAGES 0x00000004#define BIND_CACHE_IMPORT_DLLS 0x00000008 // Cache dll's across // calls to BindImageEx // (same as NT 3.1->NT 4.0)BOOLIMAGEAPIReBaseImage( IN PSTR CurrentImageName, IN PSTR SymbolPath, IN BOOL fReBase, // TRUE if actually rebasing, false if only summing IN BOOL fRebaseSysfileOk, // TRUE is system images s/b rebased IN BOOL fGoingDown, // TRUE if the image s/b rebased below the given base IN ULONG CheckImageSize, // Max size allowed (0 if don't care) OUT ULONG *OldImageSize, // Returned from the header OUT ULONG_PTR *OldImageBase, // Returned from the header OUT ULONG *NewImageSize, // Image size rounded to next separation boundary IN OUT ULONG_PTR *NewImageBase, // (in) Desired new address. // (out) Next address (actual if going down) IN ULONG TimeStamp // new timestamp for image, if non-zero );BOOLIMAGEAPIReBaseImage64( IN PSTR CurrentImageName, IN PSTR SymbolPath, IN BOOL fReBase, // TRUE if actually rebasing, false if only summing IN BOOL fRebaseSysfileOk, // TRUE is system images s/b rebased IN BOOL fGoingDown, // TRUE if the image s/b rebased below the given base IN ULONG CheckImageSize, // Max size allowed (0 if don't care) OUT ULONG *OldImageSize, // Returned from the header OUT ULONG64 *OldImageBase, // Returned from the header OUT ULONG *NewImageSize, // Image size rounded to next separation boundary IN OUT ULONG64 *NewImageBase, // (in) Desired new address. // (out) Next address (actual if going down) IN ULONG TimeStamp // new timestamp for image, if non-zero );#define MAX_SYM_NAME 2000//// Define checksum return codes.//#define CHECKSUM_SUCCESS 0#define CHECKSUM_OPEN_FAILURE 1#define CHECKSUM_MAP_FAILURE 2#define CHECKSUM_MAPVIEW_FAILURE 3#define CHECKSUM_UNICODE_FAILURE 4// Define Splitsym flags.#define SPLITSYM_REMOVE_PRIVATE 0x00000001 // Remove CV types/symbols and Fixup debug // Used for creating .dbg files that ship // as part of the product.#define SPLITSYM_EXTRACT_ALL 0x00000002 // Extract all debug info from image. // Normally, FPO is left in the image // to allow stack traces through the code. // Using this switch is similar to linking // with -debug:none except the .dbg file // exists...#define SPLITSYM_SYMBOLPATH_IS_SRC 0x00000004 // The SymbolFilePath contains an alternate // path to locate the pdb.//// Define checksum function prototypes.//PIMAGE_NT_HEADERSIMAGEAPICheckSumMappedFile ( PVOID BaseAddress, DWORD FileLength, PDWORD HeaderSum, PDWORD CheckSum );DWORDIMAGEAPIMapFileAndCheckSumA ( PSTR Filename, PDWORD HeaderSum, PDWORD CheckSum );DWORDIMAGEAPIMapFileAndCheckSumW ( PWSTR Filename, PDWORD HeaderSum, PDWORD CheckSum );#ifdef UNICODE#define MapFileAndCheckSum MapFileAndCheckSumW#else#define MapFileAndCheckSum MapFileAndCheckSumA#endif // !UNICODEBOOLIMAGEAPIGetImageConfigInformation( PLOADED_IMAGE LoadedImage, PIMAGE_LOAD_CONFIG_DIRECTORY ImageConfigInformation );DWORDIMAGEAPIGetImageUnusedHeaderBytes( PLOADED_IMAGE LoadedImage, PDWORD SizeUnusedHeaderBytes );BOOLIMAGEAPISetImageConfigInformation( PLOADED_IMAGE LoadedImage, PIMAGE_LOAD_CONFIG_DIRECTORY ImageConfigInformation );// Image Integrity API's#define CERT_PE_IMAGE_DIGEST_DEBUG_INFO 0x01#define CERT_PE_IMAGE_DIGEST_RESOURCES 0x02#define CERT_PE_IMAGE_DIGEST_ALL_IMPORT_INFO 0x04#define CERT_PE_IMAGE_DIGEST_NON_PE_INFO 0x08 // include data outside the PE image#define CERT_SECTION_TYPE_ANY 0xFF // Any Certificate typetypedef PVOID DIGEST_HANDLE;typedef BOOL (WINAPI *DIGEST_FUNCTION) (DIGEST_HANDLE refdata, PBYTE pData, DWORD dwLength);BOOLIMAGEAPIImageGetDigestStream( IN HANDLE FileHandle, IN DWORD DigestLevel, IN DIGEST_FUNCTION DigestFunction, IN DIGEST_HANDLE DigestHandle );BOOLIMAGEAPIImageAddCertificate( IN HANDLE FileHandle, IN LPWIN_CERTIFICATE Certificate, OUT PDWORD Index );BOOLIMAGEAPIImageRemoveCertificate( IN HANDLE FileHandle, IN DWORD Index );BOOLIMAGEAPIImageEnumerateCertificates( IN HANDLE FileHandle, IN WORD TypeFilter, OUT PDWORD CertificateCount, IN OUT PDWORD Indices OPTIONAL, IN OUT DWORD IndexCount OPTIONAL );BOOLIMAGEAPIImageGetCertificateData( IN HANDLE FileHandle, IN DWORD CertificateIndex, OUT LPWIN_CERTIFICATE Certificate, IN OUT PDWORD RequiredLength );BOOLIMAGEAPIImageGetCertificateHeader( IN HANDLE FileHandle, IN DWORD CertificateIndex, IN OUT LPWIN_CERTIFICATE Certificateheader );PLOADED_IMAGEIMAGEAPIImageLoad( PSTR DllName, PSTR DllPath );BOOLIMAGEAPIImageUnload( PLOADED_IMAGE LoadedImage );BOOLIMAGEAPIMapAndLoad( PSTR ImageName, PSTR DllPath, PLOADED_IMAGE LoadedImage, BOOL DotDll, BOOL ReadOnly );BOOLIMAGEAPIUnMapAndLoad( PLOADED_IMAGE LoadedImage );BOOLIMAGEAPITouchFileTimes ( HANDLE FileHandle, PSYSTEMTIME pSystemTime );BOOLIMAGEAPISplitSymbols ( PSTR ImageName, PSTR SymbolsPath, PSTR SymbolFilePath, DWORD Flags // Combination of flags above );BOOLIMAGEAPIUpdateDebugInfoFile( PSTR ImageFileName, PSTR SymbolPath, PSTR DebugFilePath, PIMAGE_NT_HEADERS32 NtHeaders );BOOLIMAGEAPIUpdateDebugInfoFileEx( PSTR ImageFileName, PSTR SymbolPath, PSTR DebugFilePath, PIMAGE_NT_HEADERS32 NtHeaders, DWORD OldChecksum );HANDLEIMAGEAPIFindDebugInfoFile ( PSTR FileName, PSTR SymbolPath, PSTR DebugFilePath );typedef BOOL(CALLBACK *PFIND_DEBUG_FILE_CALLBACK)( HANDLE FileHandle, PSTR FileName, PVOID CallerData );HANDLEIMAGEAPIFindDebugInfoFileEx ( PSTR FileName, PSTR SymbolPath, PSTR DebugFilePath, PFIND_DEBUG_FILE_CALLBACK Callback, PVOID CallerData );typedef BOOL(CALLBACK *PFINDFILEINPATHCALLBACK)( PSTR filename, PVOID context );BOOLIMAGEAPISymFindFileInPath( HANDLE hprocess, LPSTR SearchPath, LPSTR FileName, PVOID id, DWORD two, DWORD three, DWORD flags, LPSTR FilePath, PFINDFILEINPATHCALLBACK callback, PVOID context );HANDLEIMAGEAPIFindExecutableImage( PSTR FileName, PSTR SymbolPath, PSTR ImageFilePath );typedef BOOL(CALLBACK *PFIND_EXE_FILE_CALLBACK)( HANDLE FileHandle, PSTR FileName, PVOID CallerData );HANDLEIMAGEAPIFindExecutableImageEx( PSTR FileName, PSTR SymbolPath, PSTR ImageFilePath, PFIND_EXE_FILE_CALLBACK Callback, PVOID CallerData );PIMAGE_NT_HEADERSIMAGEAPIImageNtHeader ( IN PVOID Base );PVOIDIMAGEAPIImageDirectoryEntryToDataEx ( IN PVOID Base, IN BOOLEAN MappedAsImage, IN USHORT DirectoryEntry, OUT PULONG Size, OUT PIMAGE_SECTION_HEADER *FoundHeader OPTIONAL );PVOIDIMAGEAPIImageDirectoryEntryToData ( IN PVOID Base, IN BOOLEAN MappedAsImage, IN USHORT DirectoryEntry, OUT PULONG Size );PIMAGE_SECTION_HEADERIMAGEAPIImageRvaToSection( IN PIMAGE_NT_HEADERS NtHeaders, IN PVOID Base, IN ULONG Rva );PVOID
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?