6. ЗАЧЕМ ЭТО НУЖНО ?
• Это весело
• Анализ конкурирующих продуктов
• Совместимость с проприетарным
программным обеспечением
• Аудит безопасности
Это весело!
@__smirnov__
7. МЕТОДЫ АНАЛИЗА
System Level Code Level
Network traffic sniffing Disassembling/Decompiling
Анализ I/O активности Debugging
Общий анализ системных вызовов ObjC Runtime
@__smirnov__
8. TOOLSET
otool/otx дизассемблер
gdb/lldb
class-dump
получаем информацию об objc
классах из mach-o
MachOView
удобное представление mach-o
заголовков, сегментов, секций
lipo манипулирование fat файлами
hexdump/0xED
cycript
воздействуем на приложение в
runtime
python/ruby/perl
@__smirnov__
17. ASLR
User Space ASLR представлен в iOS 4.3
0x1000 becomes 0x54000
Address Space Layout Randomization — случайное изменение расположения
в адресном пространстве процесса важных структур, а именно: образа
исполняемого файла, подгружаемых библиотек, кучи и стека.
KASLR представлен в iOS 6.0
@__smirnov__
18. DECRYPT APPSTORE BINARY
STEP 2 - gdb
(gdb) info mach-regions
Region from 0x54000 to 0x238000 (r-x, max r-x; copy, private, not-
reserved) (2 sub-regions)
... from 0x238000 to 0x292000 (rw-, max rw-; copy, private, not-
reserved) (2 sub-regions)
...
(gdb) x/4x 0x54000
0x54000: 0xfeedface 0x0000000c 0x00000009 0x00000002
0x1000 переехало в 0x54000
@__smirnov__
20. THUMB MODE
ARM MODE THUMB2 MODE
32bit long instructions 16 to 32bit long instructions
0x56d38 0x56d39LSB bit
1010110110100111000 1010110110100111001
@__smirnov__
32. ЗАКОНЧИМ ТЕМ ОТКУДА НАЧАТЬ
• Отслеживание ввода данных
• Места использования данных
• Известные методы
• Class-dump
• Известные константы
• Используемые библиотеки
@__smirnov__