|
|
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.