#include <Uefi.h>
#include <IndustryStandard/AppleMachoImage.h>
#include <IndustryStandard/AppleFatBinaryImage.h>
#include <Library/BaseLib.h>
#include <Library/BaseMemoryLib.h>
#include <Library/BaseOverflowLib.h>
#include <Library/DebugLib.h>
#include <Library/OcMachoLib.h>
#include "OcMachoLibInternal.h"
Go to the source code of this file.
Functions | |
BOOLEAN | MachoInitializeContext (OUT OC_MACHO_CONTEXT *Context, IN VOID *FileData, IN UINT32 FileSize, IN UINT32 HeaderOffset, IN UINT32 InnerSize, IN BOOLEAN Is32Bit) |
MACH_HEADER_ANY * | MachoGetMachHeader (IN OUT OC_MACHO_CONTEXT *Context) |
UINT32 | MachoGetInnerSize (IN OUT OC_MACHO_CONTEXT *Context) |
VOID * | MachoGetFileData (IN OUT OC_MACHO_CONTEXT *Context) |
UINT32 | MachoGetFileSize (IN OUT OC_MACHO_CONTEXT *Context) |
UINT32 | MachoGetVmSize (IN OUT OC_MACHO_CONTEXT *Context) |
UINT64 | MachoGetLastAddress (IN OUT OC_MACHO_CONTEXT *Context) |
MACH_LOAD_COMMAND * | MachoGetNextCommand (IN OUT OC_MACHO_CONTEXT *Context, IN MACH_LOAD_COMMAND_TYPE LoadCommandType, IN CONST MACH_LOAD_COMMAND *LoadCommand OPTIONAL) |
MACH_UUID_COMMAND * | MachoGetUuid (IN OUT OC_MACHO_CONTEXT *Context) |
MACH_SEGMENT_COMMAND_ANY * | MachoGetNextSegment (IN OUT OC_MACHO_CONTEXT *Context, IN CONST MACH_SEGMENT_COMMAND_ANY *Segment OPTIONAL) |
MACH_SECTION_ANY * | MachoGetNextSection (IN OUT OC_MACHO_CONTEXT *Context, IN MACH_SEGMENT_COMMAND_ANY *Segment, IN MACH_SECTION_ANY *Section OPTIONAL) |
MACH_SECTION_ANY * | MachoGetSectionByIndex (IN OUT OC_MACHO_CONTEXT *Context, IN UINT32 Index) |
MACH_SEGMENT_COMMAND_ANY * | MachoGetSegmentByName (IN OUT OC_MACHO_CONTEXT *Context, IN CONST CHAR8 *SegmentName) |
MACH_SECTION_ANY * | MachoGetSectionByName (IN OUT OC_MACHO_CONTEXT *Context, IN MACH_SEGMENT_COMMAND_ANY *Segment, IN CONST CHAR8 *SectionName) |
MACH_SECTION_ANY * | MachoGetSegmentSectionByName (IN OUT OC_MACHO_CONTEXT *Context, IN CONST CHAR8 *SegmentName, IN CONST CHAR8 *SectionName) |
STATIC BOOLEAN | InternalInitialiseSymtabs (IN OUT OC_MACHO_CONTEXT *Context, IN MACH_SYMTAB_COMMAND *Symtab, IN MACH_DYSYMTAB_COMMAND *DySymtab) |
BOOLEAN | MachoInitialiseSymtabsExternal (IN OUT OC_MACHO_CONTEXT *Context, IN OC_MACHO_CONTEXT *SymsContext) |
BOOLEAN | InternalRetrieveSymtabs (IN OUT OC_MACHO_CONTEXT *Context) |
UINT32 | MachoGetSymbolTable (IN OUT OC_MACHO_CONTEXT *Context, OUT CONST MACH_NLIST_ANY **SymbolTable, OUT CONST CHAR8 **StringTable OPTIONAL, OUT CONST MACH_NLIST_ANY **LocalSymbols OPTIONAL, OUT UINT32 *NumLocalSymbols OPTIONAL, OUT CONST MACH_NLIST_ANY **ExternalSymbols OPTIONAL, OUT UINT32 *NumExternalSymbols OPTIONAL, OUT CONST MACH_NLIST_ANY **UndefinedSymbols OPTIONAL, OUT UINT32 *NumUndefinedSymbols OPTIONAL) |
UINT32 | MachoGetIndirectSymbolTable (IN OUT OC_MACHO_CONTEXT *Context, OUT CONST MACH_NLIST_ANY **SymbolTable) |
UINT64 | MachoRuntimeGetEntryAddress (IN VOID *Image) |
VOID * | MachoGetFilePointerByAddress (IN OUT OC_MACHO_CONTEXT *Context, IN UINT64 Address, OUT UINT32 *MaxSize OPTIONAL) |
UINT32 | MachoExpandImage (IN OC_MACHO_CONTEXT *Context, OUT UINT8 *Destination, IN UINT32 DestinationSize, IN BOOLEAN Strip, OUT UINT64 *FileOffset OPTIONAL) |
UINT32 | MachoGetExpandedImageSize (IN OC_MACHO_CONTEXT *Context) |
BOOLEAN | MachoMergeSegments (IN OUT OC_MACHO_CONTEXT *Context, IN CONST CHAR8 *Prefix) |
STATIC BOOLEAN InternalInitialiseSymtabs | ( | IN OUT OC_MACHO_CONTEXT * | Context, |
IN MACH_SYMTAB_COMMAND * | Symtab, | ||
IN MACH_DYSYMTAB_COMMAND * | DySymtab ) |
BOOLEAN InternalRetrieveSymtabs | ( | IN OUT OC_MACHO_CONTEXT * | Context | ) |
UINT32 MachoExpandImage | ( | IN OC_MACHO_CONTEXT * | Context, |
OUT UINT8 * | Destination, | ||
IN UINT32 | DestinationSize, | ||
IN BOOLEAN | Strip, | ||
OUT UINT64 *FileOffset | OPTIONAL ) |
Expand Mach-O image to Destination (make segment file sizes equal to vm sizes).
[in] | Context | Context of the Mach-O. |
[out] | Destination | Output buffer. |
[in] | DestinationSize | Output buffer maximum size. |
[in] | Strip | Output with stripped prelink commands. |
[in] | FileOffset | Pointer to the file offset of the first segment. |
UINT32 MachoGetExpandedImageSize | ( | IN OC_MACHO_CONTEXT * | Context | ) |
Calculates size required for expanded Mach-O image using MachoExpandImage().
[in] | Context | Context of the Mach-O. |
VOID * MachoGetFileData | ( | IN OUT OC_MACHO_CONTEXT * | Context | ) |
VOID * MachoGetFilePointerByAddress | ( | IN OUT OC_MACHO_CONTEXT * | Context, |
IN UINT64 | Address, | ||
OUT UINT32 *MaxSize | OPTIONAL ) |
Returns a pointer to the Mach-O file at the specified virtual address.
[in,out] | Context | Context of the Mach-O. |
[in] | Address | Virtual address to look up. |
[out] | MaxSize | Maximum data safely available from FileOffset. If NULL is returned, the output is undefined. |
UINT32 MachoGetFileSize | ( | IN OUT OC_MACHO_CONTEXT * | Context | ) |
UINT32 MachoGetIndirectSymbolTable | ( | IN OUT OC_MACHO_CONTEXT * | Context, |
OUT CONST MACH_NLIST_ANY ** | SymbolTable ) |
UINT32 MachoGetInnerSize | ( | IN OUT OC_MACHO_CONTEXT * | Context | ) |
UINT64 MachoGetLastAddress | ( | IN OUT OC_MACHO_CONTEXT * | Context | ) |
MACH_HEADER_ANY * MachoGetMachHeader | ( | IN OUT OC_MACHO_CONTEXT * | Context | ) |
MACH_LOAD_COMMAND * MachoGetNextCommand | ( | IN OUT OC_MACHO_CONTEXT * | Context, |
IN MACH_LOAD_COMMAND_TYPE | LoadCommandType, | ||
IN CONST MACH_LOAD_COMMAND *LoadCommand | OPTIONAL ) |
Retrieves the next Load Command of type LoadCommandType.
[in,out] | Context | Context of the Mach-O. |
[in] | LoadCommandType | Type of the Load Command to retrieve. |
[in] | LoadCommand | Previous Load Command. If NULL, the first match is returned. |
NULL | NULL is returned on failure. |
MACH_SECTION_ANY * MachoGetNextSection | ( | IN OUT OC_MACHO_CONTEXT * | Context, |
IN MACH_SEGMENT_COMMAND_ANY * | Segment, | ||
IN MACH_SECTION_ANY *Section | OPTIONAL ) |
MACH_SEGMENT_COMMAND_ANY * MachoGetNextSegment | ( | IN OUT OC_MACHO_CONTEXT * | Context, |
IN CONST MACH_SEGMENT_COMMAND_ANY *Segment | OPTIONAL ) |
MACH_SECTION_ANY * MachoGetSectionByIndex | ( | IN OUT OC_MACHO_CONTEXT * | Context, |
IN UINT32 | Index ) |
MACH_SECTION_ANY * MachoGetSectionByName | ( | IN OUT OC_MACHO_CONTEXT * | Context, |
IN MACH_SEGMENT_COMMAND_ANY * | Segment, | ||
IN CONST CHAR8 * | SectionName ) |
MACH_SEGMENT_COMMAND_ANY * MachoGetSegmentByName | ( | IN OUT OC_MACHO_CONTEXT * | Context, |
IN CONST CHAR8 * | SegmentName ) |
MACH_SECTION_ANY * MachoGetSegmentSectionByName | ( | IN OUT OC_MACHO_CONTEXT * | Context, |
IN CONST CHAR8 * | SegmentName, | ||
IN CONST CHAR8 * | SectionName ) |
Retrieves a section within a segment by the name of SegmentName.
[in,out] | Context | Context of the Mach-O. |
[in] | SegmentName | The name of the segment to search in. |
[in] | SectionName | The name of the section to search for. |
NULL | NULL is returned on failure. |
UINT32 MachoGetSymbolTable | ( | IN OUT OC_MACHO_CONTEXT * | Context, |
OUT CONST MACH_NLIST_ANY ** | SymbolTable, | ||
OUT CONST CHAR8 **StringTable | OPTIONAL, | ||
OUT CONST MACH_NLIST_ANY **LocalSymbols | OPTIONAL, | ||
OUT UINT32 *NumLocalSymbols | OPTIONAL, | ||
OUT CONST MACH_NLIST_ANY **ExternalSymbols | OPTIONAL, | ||
OUT UINT32 *NumExternalSymbols | OPTIONAL, | ||
OUT CONST MACH_NLIST_ANY **UndefinedSymbols | OPTIONAL, | ||
OUT UINT32 *NumUndefinedSymbols | OPTIONAL ) |
Obtain symbol tables.
[in] | Context | Context of the Mach-O. |
[out] | SymbolTable | Symbol table. |
[out] | StringTable | String table for that symbol table. |
[out] | LocalSymbols | Local symbol table. |
[out] | NumLocalSymbols | Number of symbols in local symbol table. |
[out] | ExternalSymbols | External symbol table. |
[out] | NumExternalSymbols | Number of symbols in external symbol table. |
[out] | UndefinedSymbols | Undefined symbol table. |
[out] | NumUndefinedSymbols | Number of symbols in undefined symbol table. |
MACH_UUID_COMMAND * MachoGetUuid | ( | IN OUT OC_MACHO_CONTEXT * | Context | ) |
UINT32 MachoGetVmSize | ( | IN OUT OC_MACHO_CONTEXT * | Context | ) |
BOOLEAN MachoInitialiseSymtabsExternal | ( | IN OUT OC_MACHO_CONTEXT * | Context, |
IN OC_MACHO_CONTEXT * | SymsContext ) |
BOOLEAN MachoInitializeContext | ( | OUT OC_MACHO_CONTEXT * | Context, |
IN VOID * | FileData, | ||
IN UINT32 | FileSize, | ||
IN UINT32 | HeaderOffset, | ||
IN UINT32 | InnerSize, | ||
IN BOOLEAN | Is32Bit ) |
Provides services for Mach-O headers.
Copyright (C) 2016 - 2018, Download-Fritz. All rights reserved.
This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License which accompanies this distribution. The full text of the license may be found at http://opensource.org/licenses/bsd-license.php.
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
BOOLEAN MachoMergeSegments | ( | IN OUT OC_MACHO_CONTEXT * | Context, |
IN CONST CHAR8 * | Prefix ) |