SlideShare une entreprise Scribd logo
1  sur  81
Télécharger pour lire hors ligne
Ton Mach-O en strings
devant Prisu
Stéphane
Mach-Oolique anonyme
“Houston, on a un problème…”
Des plugins, des plugins
et encore des plugins…
DesktopPictures
ScreenEffects
DesktopPictures
ScreenEffects
ScreenEffects
Cyclone.xcodeproj Plasma.xcodeproj Solar Winds.xcodeproj
Cyclone.xcodeproj Plasma.xcodeproj Solar Winds.xcodeproj
github.com/…/cyclone github.com/…/plasma github.com/…/solarwinds
Cyclone.xcodeproj Plasma.xcodeproj Solar Winds.xcodeproj
github.com/…/cyclone github.com/…/plasma github.com/…/solarwinds
github.com/…/rsscommon
submodules submodules
RSSWindow
RSSAboutBoxWindowController RSSAboutBoxWindowController.xib
RSSSettings RSSSecondaryBox
RSSCollectionView RSSCollectionViewItem RSSStandardSettingsView.xib
1 #import "RSSAboutBoxWindowController.h"
2
3 @interface RSSAboutBoxWindowController ()
4 {
5 ...
6 }
7
8 @end
9
10 @implementation RSSAboutBoxWindowController
11
12 - (NSString *)windowNibName
13 {
14 return @"RSSAboutBoxWindowController";
15 }
16
...
RSSAboutBoxWindowController.m RSSStandardSettingsView.xib
Solutions possibles
et imaginables surtout
Framework partagé
Framework partagé
Noms uniques dans le code source
Noms uniques dans le code source
Noms uniques dans l’exécutable
Refactorisation allégée de nib
binary property list
Collection Object Rechercher / Remplacer.nib .nib
Refactorisation allégée d’exécutable
Mach-O file
Mach-O
0000000 cf fa ed fe
0000010 15 00 00 00
0000020 19 00 00 00
0000030 00 00 00 00
0000040 00 d0 00 00
0000050 00 d0 00 00
0000060 0b 00 00 00
0000070 00 00 00 00
Tampon mémoire Rechercher / Remplacer
0000000 cf fa ed fe
0000010 15 00 00 00
0000020 19 00 00 00
0000030 00 00 00 00
0000040 00 d0 00 00
0000050 00 d0 00 00
0000060 0b 00 00 00
0000070 00 00 00 00
Mach-O
Mach-O Mach-O
cf fa ed fe
15 00 00 00
19 00 00 00
00 00 00 00
00 d0 00 00
00 d0 00 00
0b 00 00 00
00 00 00 00
Structure analysée
00 00 00 00
b6 88 00 00
00 00 00 00
c0 88 00 00
00 00 00 00
c5 88 00 00
00 00 00 00
c9 88 00 00
Rechercher / Remplacer
$ man Mach-O
et non pas l’inverse
Mach-O file
1 architecture
Mach-O file
1 architecture
Mach-O file
1 architecture
Mach-O file
1 architecture
FAT header
Mach-O file
1 architecture
Mach-O file
1 architecture
FAT header
struct fat_header
{
uint32_t magic;
uint32_t nfat_arch;
};
struct fat_arch
{
cpu_type_t cputype;
cpu_subtype_t cpusubtype;
uint32_t offset;
uint32_t size;
uint32_t align;
};
0xcafebabe
BIG ENDIAN
CPU_TYPE_ARM
CPU_SUBTYPE_ARM_V7F
struct fat_arch
{
cpu_type_t cputype;
cpu_subtype_t cpusubtype;
uint32_t offset;
uint32_t size;
uint32_t align;
};
2
Mach-O file
1 architecture
Mach-O file
1 architecture
FAT header
Mach-O file
Header
Data
Load 

Commands
Header
Data
Load 

Commands
struct mach_header_64 {
uint32_t magic;
cpu_type_t cputype;
cpu_subtype_t cpusubtype;
uint32_t filetype;
uint32_t ncmds;
uint32_t sizeofcmds;
uint32_t flags;
uint32_t reserved;
};
0xfeedfacf
CPU_TYPE_ARM
CPU_SUBTYPE_ARM_V7F
BIG ENDIAN | LITTLE ENDIAN
MH_EXECUTE
Header
Data
Load 

Commands
Header
Data
Load 

