|
|
1.1 ! root 1: #import <objc/Object.h> ! 2: ! 3: #import <mach/mach.h> ! 4: #import <mach-o/loader.h> ! 5: ! 6: typedef struct _Reloc { ! 7: pointer_t address; ! 8: vm_size_t size; ! 9: pointer_t data; ! 10: vm_address_t maxAddress; ! 11: long displacement; ! 12: pointer_t maxData; ! 13: struct { ! 14: unsigned short readIn : 1; ! 15: } rFlags; ! 16: } Reloc; ! 17: ! 18: #define WARPM(m, p) \ ! 19: ((typeof(p))[(m) pointerFor: (p) withSize: sizeof(*(p))]) ! 20: ! 21: #define WARP(p) WARPM(regionManager, p) ! 22: ! 23: #define WARPIDM(m, theID) \ ! 24: ([(m) pointerForID: (id)(theID)]) ! 25: ! 26: #define WARPID(theID) WARPIDM(regionManager, theID) ! 27: ! 28: #define UNWARPM(m, p) \ ! 29: ((typeof(p))[(m) originalPointerFor: (p)]) ! 30: ! 31: #define UNWARP(p) UNWARPM(regionManager, (p)) ! 32: ! 33: #define WARPSTRINGM(m, s) ((char *)[(m) pointerForString: (s)]) ! 34: ! 35: #define WARPSTRING(s) WARPSTRINGM(regionManager, s) ! 36: ! 37: @interface RelocManager : Object ! 38: { ! 39: void *relocs; ! 40: int numRelocs; ! 41: int relocSize; ! 42: struct _rmFlags { ! 43: unsigned short invalid : 1; ! 44: unsigned short shouldSortRelocs : 1; ! 45: } rmFlags; ! 46: Reloc *lastReloc; ! 47: } ! 48: ! 49: -(void *)pointerFor: (const void *)pointer; ! 50: -(void *)pointerFor: (const void *)pointer withSize: (int)size; ! 51: -(char *)pointerForString: (const char *)pointer isNullTerminated: (BOOL *)isNT; ! 52: -(char *)pointerForString: (const char *)string; ! 53: -(id)pointerForID: (const id)pointer; ! 54: -(void *)originalPointerFor: (const void *)pointer; ! 55: -(int)getDataAt: (const void *)start for: (int)numBytes into: (void *)data; ! 56: -(struct mach_header **)getMachHeaders; ! 57: -(struct mach_header **)getMachHeadersWithNames: (char ***)names; ! 58: -(struct mach_header *)getMachHeader; ! 59: -(void *)getSectData: (STR)segName section: (STR)sectName size: (int *)pSize forHeader: (struct mach_header *)header; ! 60: -(void *)getSectData: (STR)segName section: (STR)sectName size: (int *)pSize; ! 61: -(const struct section *)getSeg: (STR)segName sect: (STR)sectName; ! 62: -invalidate; ! 63: -(void)readInAllRelocs; ! 64: -(Reloc *)relocFor: (const void *)pointer; ! 65: -(Reloc *)oldRelocFor: (const void *)pointer; ! 66: -(BOOL)readInReloc: (Reloc *)reloc; ! 67: -(const struct section *)firstSection; ! 68: -(unsigned)getMaximumAddress; ! 69: -(unsigned)getMaximumAddressForHeader: (struct mach_header *)header; ! 70: -(unsigned)getMaximumTextAddress; ! 71: -(unsigned)getMaximumDataAddress; ! 72: ! 73: @end
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.