hacks/dump-imessages/iphone-dataprotection/ramdisk_tools/ioflash/ioflash.h

119 lines
3.4 KiB
C

#include <IOKit/IOKitLib.h>
#define kIOFlashStorageOptionBootPageIO 0x100
#define kIOFlashStorageOptionRawPageIO 0x002
#define kIOFlashStorageOptionXXXX 0x004
//0xC0 == kIOFlashStorageOptionUseAES | kIOFlashStorageOptionHomogenize
#define kIOFlashControllerReadPage 0x1
#define kIOFlashControllerWritePage 0x2
#define kIOFlashControllerDisableKeepout 0xa
struct kIOFlashControllerReadPageIn;
struct kIOFlashControllerOut;
//from ioflashstoragetool
CFMutableDictionaryRef MakeOneStringProp(CFStringRef key, CFStringRef value);
io_service_t _wait_for_io_service_matching_dict(CFDictionaryRef matching);
int FSDConnect(const char* name);
int FSDGetPropertyForKey(io_object_t obj, CFStringRef name, void* out, uint32_t outLen, CFMutableDictionaryRef dict);
void findPartitionLocation(CFStringRef contentHint, CFMutableDictionaryRef dict);//findNvramLocation
IOReturn FSDReadPageHelper(struct kIOFlashControllerReadPageIn* in, struct kIOFlashControllerOut* out);
IOReturn FSDReadPageWithOptions(uint32_t ceNum, uint32_t pageNum, void* buffer, void* spareBuffer, uint32_t spareSize, uint32_t options, struct kIOFlashControllerOut* out);
IOReturn FSDReadBootPage(uint32_t ceNum, uint32_t pageNum,uint32_t* buffer, struct kIOFlashControllerOut* out);
CFMutableDictionaryRef FSDGetInfo(int);
int IOFlashStorage_kernel_patch();
CFDictionaryRef nand_dump(int fd);
int dump_nand_to_socket(int fd);
int nand_proxy(int fd);
struct kIOFlashControllerReadPageIn
{
uint32_t page;
uint32_t ce;
uint32_t options;
void* buffer;
uint32_t bufferSize;
void* spare;
uint32_t spareSize;
};//sizeof = 0x1C
//sizeof=0x8
struct kIOFlashControllerOut
{
uint32_t ret1;
uint32_t ret2;
};
//sizeof=0x50 AppleIOPFMIDMACommand?
struct IOFlashCommandStruct
{
uint32_t flags0;
uint32_t flags1;
uint32_t field8;
uint32_t fieldC;
uint32_t* page_ptr;
void* bufferDesc;//IOMemoryDescriptor*
uint32_t field18;
uint32_t field1C;
uint32_t field20;
uint32_t* ce_ptr;
void* spareVA;
uint32_t spareSize;
uint32_t field30;
uint32_t field34;
uint32_t field38;
uint32_t errorCode;
uint32_t field40;
uint32_t field44;
uint32_t field48;
uint32_t field4C;
};
typedef struct IOExternalMethodArguments
{
uint32_t version;
uint32_t selector;
mach_port_t asyncWakePort;
io_user_reference_t * asyncReference;
uint32_t asyncReferenceCount;
const uint64_t * scalarInput;
uint32_t scalarInputCount;
const void * structureInput;
uint32_t structureInputSize;
//IOMemoryDescriptor * structureInputDescriptor;
void * structureInputDescriptor;
uint64_t * scalarOutput;
uint32_t scalarOutputCount;
void * structureOutput;
uint32_t structureOutputSize;
void * structureOutputDescriptor;
uint32_t structureOutputDescriptorSize;
uint32_t __reservedA;
//OSObject ** structureVariableOutputData;
void ** structureVariableOutputData;
uint32_t __reserved[30];
} IOExternalMethodArguments;
typedef struct proxy_read_cmd
{
uint32_t ce;
uint32_t page;
uint32_t spareSize;
uint32_t options;
} proxy_read_cmd;