Commands
Data
Load Command
Load Command
Load Command
Load Command
struct load_command {
uint32_t cmd;
uint32_t cmdsize;
};
Data
Load Command
Load Command
Load Command
Load Command
struct load_command {
uint32_t cmd;
uint32_t cmdsize;
};
struct dylinker_command {
uint32_t cmd;
uint32_t cmdsize;
union lc_str name
};
LC_LOAD_DYLINKER
Data
Load Command
Load Command
Load Command
Load Command
struct load_command {
uint32_t cmd;
uint32_t cmdsize;
};
struct dylinker_command {
uint32_t cmd;
uint32_t cmdsize;
union lc_str name
};
LC_LOAD_DYLINKER
struct dylib_command {
uint32_t cmd;
uint32_t cmdsize;
struct dylib dylib;
};
LC_LOAD_DYLIB
Data
Load Command
Load Command
Load Command
Load Command
struct load_command {
uint32_t cmd;
uint32_t cmdsize;
};
struct dylinker_command {
uint32_t cmd;
uint32_t cmdsize;
union lc_str name
};
LC_LOAD_DYLINKER
struct dylib_command {
uint32_t cmd;
uint32_t cmdsize;
struct dylib dylib;
};
LC_LOAD_DYLIB
struct segment_command_64 {
uint32_t cmd;
uint32_t cmdsize;
char segname[16];
uint64_t vmaddr;
uint64_t vmsize;
uint64_t fileoff;
uint64_t filesize;
vm_prot_t maxprot;
vm_prot_t initprot;
uint32_t nsects;
uint32_t flags;
};
LC_SEGMENT_64
“__TEXT”Data
Section
Section
Section
Segment
Load Command
Load Command
Load Command
Load Command
struct load_command {
uint32_t cmd;
uint32_t cmdsize;
};
struct dylinker_command {
uint32_t cmd;
uint32_t cmdsize;
union lc_str name
};
LC_LOAD_DYLINKER
struct dylib_command {
uint32_t cmd;
uint32_t cmdsize;
struct dylib dylib;
};
LC_LOAD_DYLIB
struct segment_command_64 {
uint32_t cmd;
uint32_t cmdsize;
char segname[16];
uint64_t vmaddr;
uint64_t vmsize;
uint64_t fileoff;
uint64_t filesize;
vm_prot_t maxprot;
vm_prot_t initprot;
uint32_t nsects;
uint32_t flags;
};
LC_SEGMENT_64
“__TEXT”Data
Section
Section
Section
Segment
Load Command
Load Command
Load Command
Load Command
struct segment_command {
uint32_t cmd;
uint32_t cmdsize;
char segname[16];
uint32_t vmaddr;
uint32_t vmsize;
struct load_command {
uint32_t cmd;
uint32_t cmdsize;
};
struct dylinker_command {
uint32_t cmd;
uint32_t cmdsize;
union lc_str name
};
struct dylib_command {
uint32_t cmd;
uint32_t cmdsize;
struct dylib dylib;
};
struct segment_command_64 {
uint32_t cmd;
uint32_t cmdsize;
char segname[16];
uint64_t vmaddr;
uint64_t vmsize;
uint64_t fileoff;
uint64_t filesize;
vm_prot_t maxprot;
vm_prot_t initprot;
uint32_t nsects;
uint32_t flags;
};
Data
Section
Section
Section
Segment
Load Command
Load Command
Load Command
Load Command
struct segment_command {
uint32_t cmd;
uint32_t cmdsize;
char segname[16];
uint32_t vmaddr;
uint32_t vmsize;
Load Command
LC_SEGMENT_64
Load Command
LC_SEGMENT_64
struct segment_command_64 {
uint32_t cmd;
uint32_t cmdsize;
char segname[16];
…
uint64_t fileoff;
uint64_t filesize;
…
uint32_t nsects;
…
};
LC_SEGMENT_64
“__TEXT”
Section
Section
Section
Segment
Section
Section
Section
Segment
Section
Segment Section
Load Command
struct section_64 {
char sectname[16];
char segname[16];
uint64_t addr;
uint64_t size;
uint32_t offset;
…
uint32_t flags;
…
};
“__TEXT”
“__cstring”
struct section_64 {
char sectname[16];
char segname[16];
uint64_t addr;
uint64_t size;
uint32_t offset;
…
uint32_t flags;
…
};
“__TEXT”
“__ustring”
struct section_64 {
char sectname[16];
char segname[16];
3
LC_SEGMENT_64
Section
Segment
Section
__TEXT
__DATA
__OBJC
__PAGEZERO
__LINKEDIT
__TEXT
__DATA
__OBJC
__PAGEZERO
__LINKEDIT
__text
__cstring
__objc_classname
__objc_classlist
__objc_data
__objc_const
__objc_classrefs
__cfstring
__cat_cls_meth
__cat_inst_meth
__string_object
__cstring_object
__cls_refs
__class
__meta_class
__cls_meth
__inst_meth
__protocol
__category
__data
__TEXT
__DATA
__OBJC
__text
__cstring
__objc_classname
__objc_classlist
__objc_data
__objc_const
__objc_classrefs
__cfstring
__cat_cls_meth
__cat_inst_meth
__string_object
__cstring_object
__cls_refs
__class
__meta_class
__cls_meth
__inst_meth
__protocol
__category
__data
__TEXT
__DATA
__OBJC
__text
__cstring
__objc_classname
__objc_classlist
__objc_data
__objc_const
__objc_classrefs
__cfstring
__cat_cls_meth
__cat_inst_meth
__string_object
__cstring_object
__cls_refs
__class
__meta_class
__cls_meth
__inst_meth
__protocol
__category
__data
Obj-C 2.0
__TEXT
__DATA
__OBJC
__text
__cstring
__objc_classname
__objc_classlist
__objc_data
__objc_const
__objc_classrefs
__cfstring
__cat_cls_meth
__cat_inst_meth
__string_object
__cstring_object
__cls_refs
__class
__meta_class
__cls_meth
__inst_meth
__protocol
__category
__data
Obj-C 1.0
Recherche des noms de classes
Objective-C 2.x / 64-bit
0000da40 a0 08 01 00 00 00 00 00 18 09 01 00 00 00 00 00
0000da50 40 09 01 00 00 00 00 00 90 09 01 00 00 00 00 00
0000da60 08 0a 01 00 00 00 00 00 30 0a 01 00 00 00 00 00
0000da70 a8 0a 01 00 00 00 00 00 f8 0a 01 00 00 00 00 00
0000da80 48 0b 01 00 00 00 00 00 70 0b 01 00 00 00 00 00
0000da90 c0 0b 01 00 00 00 00 00 10 0c 01 00 00 00 00 00
__DATA, __objc_classlist
000108a0 c8 08 01 00 00 00 00 00 00 00 00 00 00 00 00 00
000108b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
000108c0 f0 dc 00 00 00 00 00 00 00 00 00 00 00 00 00 00
000108d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
000108e0 00 00 00 00 00 00 00 00 d0 da 00 00 00 00 00 00
000108f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00010900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00010910 38 dd 00 00 00 00 00 00 f0 08 01 00 00 00 00 00
........
0000da40 a0 08 01 00 00 00 00 00 18 09 01 00 00 00 00 00
0000da50 40 09 01 00 00 00 00 00 90 09 01 00 00 00 00 00
0000da60 08 0a 01 00 00 00 00 00 30 0a 01 00 00 00 00 00
0000da70 a8 0a 01 00 00 00 00 00 f8 0a 01 00 00 00 00 00
0000da80 48 0b 01 00 00 00 00 00 70 0b 01 00 00 00 00 00
0000da90 c0 0b 01 00 00 00 00 00 10 0c 01 00 00 00 00 00
__DATA, __objc_classlist
__DATA, __objc_data
000108a0 c8 08 01 00 00 00 00 00 00 00 00 00 00 00 00 00
000108b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
000108c0 f0 dc 00 00 00 00 00 00 00 00 00 00 00 00 00 00
000108d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
000108e0 00 00 00 00 00 00 00 00 d0 da 00 00 00 00 00 00
........
__DATA, __objc_data
000108a0 c8 08 01 00 00 00 00 00 00 00 00 00 00 00 00 00
000108b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
000108c0 f0 dc 00 00 00 00 00 00 00 00 00 00 00 00 00 00
000108d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
000108e0 00 00 00 00 00 00 00 00 d0 da 00 00 00 00 00 00
........
__DATA, __objc_data
000108a0 c8 08 01 00 00 00 00 00 00 00 00 00 00 00 00 00
000108b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
000108c0 f0 dc 00 00 00 00 00 00 00 00 00 00 00 00 00 00
000108d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
000108e0 00 00 00 00 00 00 00 00 d0 da 00 00 00 00 00 00
........
__DATA, __objc_data
struct objc2_class_t {
uint64_t isa;
uint64_t superclass;
uint64_t cache;
uint64_t vtable;
uint64_t data;
uint64_t reserved1;
uint64_t reserved2;
uint64_t reserved3;
};
0x000000000108c8
0x00000000000000
0x00000000000000
0x00000000000000
0x0000000000dcf0
0x00000000000000
0x00000000000000
0x00000000000000
000108a0 c8 08 01 00 00 00 00 00 00 00 00 00 00 00 00 00
000108b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
000108c0 f0 dc 00 00 00 00 00 00 00 00 00 00 00 00 00 00
000108d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
000108e0 00 00 00 00 00 00 00 00 d0 da 00 00 00 00 00 00
........
__DATA, __objc_data
........
0000dcf0 84 01 00 00 88 00 00 00 b0 00 00 00 00 00 00 00
0000dd00 55 a6 00 00 00 00 00 00 3f a6 00 00 00 00 00 00
0000dd10 18 db 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0000dd20 10 dc 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0000dd30 b8 dc 00 00 00 00 00 00 81 00 00 00 28 00 00 00
0000dd40 28 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0000dd50 58 a6 00 00 00 00 00 00 00 00 00 00 00 00 00 00
........
__DATA, __objc_const
0000dcf0 84 01 00 00 88 00 00 00 b0 00 00 00 00 00 00 00
0000dd00 55 a6 00 00 00 00 00 00 3f a6 00 00 00 00 00 00
0000dd10 18 db 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0000dd20 10 dc 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0000dd30 b8 dc 00 00 00 00 00 00 81 00 00 00 28 00 00 00
........
__DATA, __objc_const
0000dcf0 84 01 00 00 88 00 00 00 b0 00 00 00 00 00 00 00
0000dd00 55 a6 00 00 00 00 00 00 3f a6 00 00 00 00 00 00
0000dd10 18 db 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0000dd20 10 dc 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0000dd30 b8 dc 00 00 00 00 00 00 81 00 00 00 28 00 00 00
........
__DATA, __objc_const
0000dcf0 84 01 00 00 88 00 00 00 b0 00 00 00 00 00 00 00
0000dd00 55 a6 00 00 00 00 00 00 3f a6 00 00 00 00 00 00
0000dd10 18 db 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0000dd20 10 dc 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0000dd30 b8 dc 00 00 00 00 00 00 81 00 00 00 28 00 00 00
........
__DATA, __objc_const
struct objc2_class_ro_t {
uint32_t flags;
uint32_t instanceStart;
uint32_t instanceSize;
uint32_t reserved;
uint64_t iVarLayout;
uint64_t name;
uint64_t baseMethods;
uint64_t baseProtocols;
uint64_t ivars;
uint64_t weakIvarLayout;
uint64_t baseProperties;
};
0x0000000000a63f
0000dcf0 84 01 00 00 88 00 00 00 b0 00 00 00 00 00 00 00
0000dd00 55 a6 00 00 00 00 00 00 3f a6 00 00 00 00 00 00
0000dd10 18 db 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0000dd20 10 dc 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0000dd30 b8 dc 00 00 00 00 00 00 81 00 00 00 28 00 00 00
........
__DATA, __objc_const
0000a63f 52 53 53 43 6f 6c 6c 65 63 74 69 6f 6e 56 69 65
0000a64f 77 49 74 65 6d 00 04 10 00 52 53 53 57 69 6e 64
0000a65f 6f 77 00 52 53 53 53 6f 6c 61 72 57 69 6e 64 73
0000a66f 56 69 65 77 00 11 11 00 52 53 53 53 6f 6c 61 72
0000a67f 57 69 6e 64 73 53 65 74 74 69 6e 67 73 00 52 53
0000a68f 53 43 6f 6c 6c 65 63 74 69 6f 6e 56 69 65 77 49
0000a69f 74 65 6d 4c 61 62 65 6c 00 52 53 53 53 6f 6c 61
0000a6af 72 57 69 6e 64 73 43 6f 6e 66 69 67 75 72 61 74
........
__TEXT, __objc_classname
0000dcf0 84 01 00 00 88 00 00 00 b0 00 00 00 00 00 00 00
0000dd00 55 a6 00 00 00 00 00 00 3f a6 00 00 00 00 00 00
0000dd10 18 db 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0000dd20 10 dc 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0000dd30 b8 dc 00 00 00 00 00 00 81 00 00 00 28 00 00 00
........
__DATA, __objc_const
0000a63f R S S C o l l e c t i o n V i e
0000a64f w I t e m 00 04 10 00 R S S W i n d
0000a65f o w 00 R S S S o l a r W i n d s
0000a66f V i e w 00 11 11 00 R S S S o l a r
0000a67f W i n d s S e t t i n g s 00 R S
0000a68f S C o l l e c t i o n V i e w I
0000a69f t e m L a b e l 00 R S S S o l a
0000a6af r W i n d s C o n f i g u r a t
........
__TEXT, __objc_classname
Recherche des chaînes de caractères
Objective-C 2.x / 64-bit
0000d4a0 00 00 00 00 00 00 00 00 c8 07 00 00 00 00 00 00
0000d4b0 b6 88 00 00 00 00 00 00 09 00 00 00 00 00 00 00
0000d4c0 00 00 00 00 00 00 00 00 c8 07 00 00 00 00 00 00
0000d4d0 c0 88 00 00 00 00 00 00 04 00 00 00 00 00 00 00
0000d4e0 00 00 00 00 00 00 00 00 c8 07 00 00 00 00 00 00
........
__DATA, __cfstring
0000d4a0 00 00 00 00 00 00 00 00 c8 07 00 00 00 00 00 00
0000d4b0 b6 88 00 00 00 00 00 00 09 00 00 00 00 00 00 00
0000d4c0 00 00 00 00 00 00 00 00 c8 07 00 00 00 00 00 00
0000d4d0 c0 88 00 00 00 00 00 00 04 00 00 00 00 00 00 00
0000d4e0 00 00 00 00 00 00 00 00 c8 07 00 00 00 00 00 00
........
__DATA, __cfstring
0000d4a0 00 00 00 00 00 00 00 00 c8 07 00 00 00 00 00 00
0000d4b0 b6 88 00 00 00 00 00 00 09 00 00 00 00 00 00 00
0000d4c0 00 00 00 00 00 00 00 00 c8 07 00 00 00 00 00 00
0000d4d0 c0 88 00 00 00 00 00 00 04 00 00 00 00 00 00 00
0000d4e0 00 00 00 00 00 00 00 00 c8 07 00 00 00 00 00 00
........
__DATA, __cfstring
struct cfstring_record_64_t
{
uint64_t reserved;
uint64_t encoding;
uint64_t address;
uint64_t length;
};
0x00000000000000
0x000000000007c8
0x000000000088b6
0x00000000000009
= ASCII
0000d4a0 00 00 00 00 00 00 00 00 c8 07 00 00 00 00 00 00
0000d4b0 b6 88 00 00 00 00 00 00 09 00 00 00 00 00 00 00
0000d4c0 00 00 00 00 00 00 00 00 c8 07 00 00 00 00 00 00
0000d4d0 c0 88 00 00 00 00 00 00 04 00 00 00 00 00 00 00
0000d4e0 00 00 00 00 00 00 00 00 c8 07 00 00 00 00 00 00
........
__DATA, __cfstring
000088b6 74 68 75 6d 62 6e 61 69 6c 00 6e 61 6d 65 00 74
000088c6 61 67 00 00 54 40 22 4e 53 53 74 72 69 6e 67 22
000088d6 2c 26 2c 4e 2c 56 5f 74 68 75 6d 62 6e 61 69 6c
........
........
00008d16 51 38 5e 63 31 36 00 52 53 53 41 62 6f 75 74 42
00008d26 6f 78 57 69 6e 64 6f 77 43 6f 6e 74 72 6f 6c 6c
00008d36 65 72 00 43 46 42 75 6e 64 6c 65 4e 61 6d 65 00
........
__TEXT, __cstring
0000d4a0 00 00 00 00 00 00 00 00 c8 07 00 00 00 00 00 00
0000d4b0 b6 88 00 00 00 00 00 00 09 00 00 00 00 00 00 00
0000d4c0 00 00 00 00 00 00 00 00 c8 07 00 00 00 00 00 00
0000d4d0 c0 88 00 00 00 00 00 00 04 00 00 00 00 00 00 00
0000d4e0 00 00 00 00 00 00 00 00 c8 07 00 00 00 00 00 00
........
__DATA, __cfstring
000088b6 t h u m b n a i l 00 n a m e 00 t
000088c6 a g 00 00 54 40 " N S S t r i n g "
000088d6 2c 26 2c 4e 2c 56 _ t h u m b n a i l
........
........
00008d16 51 38 5e 63 31 36 00 R S S A b o u t B
00008d26 o x W i n d o w C o n t r o l l
00008d36 e r 00 C F B u n d l e N a m e 00
........
__TEXT, __cstring
Références
• OS X ABI Mach-O File Format Reference
developer.apple.com/library/mac/documentation/DeveloperTools/Conceptual/MachORuntime/
• mach-o header files
/usr/include/mach-o/
• class-dump
github.com/nygard/class-dump
• otool
www.opensource.apple.com/source/cctools/cctools-829/otool/
• Really Slick Screen Savers OS X Ports
s.sudre.free.fr/Software.html
QA&

Contenu connexe

Tendances

Cocoaheads Montpellier Meetup : 3D Touch for iOS
Cocoaheads Montpellier Meetup : 3D Touch for iOSCocoaheads Montpellier Meetup : 3D Touch for iOS
Cocoaheads Montpellier Meetup : 3D Touch for iOSIdean France
 
Python sqlite3 - flask
Python   sqlite3 - flaskPython   sqlite3 - flask
Python sqlite3 - flaskEueung Mulyana
 
Daggerate your code - Write your own annotation processor
Daggerate your code - Write your own annotation processorDaggerate your code - Write your own annotation processor
Daggerate your code - Write your own annotation processorBartosz Kosarzycki
 
Vue JS @ MindDoc. The progressive road to online therapy
Vue JS @ MindDoc. The progressive road to online therapyVue JS @ MindDoc. The progressive road to online therapy
Vue JS @ MindDoc. The progressive road to online therapyDarío Blanco Iturriaga
 
Arduino、Web 到 IoT
Arduino、Web 到 IoTArduino、Web 到 IoT
Arduino、Web 到 IoTJustin Lin
 
Роман Лютиков "Web Apps Performance & JavaScript Compilers"
Роман Лютиков "Web Apps Performance & JavaScript Compilers"Роман Лютиков "Web Apps Performance & JavaScript Compilers"
Роман Лютиков "Web Apps Performance & JavaScript Compilers"Fwdays
 
ZeroNights: Automating iOS blackbox security scanning
ZeroNights: Automating iOS blackbox security scanningZeroNights: Automating iOS blackbox security scanning
ZeroNights: Automating iOS blackbox security scanningMikhail Sosonkin
 
NYU hacknight, april 6, 2016
NYU hacknight, april 6, 2016NYU hacknight, april 6, 2016
NYU hacknight, april 6, 2016Mikhail Sosonkin
 
Angular 1 + es6
Angular 1 + es6Angular 1 + es6
Angular 1 + es6장현 한
 
Treatment, Architecture and Threads
Treatment, Architecture and ThreadsTreatment, Architecture and Threads
Treatment, Architecture and ThreadsMathias Seguy
 
Unbundling the JavaScript module bundler - Codemotion Rome 2018
Unbundling the JavaScript module bundler - Codemotion Rome 2018Unbundling the JavaScript module bundler - Codemotion Rome 2018
Unbundling the JavaScript module bundler - Codemotion Rome 2018Luciano Mammino
 
A friend in need - A JS indeed
A friend in need - A JS indeedA friend in need - A JS indeed
A friend in need - A JS indeedYonatan Levin
 
QA Fest 2019. Алексей Альтер-Песоцкий. Snapshot testing with native mobile fr...
QA Fest 2019. Алексей Альтер-Песоцкий. Snapshot testing with native mobile fr...QA Fest 2019. Алексей Альтер-Песоцкий. Snapshot testing with native mobile fr...
QA Fest 2019. Алексей Альтер-Песоцкий. Snapshot testing with native mobile fr...QAFest
 
FalsyValues. Dmitry Soshnikov - ECMAScript 6
FalsyValues. Dmitry Soshnikov - ECMAScript 6FalsyValues. Dmitry Soshnikov - ECMAScript 6
FalsyValues. Dmitry Soshnikov - ECMAScript 6Dmitry Soshnikov
 
Workshop 5: JavaScript testing
Workshop 5: JavaScript testingWorkshop 5: JavaScript testing
Workshop 5: JavaScript testingVisual Engineering
 
Letswift18 워크숍#1 스위프트 클린코드와 코드리뷰
Letswift18 워크숍#1 스위프트 클린코드와 코드리뷰Letswift18 워크숍#1 스위프트 클린코드와 코드리뷰
Letswift18 워크숍#1 스위프트 클린코드와 코드리뷰Jung Kim
 

Tendances (20)

Cocoaheads Montpellier Meetup : 3D Touch for iOS
Cocoaheads Montpellier Meetup : 3D Touch for iOSCocoaheads Montpellier Meetup : 3D Touch for iOS
Cocoaheads Montpellier Meetup : 3D Touch for iOS
 
Python sqlite3 - flask
Python   sqlite3 - flaskPython   sqlite3 - flask
Python sqlite3 - flask
 
Daggerate your code - Write your own annotation processor
Daggerate your code - Write your own annotation processorDaggerate your code - Write your own annotation processor
Daggerate your code - Write your own annotation processor
 
Vue JS @ MindDoc. The progressive road to online therapy
Vue JS @ MindDoc. The progressive road to online therapyVue JS @ MindDoc. The progressive road to online therapy
Vue JS @ MindDoc. The progressive road to online therapy
 
Arduino、Web 到 IoT
Arduino、Web 到 IoTArduino、Web 到 IoT
Arduino、Web 到 IoT
 
Chainable datasource
Chainable datasourceChainable datasource
Chainable datasource
 
Роман Лютиков "Web Apps Performance & JavaScript Compilers"
Роман Лютиков "Web Apps Performance & JavaScript Compilers"Роман Лютиков "Web Apps Performance & JavaScript Compilers"
Роман Лютиков "Web Apps Performance & JavaScript Compilers"
 
ZeroNights: Automating iOS blackbox security scanning
ZeroNights: Automating iOS blackbox security scanningZeroNights: Automating iOS blackbox security scanning
ZeroNights: Automating iOS blackbox security scanning
 
NYU hacknight, april 6, 2016
NYU hacknight, april 6, 2016NYU hacknight, april 6, 2016
NYU hacknight, april 6, 2016
 
Angular 1 + es6
Angular 1 + es6Angular 1 + es6
Angular 1 + es6
 
Treatment, Architecture and Threads
Treatment, Architecture and ThreadsTreatment, Architecture and Threads
Treatment, Architecture and Threads
 
Unbundling the JavaScript module bundler - Codemotion Rome 2018
Unbundling the JavaScript module bundler - Codemotion Rome 2018Unbundling the JavaScript module bundler - Codemotion Rome 2018
Unbundling the JavaScript module bundler - Codemotion Rome 2018
 
Sniffing Mach Messages
Sniffing Mach MessagesSniffing Mach Messages
Sniffing Mach Messages
 
A friend in need - A JS indeed
A friend in need - A JS indeedA friend in need - A JS indeed
A friend in need - A JS indeed
 
developing Xul
developing Xuldeveloping Xul
developing Xul
 
QA Fest 2019. Алексей Альтер-Песоцкий. Snapshot testing with native mobile fr...
QA Fest 2019. Алексей Альтер-Песоцкий. Snapshot testing with native mobile fr...QA Fest 2019. Алексей Альтер-Песоцкий. Snapshot testing with native mobile fr...
QA Fest 2019. Алексей Альтер-Песоцкий. Snapshot testing with native mobile fr...
 
FalsyValues. Dmitry Soshnikov - ECMAScript 6
FalsyValues. Dmitry Soshnikov - ECMAScript 6FalsyValues. Dmitry Soshnikov - ECMAScript 6
FalsyValues. Dmitry Soshnikov - ECMAScript 6
 
Workshop 5: JavaScript testing
Workshop 5: JavaScript testingWorkshop 5: JavaScript testing
Workshop 5: JavaScript testing
 
Letswift18 워크숍#1 스위프트 클린코드와 코드리뷰
Letswift18 워크숍#1 스위프트 클린코드와 코드리뷰Letswift18 워크숍#1 스위프트 클린코드와 코드리뷰
Letswift18 워크숍#1 스위프트 클린코드와 코드리뷰
 
Zenly - Reverse geocoding
Zenly - Reverse geocodingZenly - Reverse geocoding
Zenly - Reverse geocoding
 

En vedette

Talk KVO with rac by Philippe Converset
Talk KVO with rac by Philippe ConversetTalk KVO with rac by Philippe Converset
Talk KVO with rac by Philippe ConversetCocoaHeads France
 
Code flow - Cocoaheads paris
Code flow - Cocoaheads parisCode flow - Cocoaheads paris
Code flow - Cocoaheads parisCocoaHeads France
 
Collection pipeline par Mathieu Godart
Collection pipeline par  Mathieu GodartCollection pipeline par  Mathieu Godart
Collection pipeline par Mathieu GodartCocoaHeads France
 
App Transport Security by Nicolas lauquin
App Transport Security by Nicolas lauquinApp Transport Security by Nicolas lauquin
App Transport Security by Nicolas lauquinCocoaHeads France
 
NSLogger network logging extension
NSLogger network logging extensionNSLogger network logging extension
NSLogger network logging extensionCocoaHeads France
 
How javascript core helped PAW to move from a small app to an extensible tool
How javascript core helped PAW to move from a small app to an extensible toolHow javascript core helped PAW to move from a small app to an extensible tool
How javascript core helped PAW to move from a small app to an extensible toolCocoaHeads France
 
BlaBlaCar et la mise en place d'une fonctionnalité FlagFeature
BlaBlaCar et la mise en place d'une fonctionnalité FlagFeatureBlaBlaCar et la mise en place d'une fonctionnalité FlagFeature
BlaBlaCar et la mise en place d'une fonctionnalité FlagFeatureCocoaHeads France
 
Swift Sequences & Collections
Swift Sequences & CollectionsSwift Sequences & Collections
Swift Sequences & CollectionsCocoaHeads France
 
Genius scan - Du boostrap à 20 millions d’utilisateurs, techniques et outils ...
Genius scan - Du boostrap à 20 millions d’utilisateurs, techniques et outils ...Genius scan - Du boostrap à 20 millions d’utilisateurs, techniques et outils ...
Genius scan - Du boostrap à 20 millions d’utilisateurs, techniques et outils ...CocoaHeads France
 

En vedette (20)

Talk KVO with rac by Philippe Converset
Talk KVO with rac by Philippe ConversetTalk KVO with rac by Philippe Converset
Talk KVO with rac by Philippe Converset
 
Code flow - Cocoaheads paris
Code flow - Cocoaheads parisCode flow - Cocoaheads paris
Code flow - Cocoaheads paris
 
Revue des annonces WWDC2015
Revue des annonces WWDC2015Revue des annonces WWDC2015
Revue des annonces WWDC2015
 
Collection pipeline par Mathieu Godart
Collection pipeline par  Mathieu GodartCollection pipeline par  Mathieu Godart
Collection pipeline par Mathieu Godart
 
Couverture de code
Couverture de codeCouverture de code
Couverture de code
 
App Transport Security by Nicolas lauquin
App Transport Security by Nicolas lauquinApp Transport Security by Nicolas lauquin
App Transport Security by Nicolas lauquin
 
App-resizer Library
App-resizer LibraryApp-resizer Library
App-resizer Library
 
Mastering Interface Builder
Mastering Interface BuilderMastering Interface Builder
Mastering Interface Builder
 
NSLogger network logging extension
NSLogger network logging extensionNSLogger network logging extension
NSLogger network logging extension
 
How javascript core helped PAW to move from a small app to an extensible tool
How javascript core helped PAW to move from a small app to an extensible toolHow javascript core helped PAW to move from a small app to an extensible tool
How javascript core helped PAW to move from a small app to an extensible tool
 
Conférence DotSwift 2016
Conférence DotSwift 2016Conférence DotSwift 2016
Conférence DotSwift 2016
 
BlaBlaCar et la mise en place d'une fonctionnalité FlagFeature
BlaBlaCar et la mise en place d'une fonctionnalité FlagFeatureBlaBlaCar et la mise en place d'une fonctionnalité FlagFeature
BlaBlaCar et la mise en place d'une fonctionnalité FlagFeature
 
POI clusturing
POI clusturingPOI clusturing
POI clusturing
 
3D Touch
3D Touch3D Touch
3D Touch
 
Swift Sequences & Collections
Swift Sequences & CollectionsSwift Sequences & Collections
Swift Sequences & Collections
 
Genius scan - Du boostrap à 20 millions d’utilisateurs, techniques et outils ...
Genius scan - Du boostrap à 20 millions d’utilisateurs, techniques et outils ...Genius scan - Du boostrap à 20 millions d’utilisateurs, techniques et outils ...
Genius scan - Du boostrap à 20 millions d’utilisateurs, techniques et outils ...
 
Découverte de HomeKit
Découverte de HomeKitDécouverte de HomeKit
Découverte de HomeKit
 
Swift open source
Swift open sourceSwift open source
Swift open source
 
Apple Search Optimization
Apple Search OptimizationApple Search Optimization
Apple Search Optimization
 
Project Entourage
Project EntourageProject Entourage
Project Entourage
 

Similaire à Mach-O par Stéphane Sudre

Troubleshooting Tips and Tricks for Database 19c ILOUG Feb 2020
Troubleshooting Tips and Tricks for Database 19c   ILOUG Feb 2020Troubleshooting Tips and Tricks for Database 19c   ILOUG Feb 2020
Troubleshooting Tips and Tricks for Database 19c ILOUG Feb 2020Sandesh Rao
 
Troubleshooting Tips and Tricks for Database 19c - Sangam 2019
Troubleshooting Tips and Tricks for Database 19c - Sangam 2019Troubleshooting Tips and Tricks for Database 19c - Sangam 2019
Troubleshooting Tips and Tricks for Database 19c - Sangam 2019Sandesh Rao
 
Bsides
BsidesBsides
Bsidesm j
 
[DefCon 2016] I got 99 Problems, but 
Little Snitch ain’t one!
[DefCon 2016] I got 99 Problems, but 
Little Snitch ain’t one![DefCon 2016] I got 99 Problems, but 
Little Snitch ain’t one!
[DefCon 2016] I got 99 Problems, but 
Little Snitch ain’t one!Synack
 
nullcon 2011 - Memory analysis – Looking into the eye of the bits
nullcon 2011 - Memory analysis – Looking into the eye of the bitsnullcon 2011 - Memory analysis – Looking into the eye of the bits
nullcon 2011 - Memory analysis – Looking into the eye of the bitsn|u - The Open Security Community
 
Moving beyond moving bytes
Moving beyond moving bytesMoving beyond moving bytes
Moving beyond moving bytesSuneel Marthi
 
Flink Forward Berlin 2017: Joey Frazee, Suneel Marthi - Moving Beyond Moving ...
Flink Forward Berlin 2017: Joey Frazee, Suneel Marthi - Moving Beyond Moving ...Flink Forward Berlin 2017: Joey Frazee, Suneel Marthi - Moving Beyond Moving ...
Flink Forward Berlin 2017: Joey Frazee, Suneel Marthi - Moving Beyond Moving ...Flink Forward
 
Writing Metasploit Plugins
Writing Metasploit PluginsWriting Metasploit Plugins
Writing Metasploit Pluginsamiable_indian
 
APEX Connect 2019 - array/bulk processing in PLSQL
APEX Connect 2019 - array/bulk processing in PLSQLAPEX Connect 2019 - array/bulk processing in PLSQL
APEX Connect 2019 - array/bulk processing in PLSQLConnor McDonald
 
OSDC 2017 - Werner Fischer - Linux performance profiling and monitoring
OSDC 2017 - Werner Fischer - Linux performance profiling and monitoringOSDC 2017 - Werner Fischer - Linux performance profiling and monitoring
OSDC 2017 - Werner Fischer - Linux performance profiling and monitoringNETWAYS
 
OSMC 2015: Linux Performance Profiling and Monitoring by Werner Fischer
OSMC 2015: Linux Performance Profiling and Monitoring by Werner FischerOSMC 2015: Linux Performance Profiling and Monitoring by Werner Fischer
OSMC 2015: Linux Performance Profiling and Monitoring by Werner FischerNETWAYS
 
OSMC 2015 | Linux Performance Profiling and Monitoring by Werner Fischer
OSMC 2015 | Linux Performance Profiling and Monitoring by Werner FischerOSMC 2015 | Linux Performance Profiling and Monitoring by Werner Fischer
OSMC 2015 | Linux Performance Profiling and Monitoring by Werner FischerNETWAYS
 
Anomalies in X-Ray Engine
Anomalies in X-Ray EngineAnomalies in X-Ray Engine
Anomalies in X-Ray EnginePVS-Studio
 
Introduction to Assembly Language
Introduction to Assembly LanguageIntroduction to Assembly Language
Introduction to Assembly LanguageMotaz Saad
 
Shrimp: A Rather Practical Example Of Application Development With RESTinio a...
Shrimp: A Rather Practical Example Of Application Development With RESTinio a...Shrimp: A Rather Practical Example Of Application Development With RESTinio a...
Shrimp: A Rather Practical Example Of Application Development With RESTinio a...Yauheni Akhotnikau
 
Porting Valgrind to NetBSD and OpenBSD by Masao Uebayashi
Porting Valgrind to NetBSD and OpenBSD by Masao UebayashiPorting Valgrind to NetBSD and OpenBSD by Masao Uebayashi
Porting Valgrind to NetBSD and OpenBSD by Masao Uebayashieurobsdcon
 

Similaire à Mach-O par Stéphane Sudre (20)

Troubleshooting Tips and Tricks for Database 19c ILOUG Feb 2020
Troubleshooting Tips and Tricks for Database 19c   ILOUG Feb 2020Troubleshooting Tips and Tricks for Database 19c   ILOUG Feb 2020
Troubleshooting Tips and Tricks for Database 19c ILOUG Feb 2020
 
Troubleshooting Tips and Tricks for Database 19c - Sangam 2019
Troubleshooting Tips and Tricks for Database 19c - Sangam 2019Troubleshooting Tips and Tricks for Database 19c - Sangam 2019
Troubleshooting Tips and Tricks for Database 19c - Sangam 2019
 
No more dumb hex!
No more dumb hex!No more dumb hex!
No more dumb hex!
 
Bsides
BsidesBsides
Bsides
 
[DefCon 2016] I got 99 Problems, but 
Little Snitch ain’t one!
[DefCon 2016] I got 99 Problems, but 
Little Snitch ain’t one![DefCon 2016] I got 99 Problems, but 
Little Snitch ain’t one!
[DefCon 2016] I got 99 Problems, but 
Little Snitch ain’t one!
 
nullcon 2011 - Memory analysis – Looking into the eye of the bits
nullcon 2011 - Memory analysis – Looking into the eye of the bitsnullcon 2011 - Memory analysis – Looking into the eye of the bits
nullcon 2011 - Memory analysis – Looking into the eye of the bits
 
Moving beyond moving bytes
Moving beyond moving bytesMoving beyond moving bytes
Moving beyond moving bytes
 
Flink Forward Berlin 2017: Joey Frazee, Suneel Marthi - Moving Beyond Moving ...
Flink Forward Berlin 2017: Joey Frazee, Suneel Marthi - Moving Beyond Moving ...Flink Forward Berlin 2017: Joey Frazee, Suneel Marthi - Moving Beyond Moving ...
Flink Forward Berlin 2017: Joey Frazee, Suneel Marthi - Moving Beyond Moving ...
 
C&cpu
C&cpuC&cpu
C&cpu
 
Writing Metasploit Plugins
Writing Metasploit PluginsWriting Metasploit Plugins
Writing Metasploit Plugins
 
APEX Connect 2019 - array/bulk processing in PLSQL
APEX Connect 2019 - array/bulk processing in PLSQLAPEX Connect 2019 - array/bulk processing in PLSQL
APEX Connect 2019 - array/bulk processing in PLSQL
 
OSDC 2017 - Werner Fischer - Linux performance profiling and monitoring
OSDC 2017 - Werner Fischer - Linux performance profiling and monitoringOSDC 2017 - Werner Fischer - Linux performance profiling and monitoring
OSDC 2017 - Werner Fischer - Linux performance profiling and monitoring
 
Game.log
Game.logGame.log
Game.log
 
OSMC 2015: Linux Performance Profiling and Monitoring by Werner Fischer
OSMC 2015: Linux Performance Profiling and Monitoring by Werner FischerOSMC 2015: Linux Performance Profiling and Monitoring by Werner Fischer
OSMC 2015: Linux Performance Profiling and Monitoring by Werner Fischer
 
OSMC 2015 | Linux Performance Profiling and Monitoring by Werner Fischer
OSMC 2015 | Linux Performance Profiling and Monitoring by Werner FischerOSMC 2015 | Linux Performance Profiling and Monitoring by Werner Fischer
OSMC 2015 | Linux Performance Profiling and Monitoring by Werner Fischer
 
Anomalies in X-Ray Engine
Anomalies in X-Ray EngineAnomalies in X-Ray Engine
Anomalies in X-Ray Engine
 
Introduction to Assembly Language
Introduction to Assembly LanguageIntroduction to Assembly Language
Introduction to Assembly Language
 
Basic Linux kernel
Basic Linux kernelBasic Linux kernel
Basic Linux kernel
 
Shrimp: A Rather Practical Example Of Application Development With RESTinio a...
Shrimp: A Rather Practical Example Of Application Development With RESTinio a...Shrimp: A Rather Practical Example Of Application Development With RESTinio a...
Shrimp: A Rather Practical Example Of Application Development With RESTinio a...
 
Porting Valgrind to NetBSD and OpenBSD by Masao Uebayashi
Porting Valgrind to NetBSD and OpenBSD by Masao UebayashiPorting Valgrind to NetBSD and OpenBSD by Masao Uebayashi
Porting Valgrind to NetBSD and OpenBSD by Masao Uebayashi
 

Plus de CocoaHeads France

Plus de CocoaHeads France (20)

Mutation testing for a safer Future
Mutation testing for a safer FutureMutation testing for a safer Future
Mutation testing for a safer Future
 
iOS App Group for Debugging
iOS App Group for DebuggingiOS App Group for Debugging
iOS App Group for Debugging
 
Asynchronous swift
Asynchronous swiftAsynchronous swift
Asynchronous swift
 
Visual accessibility in iOS11
Visual accessibility in iOS11Visual accessibility in iOS11
Visual accessibility in iOS11
 
My script - One year of CocoaHeads
My script - One year of CocoaHeadsMy script - One year of CocoaHeads
My script - One year of CocoaHeads
 
Ui testing dealing with push notifications
Ui testing dealing with push notificationsUi testing dealing with push notifications
Ui testing dealing with push notifications
 
CONTINUOUS DELIVERY WITH FASTLANE
CONTINUOUS DELIVERY WITH FASTLANECONTINUOUS DELIVERY WITH FASTLANE
CONTINUOUS DELIVERY WITH FASTLANE
 
L'intégration continue avec Bitrise
L'intégration continue avec BitriseL'intégration continue avec Bitrise
L'intégration continue avec Bitrise
 
Super combinators
Super combinatorsSuper combinators
Super combinators
 
Design like a developer
Design like a developerDesign like a developer
Design like a developer
 
Handle the error
Handle the errorHandle the error
Handle the error
 
Quoi de neuf dans iOS 10.3
Quoi de neuf dans iOS 10.3Quoi de neuf dans iOS 10.3
Quoi de neuf dans iOS 10.3
 
IoT Best practices
 IoT Best practices IoT Best practices
IoT Best practices
 
SwiftyGPIO
SwiftyGPIOSwiftyGPIO
SwiftyGPIO
 
Présentation de HomeKit
Présentation de HomeKitPrésentation de HomeKit
Présentation de HomeKit
 
Programme MFI retour d'expérience
Programme MFI retour d'expérienceProgramme MFI retour d'expérience
Programme MFI retour d'expérience
 
How to communicate with Smart things?
How to communicate with Smart things?How to communicate with Smart things?
How to communicate with Smart things?
 
Build a lego app with CocoaPods
Build a lego app with CocoaPodsBuild a lego app with CocoaPods
Build a lego app with CocoaPods
 
Let's migrate to Swift 3.0
Let's migrate to Swift 3.0Let's migrate to Swift 3.0
Let's migrate to Swift 3.0
 
What's new in iOS9
What's new in iOS9What's new in iOS9
What's new in iOS9
 

Dernier

Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdfPearlKirahMaeRagusta1
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfonteinmasabamasaba
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...Shane Coughlan
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfkalichargn70th171
 
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdfAzure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdfryanfarris8
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park masabamasaba
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisamasabamasaba
 
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...kalichargn70th171
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...Nitya salvi
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech studentsHimanshiGarg82
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
Sector 18, Noida Call girls :8448380779 Model Escorts | 100% verified
Sector 18, Noida Call girls :8448380779 Model Escorts | 100% verifiedSector 18, Noida Call girls :8448380779 Model Escorts | 100% verified
Sector 18, Noida Call girls :8448380779 Model Escorts | 100% verifiedDelhi Call girls
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension AidPhilip Schwarz
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is insideshinachiaurasa2
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 

Dernier (20)

Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
 
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdfAzure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
Sector 18, Noida Call girls :8448380779 Model Escorts | 100% verified
Sector 18, Noida Call girls :8448380779 Model Escorts | 100% verifiedSector 18, Noida Call girls :8448380779 Model Escorts | 100% verified
Sector 18, Noida Call girls :8448380779 Model Escorts | 100% verified
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 

Mach-O par Stéphane Sudre

