mirror of
https://github.com/ThatGuySam/doesitarm.git
synced 2026-05-18 06:44:46 -07:00
Add MachoNode locally
This commit is contained in:
parent
74c5000ccd
commit
d1a2a29e49
2 changed files with 783 additions and 0 deletions
308
helpers/scanner/parsers/macho-node/constants.js
Normal file
308
helpers/scanner/parsers/macho-node/constants.js
Normal file
|
|
@ -0,0 +1,308 @@
|
|||
// Adapted from https://github.com/indutny/macho/blob/master/lib/macho/constants.js
|
||||
|
||||
export const constants = {}
|
||||
|
||||
constants.cpuArch = {
|
||||
mask: 0xff000000,
|
||||
abi64: 0x01000000,
|
||||
abi32: 0x02000000
|
||||
};
|
||||
|
||||
constants.cpuType = {
|
||||
0x01: 'vax',
|
||||
0x06: 'mc680x0',
|
||||
0x07: 'i386',
|
||||
0x01000007: 'x86_64',
|
||||
0x0a: 'mc98000',
|
||||
0x0b: 'hppa',
|
||||
0x0c: 'arm',
|
||||
0x0100000c: 'arm64',
|
||||
0x0200000c: 'arm64_32',
|
||||
0x0d: 'mc88000',
|
||||
0x0e: 'sparc',
|
||||
0x0f: 'i860',
|
||||
0x10: 'alpha',
|
||||
0x12: 'powerpc',
|
||||
0x01000012: 'powerpc64'
|
||||
};
|
||||
|
||||
constants.endian = {
|
||||
0xffffffff: 'multiple',
|
||||
0: 'le',
|
||||
1: 'be'
|
||||
};
|
||||
|
||||
constants.cpuSubType = {
|
||||
mask: 0x00ffffff,
|
||||
vax: {
|
||||
0: 'all',
|
||||
1: '780',
|
||||
2: '785',
|
||||
3: '750',
|
||||
4: '730',
|
||||
5: 'I',
|
||||
6: 'II',
|
||||
7: '8200',
|
||||
8: '8500',
|
||||
9: '8600',
|
||||
10: '8650',
|
||||
11: '8800',
|
||||
12: 'III'
|
||||
},
|
||||
mc680x0: {
|
||||
1: 'all',
|
||||
2: '40',
|
||||
3: '30_only'
|
||||
},
|
||||
i386: {},
|
||||
x86_64: {
|
||||
3: 'all',
|
||||
4: 'arch1'
|
||||
},
|
||||
mips: {
|
||||
0: 'all',
|
||||
1: 'r2300',
|
||||
2: 'r2600',
|
||||
3: 'r2800',
|
||||
4: 'r2000a',
|
||||
5: 'r2000',
|
||||
6: 'r3000a',
|
||||
7: 'r3000'
|
||||
},
|
||||
mc98000: {
|
||||
0: 'all',
|
||||
1: 'mc98601'
|
||||
},
|
||||
hppa: {
|
||||
0: 'all',
|
||||
1: '7100lc'
|
||||
},
|
||||
mc88000: {
|
||||
0: 'all',
|
||||
1: 'mc88100',
|
||||
2: 'mc88110'
|
||||
},
|
||||
sparc: {
|
||||
0: 'all'
|
||||
},
|
||||
i860: {
|
||||
0: 'all',
|
||||
1: '860'
|
||||
},
|
||||
powerpc: {
|
||||
0: 'all',
|
||||
1: '601',
|
||||
2: '602',
|
||||
3: '603',
|
||||
4: '603e',
|
||||
5: '603ev',
|
||||
6: '604',
|
||||
7: '604e',
|
||||
8: '620',
|
||||
9: '750',
|
||||
10: '7400',
|
||||
11: '7450',
|
||||
100: '970'
|
||||
},
|
||||
arm: {
|
||||
0: 'all',
|
||||
5: 'v4t',
|
||||
6: 'v6',
|
||||
7: 'v5tej',
|
||||
8: 'xscale',
|
||||
9: 'v7',
|
||||
10: 'v7f',
|
||||
11: 'v7s',
|
||||
12: 'v7k',
|
||||
14: 'v6m',
|
||||
15: 'v7m',
|
||||
16: 'v7em'
|
||||
},
|
||||
arm64: {
|
||||
0: 'all',
|
||||
1: 'v8',
|
||||
2: 'e'
|
||||
},
|
||||
arm64_32: {
|
||||
1: 'all'
|
||||
}
|
||||
};
|
||||
|
||||
function cpuSubtypeIntel(a, b, name) {
|
||||
constants.cpuSubType.i386[a + (b << 4)] = name;
|
||||
}
|
||||
|
||||
[
|
||||
[3, 0, 'all'],
|
||||
[4, 0, '486'],
|
||||
[4, 8, '486sx'],
|
||||
[5, 0, '586'],
|
||||
[6, 1, 'pentpro'],
|
||||
[6, 3, 'pentII_m3'],
|
||||
[6, 5, 'pentII_m5'],
|
||||
[7, 6, 'celeron'],
|
||||
[7, 7, 'celeron_mobile'],
|
||||
[8, 0, 'pentium_3'],
|
||||
[8, 1, 'pentium_3_m'],
|
||||
[8, 2, 'pentium_3_xeon'],
|
||||
[9, 0, 'pentium_m'],
|
||||
[10, 0, 'pentium_4'],
|
||||
[10, 1, 'pentium_4_m'],
|
||||
[11, 0, 'itanium'],
|
||||
[11, 1, 'itanium_2'],
|
||||
[12, 0, 'xeon'],
|
||||
[12, 1, 'xeon_mp']
|
||||
].forEach(function(item) {
|
||||
cpuSubtypeIntel(item[0], item[1], item[2]);
|
||||
});
|
||||
|
||||
constants.fileType = {
|
||||
1: 'object',
|
||||
2: 'execute',
|
||||
3: 'fvmlib',
|
||||
4: 'core',
|
||||
5: 'preload',
|
||||
6: 'dylib',
|
||||
7: 'dylinker',
|
||||
8: 'bundle',
|
||||
9: 'dylib_stub',
|
||||
10: 'dsym',
|
||||
11: 'kext'
|
||||
};
|
||||
|
||||
constants.flags = {
|
||||
0x1: 'noundefs',
|
||||
0x2: 'incrlink',
|
||||
0x4: 'dyldlink',
|
||||
0x8: 'bindatload',
|
||||
0x10: 'prebound',
|
||||
0x20: 'split_segs',
|
||||
0x40: 'lazy_init',
|
||||
0x80: 'twolevel',
|
||||
0x100: 'force_flat',
|
||||
0x200: 'nomultidefs',
|
||||
0x400: 'nofixprebinding',
|
||||
0x800: 'prebindable',
|
||||
0x1000: 'allmodsbound',
|
||||
0x2000: 'subsections_via_symbols',
|
||||
0x4000: 'canonical',
|
||||
0x8000: 'weak_defines',
|
||||
0x10000: 'binds_to_weak',
|
||||
0x20000: 'allow_stack_execution',
|
||||
0x40000: 'root_safe',
|
||||
0x80000: 'setuid_safe',
|
||||
0x100000: 'reexported_dylibs',
|
||||
0x200000: 'pie',
|
||||
0x400000: 'dead_strippable_dylib',
|
||||
0x800000: 'has_tlv_descriptors',
|
||||
0x1000000: 'no_heap_execution'
|
||||
};
|
||||
|
||||
constants.cmdType = {
|
||||
0x80000000: 'req_dyld',
|
||||
0x1: 'segment',
|
||||
0x2: 'symtab',
|
||||
0x3: 'symseg',
|
||||
0x4: 'thread',
|
||||
0x5: 'unixthread',
|
||||
0x6: 'loadfvmlib',
|
||||
0x7: 'idfvmlib',
|
||||
0x8: 'ident',
|
||||
0x9: 'fmvfile',
|
||||
0xa: 'prepage',
|
||||
0xb: 'dysymtab',
|
||||
0xc: 'load_dylib',
|
||||
0xd: 'id_dylib',
|
||||
0xe: 'load_dylinker',
|
||||
0xf: 'id_dylinker',
|
||||
0x10: 'prebound_dylib',
|
||||
0x11: 'routines',
|
||||
0x12: 'sub_framework',
|
||||
0x13: 'sub_umbrella',
|
||||
0x14: 'sub_client',
|
||||
0x15: 'sub_library',
|
||||
0x16: 'twolevel_hints',
|
||||
0x17: 'prebind_cksum',
|
||||
|
||||
0x80000018: 'load_weak_dylib',
|
||||
0x19: 'segment_64',
|
||||
0x1a: 'routines_64',
|
||||
0x1b: 'uuid',
|
||||
0x8000001c: 'rpath',
|
||||
0x1d: 'code_signature',
|
||||
0x1e: 'segment_split_info',
|
||||
0x8000001f: 'reexport_dylib',
|
||||
0x20: 'lazy_load_dylib',
|
||||
0x21: 'encryption_info',
|
||||
0x80000022: 'dyld_info',
|
||||
0x80000023: 'dyld_info_only',
|
||||
0x24: 'version_min_macosx',
|
||||
0x25: 'version_min_iphoneos',
|
||||
0x26: 'function_starts',
|
||||
0x27: 'dyld_environment',
|
||||
0x80000028: 'main',
|
||||
0x29: 'data_in_code',
|
||||
0x2a: 'source_version',
|
||||
0x2b: 'dylib_code_sign_drs',
|
||||
0x2c: 'encryption_info_64',
|
||||
0x2d: 'linker_option'
|
||||
};
|
||||
|
||||
constants.prot = {
|
||||
none: 0,
|
||||
read: 1,
|
||||
write: 2,
|
||||
execute: 4
|
||||
};
|
||||
|
||||
constants.segFlag = {
|
||||
1: 'highvm',
|
||||
2: 'fvmlib',
|
||||
4: 'noreloc',
|
||||
8: 'protected_version_1'
|
||||
};
|
||||
|
||||
constants.segTypeMask = 0xff;
|
||||
constants.segType = {
|
||||
0: 'regular',
|
||||
1: 'zerofill',
|
||||
2: 'cstring_literals',
|
||||
3: '4byte_literals',
|
||||
4: '8byte_literals',
|
||||
5: 'literal_pointers',
|
||||
6: 'non_lazy_symbol_pointers',
|
||||
7: 'lazy_symbol_pointers',
|
||||
8: 'symbol_stubs',
|
||||
9: 'mod_init_func_pointers',
|
||||
0xa: 'mod_term_func_pointers',
|
||||
0xb: 'coalesced',
|
||||
0xc: 'gb_zerofill',
|
||||
0xd: 'interposing',
|
||||
0xe: '16byte_literals',
|
||||
0xf: 'dtrace_dof',
|
||||
0x10: 'lazy_dylib_symbol_pointers',
|
||||
0x11: 'thread_local_regular',
|
||||
0x12: 'thread_local_zerofill',
|
||||
0x13: 'thread_local_variables',
|
||||
0x14: 'thread_local_variable_pointers',
|
||||
0x15: 'thread_local_init_function_pointers'
|
||||
};
|
||||
|
||||
constants.segAttrUsrMask = 0xff000000;
|
||||
constants.segAttrUsr = {
|
||||
'-2147483648': 'pure_instructions',
|
||||
0x40000000: 'no_toc',
|
||||
0x20000000: 'strip_static_syms',
|
||||
0x10000000: 'no_dead_strip',
|
||||
0x08000000: 'live_support',
|
||||
0x04000000: 'self_modifying_code',
|
||||
0x02000000: 'debug'
|
||||
};
|
||||
|
||||
constants.segAttrSysMask = 0x00ffff00;
|
||||
constants.segAttrSys = {
|
||||
0x400: 'some_instructions',
|
||||
0x200: 'ext_reloc',
|
||||
0x100: 'loc_reloc'
|
||||
};
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue