initial code for dumping imessages in a reasonable format
This commit is contained in:
@@ -0,0 +1,118 @@
|
||||
#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;
|
||||
Reference in New Issue
Block a user