  • 1. Ton Mach-O en strings devant Prisu
  • 3. “Houston, on a un problème…”
  • 4.
  • 5. Des plugins, des plugins et encore des plugins…
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 14.
  • 15.
  • 19. Cyclone.xcodeproj Plasma.xcodeproj Solar Winds.xcodeproj github.com/…/cyclone github.com/…/plasma github.com/…/solarwinds
  • 20. Cyclone.xcodeproj Plasma.xcodeproj Solar Winds.xcodeproj github.com/…/cyclone github.com/…/plasma github.com/…/solarwinds github.com/…/rsscommon submodules submodules RSSWindow RSSAboutBoxWindowController RSSAboutBoxWindowController.xib RSSSettings RSSSecondaryBox RSSCollectionView RSSCollectionViewItem RSSStandardSettingsView.xib
  • 21. 1 #import "RSSAboutBoxWindowController.h" 2 3 @interface RSSAboutBoxWindowController () 4 { 5 ... 6 } 7 8 @end 9 10 @implementation RSSAboutBoxWindowController 11 12 - (NSString *)windowNibName 13 { 14 return @"RSSAboutBoxWindowController"; 15 } 16 ... RSSAboutBoxWindowController.m RSSStandardSettingsView.xib
  • 25. Noms uniques dans le code source
  • 26. Noms uniques dans le code source
  • 27. Noms uniques dans l’exécutable
  • 28. Refactorisation allégée de nib binary property list
  • 31. Mach-O 0000000 cf fa ed fe 0000010 15 00 00 00 0000020 19 00 00 00 0000030 00 00 00 00 0000040 00 d0 00 00 0000050 00 d0 00 00 0000060 0b 00 00 00 0000070 00 00 00 00 Tampon mémoire Rechercher / Remplacer 0000000 cf fa ed fe 0000010 15 00 00 00 0000020 19 00 00 00 0000030 00 00 00 00 0000040 00 d0 00 00 0000050 00 d0 00 00 0000060 0b 00 00 00 0000070 00 00 00 00 Mach-O
  • 32. Mach-O Mach-O cf fa ed fe 15 00 00 00 19 00 00 00 00 00 00 00 00 d0 00 00 00 d0 00 00 0b 00 00 00 00 00 00 00 Structure analysée 00 00 00 00 b6 88 00 00 00 00 00 00 c0 88 00 00 00 00 00 00 c5 88 00 00 00 00 00 00 c9 88 00 00 Rechercher / Remplacer
  • 33. $ man Mach-O et non pas l’inverse
  • 36.
  • 37. Mach-O file 1 architecture Mach-O file 1 architecture FAT header
  • 38. Mach-O file 1 architecture Mach-O file 1 architecture FAT header struct fat_header { uint32_t magic; uint32_t nfat_arch; }; struct fat_arch { cpu_type_t cputype; cpu_subtype_t cpusubtype; uint32_t offset; uint32_t size; uint32_t align; }; 0xcafebabe BIG ENDIAN CPU_TYPE_ARM CPU_SUBTYPE_ARM_V7F struct fat_arch { cpu_type_t cputype; cpu_subtype_t cpusubtype; uint32_t offset; uint32_t size; uint32_t align; }; 2
  • 39. Mach-O file 1 architecture Mach-O file 1 architecture FAT header
  • 41.
  • 43. Header Data Load Commands struct mach_header_64 { uint32_t magic; cpu_type_t cputype; cpu_subtype_t cpusubtype; uint32_t filetype; uint32_t ncmds; uint32_t sizeofcmds; uint32_t flags; uint32_t reserved; }; 0xfeedfacf CPU_TYPE_ARM CPU_SUBTYPE_ARM_V7F BIG ENDIAN | LITTLE ENDIAN MH_EXECUTE
  • 46. Data Load Command Load Command Load Command Load Command
  • 47. struct load_command { uint32_t cmd; uint32_t cmdsize; }; Data Load Command Load Command Load Command Load Command
  • 48. struct load_command { uint32_t cmd; uint32_t cmdsize; }; struct dylinker_command { uint32_t cmd; uint32_t cmdsize; union lc_str name }; LC_LOAD_DYLINKER Data Load Command Load Command Load Command Load Command
  • 49. struct load_command { uint32_t cmd; uint32_t cmdsize; }; struct dylinker_command { uint32_t cmd; uint32_t cmdsize; union lc_str name }; LC_LOAD_DYLINKER struct dylib_command { uint32_t cmd; uint32_t cmdsize; struct dylib dylib; }; LC_LOAD_DYLIB Data Load Command Load Command Load Command Load Command
  • 50. struct load_command { uint32_t cmd; uint32_t cmdsize; }; struct dylinker_command { uint32_t cmd; uint32_t cmdsize; union lc_str name }; LC_LOAD_DYLINKER struct dylib_command { uint32_t cmd; uint32_t cmdsize; struct dylib dylib; }; LC_LOAD_DYLIB struct segment_command_64 { uint32_t cmd; uint32_t cmdsize; char segname[16]; uint64_t vmaddr; uint64_t vmsize; uint64_t fileoff; uint64_t filesize; vm_prot_t maxprot; vm_prot_t initprot; uint32_t nsects; uint32_t flags; }; LC_SEGMENT_64 “__TEXT”Data Section Section Section Segment Load Command Load Command Load Command Load Command
  • 51. struct load_command { uint32_t cmd; uint32_t cmdsize; }; struct dylinker_command { uint32_t cmd; uint32_t cmdsize; union lc_str name }; LC_LOAD_DYLINKER struct dylib_command { uint32_t cmd; uint32_t cmdsize; struct dylib dylib; }; LC_LOAD_DYLIB struct segment_command_64 { uint32_t cmd; uint32_t cmdsize; char segname[16]; uint64_t vmaddr; uint64_t vmsize; uint64_t fileoff; uint64_t filesize; vm_prot_t maxprot; vm_prot_t initprot; uint32_t nsects; uint32_t flags; }; LC_SEGMENT_64 “__TEXT”Data Section Section Section Segment Load Command Load Command Load Command Load Command struct segment_command { uint32_t cmd; uint32_t cmdsize; char segname[16]; uint32_t vmaddr; uint32_t vmsize;
  • 52. struct load_command { uint32_t cmd; uint32_t cmdsize; }; struct dylinker_command { uint32_t cmd; uint32_t cmdsize; union lc_str name }; struct dylib_command { uint32_t cmd; uint32_t cmdsize; struct dylib dylib; }; struct segment_command_64 { uint32_t cmd; uint32_t cmdsize; char segname[16]; uint64_t vmaddr; uint64_t vmsize; uint64_t fileoff; uint64_t filesize; vm_prot_t maxprot; vm_prot_t initprot; uint32_t nsects; uint32_t flags; }; Data Section Section Section Segment Load Command Load Command Load Command Load Command struct segment_command { uint32_t cmd; uint32_t cmdsize; char segname[16]; uint32_t vmaddr; uint32_t vmsize;
  • 53.
  • 56. struct segment_command_64 { uint32_t cmd; uint32_t cmdsize; char segname[16]; … uint64_t fileoff; uint64_t filesize; … uint32_t nsects; … }; LC_SEGMENT_64 “__TEXT” Section Section Section Segment Section Section Section Segment Section Segment Section Load Command struct section_64 { char sectname[16]; char segname[16]; uint64_t addr; uint64_t size; uint32_t offset; … uint32_t flags; … }; “__TEXT” “__cstring” struct section_64 { char sectname[16]; char segname[16]; uint64_t addr; uint64_t size; uint32_t offset; … uint32_t flags; … }; “__TEXT” “__ustring” struct section_64 { char sectname[16]; char segname[16]; 3 LC_SEGMENT_64 Section Segment Section
  • 62. Recherche des noms de classes Objective-C 2.x / 64-bit
  • 63. 0000da40 a0 08 01 00 00 00 00 00 18 09 01 00 00 00 00 00 0000da50 40 09 01 00 00 00 00 00 90 09 01 00 00 00 00 00 0000da60 08 0a 01 00 00 00 00 00 30 0a 01 00 00 00 00 00 0000da70 a8 0a 01 00 00 00 00 00 f8 0a 01 00 00 00 00 00 0000da80 48 0b 01 00 00 00 00 00 70 0b 01 00 00 00 00 00 0000da90 c0 0b 01 00 00 00 00 00 10 0c 01 00 00 00 00 00 __DATA, __objc_classlist
  • 64. 000108a0 c8 08 01 00 00 00 00 00 00 00 00 00 00 00 00 00 000108b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 000108c0 f0 dc 00 00 00 00 00 00 00 00 00 00 00 00 00 00 000108d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 000108e0 00 00 00 00 00 00 00 00 d0 da 00 00 00 00 00 00 000108f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00010900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00010910 38 dd 00 00 00 00 00 00 f0 08 01 00 00 00 00 00 ........ 0000da40 a0 08 01 00 00 00 00 00 18 09 01 00 00 00 00 00 0000da50 40 09 01 00 00 00 00 00 90 09 01 00 00 00 00 00 0000da60 08 0a 01 00 00 00 00 00 30 0a 01 00 00 00 00 00 0000da70 a8 0a 01 00 00 00 00 00 f8 0a 01 00 00 00 00 00 0000da80 48 0b 01 00 00 00 00 00 70 0b 01 00 00 00 00 00 0000da90 c0 0b 01 00 00 00 00 00 10 0c 01 00 00 00 00 00 __DATA, __objc_classlist __DATA, __objc_data
  • 65. 000108a0 c8 08 01 00 00 00 00 00 00 00 00 00 00 00 00 00 000108b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 000108c0 f0 dc 00 00 00 00 00 00 00 00 00 00 00 00 00 00 000108d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 000108e0 00 00 00 00 00 00 00 00 d0 da 00 00 00 00 00 00 ........ __DATA, __objc_data
  • 66. 000108a0 c8 08 01 00 00 00 00 00 00 00 00 00 00 00 00 00 000108b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 000108c0 f0 dc 00 00 00 00 00 00 00 00 00 00 00 00 00 00 000108d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 000108e0 00 00 00 00 00 00 00 00 d0 da 00 00 00 00 00 00 ........ __DATA, __objc_data
  • 67. 000108a0 c8 08 01 00 00 00 00 00 00 00 00 00 00 00 00 00 000108b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 000108c0 f0 dc 00 00 00 00 00 00 00 00 00 00 00 00 00 00 000108d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 000108e0 00 00 00 00 00 00 00 00 d0 da 00 00 00 00 00 00 ........ __DATA, __objc_data struct objc2_class_t { uint64_t isa; uint64_t superclass; uint64_t cache; uint64_t vtable; uint64_t data; uint64_t reserved1; uint64_t reserved2; uint64_t reserved3; }; 0x000000000108c8 0x00000000000000 0x00000000000000 0x00000000000000 0x0000000000dcf0 0x00000000000000 0x00000000000000 0x00000000000000
  • 68. 000108a0 c8 08 01 00 00 00 00 00 00 00 00 00 00 00 00 00 000108b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 000108c0 f0 dc 00 00 00 00 00 00 00 00 00 00 00 00 00 00 000108d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 000108e0 00 00 00 00 00 00 00 00 d0 da 00 00 00 00 00 00 ........ __DATA, __objc_data ........ 0000dcf0 84 01 00 00 88 00 00 00 b0 00 00 00 00 00 00 00 0000dd00 55 a6 00 00 00 00 00 00 3f a6 00 00 00 00 00 00 0000dd10 18 db 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0000dd20 10 dc 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0000dd30 b8 dc 00 00 00 00 00 00 81 00 00 00 28 00 00 00 0000dd40 28 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0000dd50 58 a6 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ __DATA, __objc_const
  • 69. 0000dcf0 84 01 00 00 88 00 00 00 b0 00 00 00 00 00 00 00 0000dd00 55 a6 00 00 00 00 00 00 3f a6 00 00 00 00 00 00 0000dd10 18 db 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0000dd20 10 dc 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0000dd30 b8 dc 00 00 00 00 00 00 81 00 00 00 28 00 00 00 ........ __DATA, __objc_const
  • 70. 0000dcf0 84 01 00 00 88 00 00 00 b0 00 00 00 00 00 00 00 0000dd00 55 a6 00 00 00 00 00 00 3f a6 00 00 00 00 00 00 0000dd10 18 db 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0000dd20 10 dc 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0000dd30 b8 dc 00 00 00 00 00 00 81 00 00 00 28 00 00 00 ........ __DATA, __objc_const
  • 71. 0000dcf0 84 01 00 00 88 00 00 00 b0 00 00 00 00 00 00 00 0000dd00 55 a6 00 00 00 00 00 00 3f a6 00 00 00 00 00 00 0000dd10 18 db 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0000dd20 10 dc 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0000dd30 b8 dc 00 00 00 00 00 00 81 00 00 00 28 00 00 00 ........ __DATA, __objc_const struct objc2_class_ro_t { uint32_t flags; uint32_t instanceStart; uint32_t instanceSize; uint32_t reserved; uint64_t iVarLayout; uint64_t name; uint64_t baseMethods; uint64_t baseProtocols; uint64_t ivars; uint64_t weakIvarLayout; uint64_t baseProperties; }; 0x0000000000a63f
  • 72. 0000dcf0 84 01 00 00 88 00 00 00 b0 00 00 00 00 00 00 00 0000dd00 55 a6 00 00 00 00 00 00 3f a6 00 00 00 00 00 00 0000dd10 18 db 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0000dd20 10 dc 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0000dd30 b8 dc 00 00 00 00 00 00 81 00 00 00 28 00 00 00 ........ __DATA, __objc_const 0000a63f 52 53 53 43 6f 6c 6c 65 63 74 69 6f 6e 56 69 65 0000a64f 77 49 74 65 6d 00 04 10 00 52 53 53 57 69 6e 64 0000a65f 6f 77 00 52 53 53 53 6f 6c 61 72 57 69 6e 64 73 0000a66f 56 69 65 77 00 11 11 00 52 53 53 53 6f 6c 61 72 0000a67f 57 69 6e 64 73 53 65 74 74 69 6e 67 73 00 52 53 0000a68f 53 43 6f 6c 6c 65 63 74 69 6f 6e 56 69 65 77 49 0000a69f 74 65 6d 4c 61 62 65 6c 00 52 53 53 53 6f 6c 61 0000a6af 72 57 69 6e 64 73 43 6f 6e 66 69 67 75 72 61 74 ........ __TEXT, __objc_classname
  • 73. 0000dcf0 84 01 00 00 88 00 00 00 b0 00 00 00 00 00 00 00 0000dd00 55 a6 00 00 00 00 00 00 3f a6 00 00 00 00 00 00 0000dd10 18 db 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0000dd20 10 dc 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0000dd30 b8 dc 00 00 00 00 00 00 81 00 00 00 28 00 00 00 ........ __DATA, __objc_const 0000a63f R S S C o l l e c t i o n V i e 0000a64f w I t e m 00 04 10 00 R S S W i n d 0000a65f o w 00 R S S S o l a r W i n d s 0000a66f V i e w 00 11 11 00 R S S S o l a r 0000a67f W i n d s S e t t i n g s 00 R S 0000a68f S C o l l e c t i o n V i e w I 0000a69f t e m L a b e l 00 R S S S o l a 0000a6af r W i n d s C o n f i g u r a t ........ __TEXT, __objc_classname
  • 74. Recherche des chaînes de caractères Objective-C 2.x / 64-bit
  • 75. 0000d4a0 00 00 00 00 00 00 00 00 c8 07 00 00 00 00 00 00 0000d4b0 b6 88 00 00 00 00 00 00 09 00 00 00 00 00 00 00 0000d4c0 00 00 00 00 00 00 00 00 c8 07 00 00 00 00 00 00 0000d4d0 c0 88 00 00 00 00 00 00 04 00 00 00 00 00 00 00 0000d4e0 00 00 00 00 00 00 00 00 c8 07 00 00 00 00 00 00 ........ __DATA, __cfstring
  • 76. 0000d4a0 00 00 00 00 00 00 00 00 c8 07 00 00 00 00 00 00 0000d4b0 b6 88 00 00 00 00 00 00 09 00 00 00 00 00 00 00 0000d4c0 00 00 00 00 00 00 00 00 c8 07 00 00 00 00 00 00 0000d4d0 c0 88 00 00 00 00 00 00 04 00 00 00 00 00 00 00 0000d4e0 00 00 00 00 00 00 00 00 c8 07 00 00 00 00 00 00 ........ __DATA, __cfstring
  • 77. 0000d4a0 00 00 00 00 00 00 00 00 c8 07 00 00 00 00 00 00 0000d4b0 b6 88 00 00 00 00 00 00 09 00 00 00 00 00 00 00 0000d4c0 00 00 00 00 00 00 00 00 c8 07 00 00 00 00 00 00 0000d4d0 c0 88 00 00 00 00 00 00 04 00 00 00 00 00 00 00 0000d4e0 00 00 00 00 00 00 00 00 c8 07 00 00 00 00 00 00 ........ __DATA, __cfstring struct cfstring_record_64_t { uint64_t reserved; uint64_t encoding; uint64_t address; uint64_t length; }; 0x00000000000000 0x000000000007c8 0x000000000088b6 0x00000000000009 = ASCII
  • 78. 0000d4a0 00 00 00 00 00 00 00 00 c8 07 00 00 00 00 00 00 0000d4b0 b6 88 00 00 00 00 00 00 09 00 00 00 00 00 00 00 0000d4c0 00 00 00 00 00 00 00 00 c8 07 00 00 00 00 00 00 0000d4d0 c0 88 00 00 00 00 00 00 04 00 00 00 00 00 00 00 0000d4e0 00 00 00 00 00 00 00 00 c8 07 00 00 00 00 00 00 ........ __DATA, __cfstring 000088b6 74 68 75 6d 62 6e 61 69 6c 00 6e 61 6d 65 00 74 000088c6 61 67 00 00 54 40 22 4e 53 53 74 72 69 6e 67 22 000088d6 2c 26 2c 4e 2c 56 5f 74 68 75 6d 62 6e 61 69 6c ........ ........ 00008d16 51 38 5e 63 31 36 00 52 53 53 41 62 6f 75 74 42 00008d26 6f 78 57 69 6e 64 6f 77 43 6f 6e 74 72 6f 6c 6c 00008d36 65 72 00 43 46 42 75 6e 64 6c 65 4e 61 6d 65 00 ........ __TEXT, __cstring
  • 79. 0000d4a0 00 00 00 00 00 00 00 00 c8 07 00 00 00 00 00 00 0000d4b0 b6 88 00 00 00 00 00 00 09 00 00 00 00 00 00 00 0000d4c0 00 00 00 00 00 00 00 00 c8 07 00 00 00 00 00 00 0000d4d0 c0 88 00 00 00 00 00 00 04 00 00 00 00 00 00 00 0000d4e0 00 00 00 00 00 00 00 00 c8 07 00 00 00 00 00 00 ........ __DATA, __cfstring 000088b6 t h u m b n a i l 00 n a m e 00 t 000088c6 a g 00 00 54 40 " N S S t r i n g " 000088d6 2c 26 2c 4e 2c 56 _ t h u m b n a i l ........ ........ 00008d16 51 38 5e 63 31 36 00 R S S A b o u t B 00008d26 o x W i n d o w C o n t r o l l 00008d36 e r 00 C F B u n d l e N a m e 00 ........ __TEXT, __cstring
  • 80. Références • OS X ABI Mach-O File Format Reference developer.apple.com/library/mac/documentation/DeveloperTools/Conceptual/MachORuntime/ • mach-o header files /usr/include/mach-o/ • class-dump github.com/nygard/class-dump • otool www.opensource.apple.com/source/cctools/cctools-829/otool/ • Really Slick Screen Savers OS X Ports s.sudre.free.fr/Software.html
  • 81. QA&