SlideShare una empresa de Scribd logo
1 de 24
Descargar para leer sin conexión
Jailbreak: разработка без лимитов


Владимир Пузанов       farcaller@hackndev.com
Владимир Кириллов         proger@hackndev.com

               Hack&Dev Team
Что такое Jailbreak




    возможность доступа ко всей ФС устройства
    возможность выполнения приложений вне системной песочницы
          использование всех системных вызовов, в т.ч. fork(2)
    возможность запуска неподписанных бинарников
    возможность использования динамических библиотек
    активируется при помощи бинарного патча на ядро

Sandbox
Системный фреймворк для ограничения доступа, управляется набором правил
(аналог systrace, DTrace)
Активен для всех установленых приложений (в ˜/Applications/).
Cydia




        Порт APT (Application Packaging
        Tool для Debian Linux) на iPhone,
        GUI.
        Полноценная система
        зависимостей, обновлений и
        блокировок.
        Встроенный магазин для продажи
        контента (Cydia Store).
Новые горизонты




   публикация (и продажа) приложений, не прошедших модерацию в AppStore
   интеграция привычных UNIX-приложений на iPhone:
       OpenSSH
       gdb
       <your favorite unix tool here>
   темы оформления
   расширеная функциональность:
       доступ ко всем системным вызовам
       использование демонов
       инъекция в приложения (в том числе системные демоны и менеджеры:
       SpringBoard, etc.)
Hacking iPhone: ABI




         ABI Application Binary Interface набор соглашений между
             программами, библиотеками и операционной системой,
             обеспечивающих взаимодействие этих компонентов на низком
             уровне на данной платформе
     Mach-O Mach Object      стандарт ABI в Mac OS X (mach-o(5))




mobile$ file /System/Library/CoreServices/SpringBoard.app/SpringBoard
/System/Library/CoreServices/SpringBoard.app/SpringBoard: Mach-O executable acorn
Mach Object




reference: xnu/osfmk/mach-o/
    заголовок
    struct mach_header
    команды загрузки (описывают разметку и компоновочные характеристики
    файла)
    struct load_command
    сегменты   описывают регионы виртуальной памяти (код, данные, стек, ...)
    struct segment_command
    сегмент редактирования ссылок (link edit, для динамических бинарников)
    struct dysymtab_command
Лезем в бинарник




binutils

             as ассемблер
             ld компоновщик объектных файлов
           dyld рантаймовый редактор компоновки
            nm просмотрщик символов (помогает найти точки для внедрения)
           otool парсер формата Mach-O (информация о бинарнике)
Разметка бинарного файла



mobile$ otool -hlL /bin/bash     # stripped
/bin/bash:
Mach header
      magic cputype cpusubtype   caps    filetype ncmds sizeofcmds      flags
 0xfeedface      12          0   0x00          2    15       1560 0x00000085

                                                    Section
                                                      sectname __text
   Load command 1                                      segname __TEXT
         cmd LC_SEGMENT                                   addr 0x00002000
     cmdsize 396                                          size 0x0005942c
     segname __TEXT                                     offset 4096
      vmaddr 0x00001000                                  align 2^2 (4)
      vmsize 0x00070000                                 reloff 0
     fileoff 0                                          nreloc 0
    filesize 458752                                      flags 0x80000400
     maxprot 0x00000005                              reserved1 0
    initprot 0x00000005                              reserved2 0
      nsects 5                                      Load command 6
       flags 0x0                                              cmd LC_LOAD_DYLINKER
                                                          cmdsize 28
                                                             name /usr/lib/dyld (offset 12)
Виртуальная память процесса                    vmmap(1)
Virtual Memory Map of process 1 (launchd)

==== Non-writable regions for process 1
__TEXT                 0000000100000000-000000010002a000    168K   r-x/rwx   SM=COW   /sbin/launchd
__LINKEDIT             000000010002d000-0000000100036000     36K   r--/rwx   SM=COW   /sbin/launchd
STACK GUARD            000000010005b000-000000010005c000      4K   ---/rwx   SM=NUL
STACK GUARD            00007fff5bc00000-00007fff5f400000   56.0M   ---/rwx   SM=NUL
__TEXT                 00007fff5fc00000-00007fff5fc3c000    240K   r-x/rwx   SM=COW   /usr/lib/dyld
__LINKEDIT             00007fff5fc7b000-00007fff5fc8f000     80K   r--/rwx   SM=COW   /usr/lib/dyld

==== Writable regions for process 1
__DATA                 000000010002a000-000000010002c000      8K   rw-/rwx   SM=COW   /sbin/launchd
__DATA                 000000010002c000-000000010002d000      4K   rw-/rwx   SM=PRV   /sbin/launchd
MALLOC (admin)         000000010003e000-000000010003f000      4K   rw-/rwx   SM=PRV
Stack                  000000010005c000-00000001000de000    520K   rw-/rwx   SM=COW   thread 1
Mach message           00000001000fb000-00000001000fd000      8K   rw-/rwx   SM=PRV
MALLOC_LARGE           00000001000fd000-00000001000fe000      4K   rw-/rwx   SM=COW   DefaultMallocZon
Stack                  0000000100401000-0000000100483000    520K   rw-/rwx   SM=PRV   thread 2
shared memory          0000000100483000-000000010048c000     36K   rw-/rwx   SM=SHM
shared memory          000000010048d000-0000000100490000     12K   rw-/rwx   SM=SHM
MALLOC_LARGE (freed)   0000000101800000-0000000102200000   10.0M   rw-/rwx   SM=COW
Stack                  00007fff5f400000-00007fff5fc00000   8192K   rw-/rwx   SM=SHM   thread 0
__DATA                 00007fff5fc3c000-00007fff5fc7b000    252K   rw-/rwx   SM=COW   /usr/lib/dyld

==== Summary for process 1
ReadOnly portion of Libraries: Total=33.0M resident=4804K(14%)
                                      swapped_out_or_unallocated=28.3M(86%)
Writable regions: Total=38.3M written=384K(1%) resident=476K(1%)
                                swapped_out=320K(1%) unallocated=37.8M(99%)
More Tools




        gdb GNU Debugger, позволяет изучать программу изнутри почти в
            режиме интерпретатора
            реализован на ptrace(2)
  class-dump генератор прототипов классов и протоколов на базе runtime-секции
             бинарника
        IDA профессиональный инструмент для дизассемблирования и анализа
            кода
  ARM Help встроенный в OSX ARMARM с индексированием
     man(1) ваш друг, товарищ и брат
Как не потерятся в hex’e   IDA
Лезем в бинарник      время выполнения




   DYLD_PRELOAD (dyld(1))
   изменение протекции виртуальных страниц   vm_protect/mprotect(2)
      не везде!
Плагин для просмотра баланса оператора




Разработаем плагин, который
  1   будет посылать USSD-запрос оператору с текстом ∗101#
  2   будет перехватывать интерфейс USSD-оповещений в SpringBoard и временно
      отключать его
  3   будет обрабатывать ответ и выдирать из него остаток на счету
  4   будет показывать остаток в форме, доступной через SBSettings
  5   и будет автоматически обновлять баланс каждые пять минут
Алло, коммборд!




Для звонков в iPhone используется связка из MobilePhone, CoreTelephony и
commcenter.
Необходимый нам код скорее всего находится в MobilePhone, изучим его с помощью
class-dump, IDA и GDB...
Судя по списку классов, нам надо смотреть в PhoneApplication, особенно красив
метод
   - (BOOL)dialPhoneNumber:(NSString *)phone
     forUID:(int)fp12
     dialAssist:(BOOL)fp16;
     // IMP=0x0000a14c
Внутри MobilePhone...




Агрументы функции в arm передаются в регистрах (при этом не забываем про
“магические” self и cmd в r0 и r1). Остановим выполнение MobilePhone в gdb прямо
в начале потенциального метода:
   (gdb) b *0xa14c
   Breakpoint 1 at 0xa14c
   (gdb) cont
   Continuing.

и посмотрим на phone, как только брекпоинт сработает:
   Breakpoint 1, 0x0000a14c in ?? ()
   (gdb) po $r2
   *101#

(тут po  сокращение от print-object, команды, которая вызывает -description на
целевом ObjC-объекте)
Внутри MobilePhone...          (продолжение)




В теле функции есть интересный вызов к CoreTelephony: CTCallDialWithID




После анализа тела функции выше, можно смело утверждать о назначании двух
аргументов этой функции. Попробуем запустить ее самостоятельно:
   (gdb) p (int)*0x5e3ac(@"*101#", -1)
   0x0

функция выполнилась, а на экране – UI отправки USSD запроса. Искомый API для
инициализации USSD запросов найден.
MobileSubstrate       перехват вызовов




MobileSubstrate позволяет перехватить C и ObjC вызовы и выполнить необходимый
код. Так, Winterboard перехватывает open и возвращает не оригинальные файлы с
графикой, а файлы из каталогов текущей темы.




Функции:
    инъекция в любую ARM/Thumb C-функцию
    инъекция в любой Objective-C метод
    загрузка пользовательских библиотек или бандлов
Блокируем USSD интерфейс в SpringBoard
Задача: заблокировать отображение USSD-окон в SpringBoard.
    получим список классов с помощью class-dump и изучим их. Нашей цели
    скорее всего соответствует класс SBUSSDAlert.
    с помощью анализа бектрейса у методов этого класса (используя брейкпоинты
    в gdb и адресам полученным из class-dump), что в методе
    +registerForAlerts происходит регистрация SpringBoard в системе событий
    CoreTelephony.
SpringBoard inside
Компилируем код без Xcode


используйте make(1) (GNU Make для OSX)
 DEV=/Developer/Platforms/iPhoneOS.platform/Developer
 CC=$(DEV)/usr/bin/arm-apple-darwin9-gcc-4.2.1
 SDK=$(DEV)/SDKs/iPhoneOS3.0.sdk
 LD=$(CC)
 LDFLAGS=-lobjc -dynamiclib -bind_at_load 
   -L"$(SDK)$/usr/lib/" 
   -F"$(SDK)$/System/Library/PrivateFrameworks/" 
   -F"$(SDK)/System/Library/Frameworks/" 
   -framework CoreTelephony 
   -framework CoreFoundation -framework Foundation -framework UIKit 
   -framework CoreGraphics -framework SystemConfiguration
 CFLAGS=-fconstant-cfstrings -std=gnu99 -Wall -O2 
   -I"$(SDK)/usr/include" 
   -I"$(DEV)/usr/lib/gcc/arm-apple-darwin9/4.2.1/include/" 
   -F"$(SDK)/System/Library/Frameworks" 
   -F"$(SDK)/System/Library/PrivateFrameworks" 
   -I"$(SDK)"
 VERSION=1.0

 Balance.dylib: main.o BalanceView.o SBSwizzler.o Oper_Djuice.o Oper_MTC.o
  $(LD) $(LDFLAGS) -o $@ $^
  env CODESIGN_ALLOCATE=$(DEV)/usr/bin/codesign_allocate ldid -S Balance.dylib
Makefile на каждый день

make(1) (OpenBSD), bsdmake(1) (OS X), pmake(1) (Linux)
SRC?=            jail
INCL?=           template.tex pygments.tex
VIEWER?=         evince -s
PREVIEWER?=      evince

.PATH:           ${.CURDIR}
FIG=
FIGPDF=          ${FIG:S/.eps/.pdf/g}

${SRC}.pdf: ${SRC}.tex ${INCL} ${FIG}
        env TEXINPUTS=:${.CURDIR} pdflatex ${SRC}.tex

${FIGPDF}: ${FIG}
figs: ${FIGPDF}

obj:
          -[ -d ${.CURDIR}/obj ] || mkdir -p ${.CURDIR}/obj

clean:
          -rm -f *.{aux,log,nav,out,snm,toc,pdf}

view: ${SRC}.pdf
        ${VIEWER} ${SRC}.pdf

pre: ${SRC}.pdf
        ${PREVIEWER} ${SRC}.pdf
Makefile на каждый день                 (продолжение)




src:
           for source in ‘find ${.CURDIR}/src/ -type f | grep -v CVS‘; 
           do 
                   printf ">>> %snn" $$source; 
                   pygmentize -f latex $$source 
                           | perl -pi -e ’s/Verbatim}[/Verbatim}[fontsize=footnotesize,/g’; 
                   echo; 
           done
nframes:
           grep ’begin{frame}’ ${.CURDIR}/${SRC}.tex | grep -v ’s*%’ | wc -l

.PHONY: clean view src nframes

.SUFFIXES: .eps .pdf
.eps.pdf:
        epstopdf $<
Плагин для SpringBoard
Можно встроится в какой-то из UIView от SpringBoard (например в lock–screen), или
просто сделать плагин для SBSettings:
Итак, для того, чтобы рассказать Вам про Jailbreak мы:

    farcaller@ покурил ARMARM и дампы xxd
    proger@ наконец залез в исходники XNU
    одели костюмы (:P)




© 2009 Hack&Dev Team

Más contenido relacionado

La actualidad más candente

Honeypots: Visão Geral
Honeypots: Visão GeralHoneypots: Visão Geral
Honeypots: Visão Geralbernardo_mr
 
Filippo, Plain simple reality of entropy
Filippo, Plain simple reality of  entropyFilippo, Plain simple reality of  entropy
Filippo, Plain simple reality of entropyPacSecJP
 
Vhdl practical exam guide
Vhdl practical exam guideVhdl practical exam guide
Vhdl practical exam guideEslam Mohammed
 
Crash_Report_Mechanism_In_Tizen
Crash_Report_Mechanism_In_TizenCrash_Report_Mechanism_In_Tizen
Crash_Report_Mechanism_In_TizenLex Yu
 
Nsd, il tuo compagno di viaggio quando Domino va in crash
Nsd, il tuo compagno di viaggio quando Domino va in crashNsd, il tuo compagno di viaggio quando Domino va in crash
Nsd, il tuo compagno di viaggio quando Domino va in crashFabio Pignatti
 
Marko Gargenta_Remixing android
Marko Gargenta_Remixing androidMarko Gargenta_Remixing android
Marko Gargenta_Remixing androidDroidcon Berlin
 
DEF CON 24 - Patrick Wardle - 99 problems little snitch
DEF CON 24 - Patrick Wardle - 99 problems little snitchDEF CON 24 - Patrick Wardle - 99 problems little snitch
DEF CON 24 - Patrick Wardle - 99 problems little snitchFelipe Prado
 
44CON London 2015 - Jtagsploitation: 5 wires, 5 ways to root
44CON London 2015 - Jtagsploitation: 5 wires, 5 ways to root44CON London 2015 - Jtagsploitation: 5 wires, 5 ways to root
44CON London 2015 - Jtagsploitation: 5 wires, 5 ways to root44CON
 

La actualidad más candente (10)

Honeypots: Visão Geral
Honeypots: Visão GeralHoneypots: Visão Geral
Honeypots: Visão Geral
 
Success
SuccessSuccess
Success
 
Filippo, Plain simple reality of entropy
Filippo, Plain simple reality of  entropyFilippo, Plain simple reality of  entropy
Filippo, Plain simple reality of entropy
 
Vhdl practical exam guide
Vhdl practical exam guideVhdl practical exam guide
Vhdl practical exam guide
 
Crash_Report_Mechanism_In_Tizen
Crash_Report_Mechanism_In_TizenCrash_Report_Mechanism_In_Tizen
Crash_Report_Mechanism_In_Tizen
 
Nsd, il tuo compagno di viaggio quando Domino va in crash
Nsd, il tuo compagno di viaggio quando Domino va in crashNsd, il tuo compagno di viaggio quando Domino va in crash
Nsd, il tuo compagno di viaggio quando Domino va in crash
 
Marko Gargenta_Remixing android
Marko Gargenta_Remixing androidMarko Gargenta_Remixing android
Marko Gargenta_Remixing android
 
DEF CON 24 - Patrick Wardle - 99 problems little snitch
DEF CON 24 - Patrick Wardle - 99 problems little snitchDEF CON 24 - Patrick Wardle - 99 problems little snitch
DEF CON 24 - Patrick Wardle - 99 problems little snitch
 
Sun raysetup
Sun raysetupSun raysetup
Sun raysetup
 
44CON London 2015 - Jtagsploitation: 5 wires, 5 ways to root
44CON London 2015 - Jtagsploitation: 5 wires, 5 ways to root44CON London 2015 - Jtagsploitation: 5 wires, 5 ways to root
44CON London 2015 - Jtagsploitation: 5 wires, 5 ways to root
 

Similar a Владимир Пузанов - JailBreak: Разработка без лимитов

Ataques dirigidos contra activistas
Ataques dirigidos contra activistasAtaques dirigidos contra activistas
Ataques dirigidos contra activistasDavid Barroso
 
колышкин Rootconf 2009 Openvz
колышкин Rootconf 2009 Openvzколышкин Rootconf 2009 Openvz
колышкин Rootconf 2009 OpenvzLiudmila Li
 
колышкин Rootconf 2009 Openvz
колышкин Rootconf 2009 Openvzколышкин Rootconf 2009 Openvz
колышкин Rootconf 2009 OpenvzLiudmila Li
 
Linux lv ms step by step
Linux lv ms step by stepLinux lv ms step by step
Linux lv ms step by stepsudakarman
 
Performance analysis in a multitenant cloud environment Using Hadoop Cluster ...
Performance analysis in a multitenant cloud environment Using Hadoop Cluster ...Performance analysis in a multitenant cloud environment Using Hadoop Cluster ...
Performance analysis in a multitenant cloud environment Using Hadoop Cluster ...Orgad Kimchi
 
Bsides
BsidesBsides
Bsidesm j
 
JS Fest 2018. Володимир Шиманський. Запуск двіжка JS на мікроконтролері
JS Fest 2018. Володимир Шиманський. Запуск двіжка JS на мікроконтролеріJS Fest 2018. Володимир Шиманський. Запуск двіжка JS на мікроконтролері
JS Fest 2018. Володимир Шиманський. Запуск двіжка JS на мікроконтролеріJSFestUA
 
Debugging Ruby Systems
Debugging Ruby SystemsDebugging Ruby Systems
Debugging Ruby SystemsEngine Yard
 
A little systemtap
A little systemtapA little systemtap
A little systemtapyang bingwu
 
A little systemtap
A little systemtapA little systemtap
A little systemtapyang bingwu
 
DUG'20: 12 - DAOS in Lenovo’s HPC Innovation Center
DUG'20: 12 - DAOS in Lenovo’s HPC Innovation CenterDUG'20: 12 - DAOS in Lenovo’s HPC Innovation Center
DUG'20: 12 - DAOS in Lenovo’s HPC Innovation CenterAndrey Kudryavtsev
 
Reverse engineering Swisscom's Centro Grande Modem
Reverse engineering Swisscom's Centro Grande ModemReverse engineering Swisscom's Centro Grande Modem
Reverse engineering Swisscom's Centro Grande ModemCyber Security Alliance
 
Potapenko, vyukov forewarned is forearmed. a san and tsan
Potapenko, vyukov   forewarned is forearmed. a san and tsanPotapenko, vyukov   forewarned is forearmed. a san and tsan
Potapenko, vyukov forewarned is forearmed. a san and tsanDefconRussia
 
Stability issues of user space
Stability issues of user spaceStability issues of user space
Stability issues of user space晓东 杜
 
Debugging Ruby
Debugging RubyDebugging Ruby
Debugging RubyAman Gupta
 
Kernel Recipes 2013 - Deciphering Oopsies
Kernel Recipes 2013 - Deciphering OopsiesKernel Recipes 2013 - Deciphering Oopsies
Kernel Recipes 2013 - Deciphering OopsiesAnne Nicolas
 
Writing Metasploit Plugins
Writing Metasploit PluginsWriting Metasploit Plugins
Writing Metasploit Pluginsamiable_indian
 
GDG DevFest Kyoto 2014 これからのGoの話をしよう
GDG DevFest Kyoto 2014 これからのGoの話をしようGDG DevFest Kyoto 2014 これからのGoの話をしよう
GDG DevFest Kyoto 2014 これからのGoの話をしようSatoshi Noda
 

Similar a Владимир Пузанов - JailBreak: Разработка без лимитов (20)

Ataques dirigidos contra activistas
Ataques dirigidos contra activistasAtaques dirigidos contra activistas
Ataques dirigidos contra activistas
 
колышкин Rootconf 2009 Openvz
колышкин Rootconf 2009 Openvzколышкин Rootconf 2009 Openvz
колышкин Rootconf 2009 Openvz
 
колышкин Rootconf 2009 Openvz
колышкин Rootconf 2009 Openvzколышкин Rootconf 2009 Openvz
колышкин Rootconf 2009 Openvz
 
Linux lv ms step by step
Linux lv ms step by stepLinux lv ms step by step
Linux lv ms step by step
 
Performance analysis in a multitenant cloud environment Using Hadoop Cluster ...
Performance analysis in a multitenant cloud environment Using Hadoop Cluster ...Performance analysis in a multitenant cloud environment Using Hadoop Cluster ...
Performance analysis in a multitenant cloud environment Using Hadoop Cluster ...
 
Bsides
BsidesBsides
Bsides
 
JS Fest 2018. Володимир Шиманський. Запуск двіжка JS на мікроконтролері
JS Fest 2018. Володимир Шиманський. Запуск двіжка JS на мікроконтролеріJS Fest 2018. Володимир Шиманський. Запуск двіжка JS на мікроконтролері
JS Fest 2018. Володимир Шиманський. Запуск двіжка JS на мікроконтролері
 
Debugging Ruby Systems
Debugging Ruby SystemsDebugging Ruby Systems
Debugging Ruby Systems
 
A little systemtap
A little systemtapA little systemtap
A little systemtap
 
A little systemtap
A little systemtapA little systemtap
A little systemtap
 
DUG'20: 12 - DAOS in Lenovo’s HPC Innovation Center
DUG'20: 12 - DAOS in Lenovo’s HPC Innovation CenterDUG'20: 12 - DAOS in Lenovo’s HPC Innovation Center
DUG'20: 12 - DAOS in Lenovo’s HPC Innovation Center
 
Reverse engineering Swisscom's Centro Grande Modem
Reverse engineering Swisscom's Centro Grande ModemReverse engineering Swisscom's Centro Grande Modem
Reverse engineering Swisscom's Centro Grande Modem
 
Lampiran 1.programdocx
Lampiran 1.programdocxLampiran 1.programdocx
Lampiran 1.programdocx
 
Potapenko, vyukov forewarned is forearmed. a san and tsan
Potapenko, vyukov   forewarned is forearmed. a san and tsanPotapenko, vyukov   forewarned is forearmed. a san and tsan
Potapenko, vyukov forewarned is forearmed. a san and tsan
 
Hadoop I/O Analysis
Hadoop I/O AnalysisHadoop I/O Analysis
Hadoop I/O Analysis
 
Stability issues of user space
Stability issues of user spaceStability issues of user space
Stability issues of user space
 
Debugging Ruby
Debugging RubyDebugging Ruby
Debugging Ruby
 
Kernel Recipes 2013 - Deciphering Oopsies
Kernel Recipes 2013 - Deciphering OopsiesKernel Recipes 2013 - Deciphering Oopsies
Kernel Recipes 2013 - Deciphering Oopsies
 
Writing Metasploit Plugins
Writing Metasploit PluginsWriting Metasploit Plugins
Writing Metasploit Plugins
 
GDG DevFest Kyoto 2014 これからのGoの話をしよう
GDG DevFest Kyoto 2014 これからのGoの話をしようGDG DevFest Kyoto 2014 これからのGoの話をしよう
GDG DevFest Kyoto 2014 これからのGoの話をしよう
 

Más de Pavel Bashmakov

The road from the services to the products
The road from the services to the productsThe road from the services to the products
The road from the services to the productsPavel Bashmakov
 
Портирование успешных iPhone приложений на Android\Bada платформы
Портирование успешных iPhone приложений на Android\Bada платформыПортирование успешных iPhone приложений на Android\Bada платформы
Портирование успешных iPhone приложений на Android\Bada платформыPavel Bashmakov
 
Мобильные приложения как инструмент доступа к пользователям современных мобил...
Мобильные приложения как инструмент доступа к пользователям современных мобил...Мобильные приложения как инструмент доступа к пользователям современных мобил...
Мобильные приложения как инструмент доступа к пользователям современных мобил...Pavel Bashmakov
 
Разработка мобильных приложений
Разработка мобильных приложенийРазработка мобильных приложений
Разработка мобильных приложенийPavel Bashmakov
 
Android Platform Architecture
Android Platform ArchitectureAndroid Platform Architecture
Android Platform ArchitecturePavel Bashmakov
 
Android Game Fox Hunter - Start
Android Game Fox Hunter - StartAndroid Game Fox Hunter - Start
Android Game Fox Hunter - StartPavel Bashmakov
 
Mobile Apps - Новые Медиа
Mobile Apps - Новые МедиаMobile Apps - Новые Медиа
Mobile Apps - Новые МедиаPavel Bashmakov
 
Клиент-серверные приложения на iPhone
Клиент-серверные приложения на iPhoneКлиент-серверные приложения на iPhone
Клиент-серверные приложения на iPhonePavel Bashmakov
 
In-App-Purchases и с чем их едят
In-App-Purchases и с чем их едятIn-App-Purchases и с чем их едят
In-App-Purchases и с чем их едятPavel Bashmakov
 
OpenGL ES 1.1 и 2.0 для разработки iPhone игр
OpenGL ES 1.1 и 2.0 для разработки iPhone игрOpenGL ES 1.1 и 2.0 для разработки iPhone игр
OpenGL ES 1.1 и 2.0 для разработки iPhone игрPavel Bashmakov
 
Использование современных мобильных техноолгий в медиабизнесе
Использование современных мобильных техноолгий в медиабизнесеИспользование современных мобильных техноолгий в медиабизнесе
Использование современных мобильных техноолгий в медиабизнесеPavel Bashmakov
 
Stanfy - Mobile Apps as Newest Media
Stanfy - Mobile Apps as Newest MediaStanfy - Mobile Apps as Newest Media
Stanfy - Mobile Apps as Newest MediaPavel Bashmakov
 
Павел Тайкало - Использование CoreData в iPhone приложения
Павел Тайкало - Использование CoreData в iPhone приложенияПавел Тайкало - Использование CoreData в iPhone приложения
Павел Тайкало - Использование CoreData в iPhone приложенияPavel Bashmakov
 
Taras Kornichuk - Ценности социальной игровой платформы для разработчиков и и...
Taras Kornichuk - Ценности социальной игровой платформы для разработчиков и и...Taras Kornichuk - Ценности социальной игровой платформы для разработчиков и и...
Taras Kornichuk - Ценности социальной игровой платформы для разработчиков и и...Pavel Bashmakov
 
Использование iPhone приложений в Бизнесе, Маркетинге и PR
Использование iPhone приложений в Бизнесе, Маркетинге и PRИспользование iPhone приложений в Бизнесе, Маркетинге и PR
Использование iPhone приложений в Бизнесе, Маркетинге и PRPavel Bashmakov
 
Индустрия iPhone приложений
Индустрия iPhone приложенийИндустрия iPhone приложений
Индустрия iPhone приложенийPavel Bashmakov
 

Más de Pavel Bashmakov (20)

The road from the services to the products
The road from the services to the productsThe road from the services to the products
The road from the services to the products
 
Портирование успешных iPhone приложений на Android\Bada платформы
Портирование успешных iPhone приложений на Android\Bada платформыПортирование успешных iPhone приложений на Android\Bada платформы
Портирование успешных iPhone приложений на Android\Bada платформы
 
Мобильные приложения как инструмент доступа к пользователям современных мобил...
Мобильные приложения как инструмент доступа к пользователям современных мобил...Мобильные приложения как инструмент доступа к пользователям современных мобил...
Мобильные приложения как инструмент доступа к пользователям современных мобил...
 
Разработка мобильных приложений
Разработка мобильных приложенийРазработка мобильных приложений
Разработка мобильных приложений
 
Android Platform Architecture
Android Platform ArchitectureAndroid Platform Architecture
Android Platform Architecture
 
Android Game Fox Hunter - Start
Android Game Fox Hunter - StartAndroid Game Fox Hunter - Start
Android Game Fox Hunter - Start
 
About Stanfy
About StanfyAbout Stanfy
About Stanfy
 
Mobile Apps - Новые Медиа
Mobile Apps - Новые МедиаMobile Apps - Новые Медиа
Mobile Apps - Новые Медиа
 
Mobile Apps - New Media
Mobile Apps - New MediaMobile Apps - New Media
Mobile Apps - New Media
 
Клиент-серверные приложения на iPhone
Клиент-серверные приложения на iPhoneКлиент-серверные приложения на iPhone
Клиент-серверные приложения на iPhone
 
In-App-Purchases и с чем их едят
In-App-Purchases и с чем их едятIn-App-Purchases и с чем их едят
In-App-Purchases и с чем их едят
 
OpenGL ES 1.1 и 2.0 для разработки iPhone игр
OpenGL ES 1.1 и 2.0 для разработки iPhone игрOpenGL ES 1.1 и 2.0 для разработки iPhone игр
OpenGL ES 1.1 и 2.0 для разработки iPhone игр
 
Использование современных мобильных техноолгий в медиабизнесе
Использование современных мобильных техноолгий в медиабизнесеИспользование современных мобильных техноолгий в медиабизнесе
Использование современных мобильных техноолгий в медиабизнесе
 
Stanfy - Mobile Apps as Newest Media
Stanfy - Mobile Apps as Newest MediaStanfy - Mobile Apps as Newest Media
Stanfy - Mobile Apps as Newest Media
 
Павел Тайкало - Использование CoreData в iPhone приложения
Павел Тайкало - Использование CoreData в iPhone приложенияПавел Тайкало - Использование CoreData в iPhone приложения
Павел Тайкало - Использование CoreData в iPhone приложения
 
Taras Kornichuk - Ценности социальной игровой платформы для разработчиков и и...
Taras Kornichuk - Ценности социальной игровой платформы для разработчиков и и...Taras Kornichuk - Ценности социальной игровой платформы для разработчиков и и...
Taras Kornichuk - Ценности социальной игровой платформы для разработчиков и и...
 
Использование iPhone приложений в Бизнесе, Маркетинге и PR
Использование iPhone приложений в Бизнесе, Маркетинге и PRИспользование iPhone приложений в Бизнесе, Маркетинге и PR
Использование iPhone приложений в Бизнесе, Маркетинге и PR
 
Индустрия iPhone приложений
Индустрия iPhone приложенийИндустрия iPhone приложений
Индустрия iPhone приложений
 
Sapka Contest 2009 (RU)
Sapka Contest 2009 (RU)Sapka Contest 2009 (RU)
Sapka Contest 2009 (RU)
 
Sapka Contest 2009 (UA)
Sapka Contest 2009 (UA)Sapka Contest 2009 (UA)
Sapka Contest 2009 (UA)
 

Último

What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 

Último (20)

What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 

Владимир Пузанов - JailBreak: Разработка без лимитов

  • 1. Jailbreak: разработка без лимитов Владимир Пузанов farcaller@hackndev.com Владимир Кириллов proger@hackndev.com Hack&Dev Team
  • 2. Что такое Jailbreak возможность доступа ко всей ФС устройства возможность выполнения приложений вне системной песочницы использование всех системных вызовов, в т.ч. fork(2) возможность запуска неподписанных бинарников возможность использования динамических библиотек активируется при помощи бинарного патча на ядро Sandbox Системный фреймворк для ограничения доступа, управляется набором правил (аналог systrace, DTrace) Активен для всех установленых приложений (в ˜/Applications/).
  • 3. Cydia Порт APT (Application Packaging Tool для Debian Linux) на iPhone, GUI. Полноценная система зависимостей, обновлений и блокировок. Встроенный магазин для продажи контента (Cydia Store).
  • 4. Новые горизонты публикация (и продажа) приложений, не прошедших модерацию в AppStore интеграция привычных UNIX-приложений на iPhone: OpenSSH gdb <your favorite unix tool here> темы оформления расширеная функциональность: доступ ко всем системным вызовам использование демонов инъекция в приложения (в том числе системные демоны и менеджеры: SpringBoard, etc.)
  • 5. Hacking iPhone: ABI ABI Application Binary Interface набор соглашений между программами, библиотеками и операционной системой, обеспечивающих взаимодействие этих компонентов на низком уровне на данной платформе Mach-O Mach Object стандарт ABI в Mac OS X (mach-o(5)) mobile$ file /System/Library/CoreServices/SpringBoard.app/SpringBoard /System/Library/CoreServices/SpringBoard.app/SpringBoard: Mach-O executable acorn
  • 6. Mach Object reference: xnu/osfmk/mach-o/ заголовок struct mach_header команды загрузки (описывают разметку и компоновочные характеристики файла) struct load_command сегменты описывают регионы виртуальной памяти (код, данные, стек, ...) struct segment_command сегмент редактирования ссылок (link edit, для динамических бинарников) struct dysymtab_command
  • 7. Лезем в бинарник binutils as ассемблер ld компоновщик объектных файлов dyld рантаймовый редактор компоновки nm просмотрщик символов (помогает найти точки для внедрения) otool парсер формата Mach-O (информация о бинарнике)
  • 8. Разметка бинарного файла mobile$ otool -hlL /bin/bash # stripped /bin/bash: Mach header magic cputype cpusubtype caps filetype ncmds sizeofcmds flags 0xfeedface 12 0 0x00 2 15 1560 0x00000085 Section sectname __text Load command 1 segname __TEXT cmd LC_SEGMENT addr 0x00002000 cmdsize 396 size 0x0005942c segname __TEXT offset 4096 vmaddr 0x00001000 align 2^2 (4) vmsize 0x00070000 reloff 0 fileoff 0 nreloc 0 filesize 458752 flags 0x80000400 maxprot 0x00000005 reserved1 0 initprot 0x00000005 reserved2 0 nsects 5 Load command 6 flags 0x0 cmd LC_LOAD_DYLINKER cmdsize 28 name /usr/lib/dyld (offset 12)
  • 9. Виртуальная память процесса vmmap(1) Virtual Memory Map of process 1 (launchd) ==== Non-writable regions for process 1 __TEXT 0000000100000000-000000010002a000 168K r-x/rwx SM=COW /sbin/launchd __LINKEDIT 000000010002d000-0000000100036000 36K r--/rwx SM=COW /sbin/launchd STACK GUARD 000000010005b000-000000010005c000 4K ---/rwx SM=NUL STACK GUARD 00007fff5bc00000-00007fff5f400000 56.0M ---/rwx SM=NUL __TEXT 00007fff5fc00000-00007fff5fc3c000 240K r-x/rwx SM=COW /usr/lib/dyld __LINKEDIT 00007fff5fc7b000-00007fff5fc8f000 80K r--/rwx SM=COW /usr/lib/dyld ==== Writable regions for process 1 __DATA 000000010002a000-000000010002c000 8K rw-/rwx SM=COW /sbin/launchd __DATA 000000010002c000-000000010002d000 4K rw-/rwx SM=PRV /sbin/launchd MALLOC (admin) 000000010003e000-000000010003f000 4K rw-/rwx SM=PRV Stack 000000010005c000-00000001000de000 520K rw-/rwx SM=COW thread 1 Mach message 00000001000fb000-00000001000fd000 8K rw-/rwx SM=PRV MALLOC_LARGE 00000001000fd000-00000001000fe000 4K rw-/rwx SM=COW DefaultMallocZon Stack 0000000100401000-0000000100483000 520K rw-/rwx SM=PRV thread 2 shared memory 0000000100483000-000000010048c000 36K rw-/rwx SM=SHM shared memory 000000010048d000-0000000100490000 12K rw-/rwx SM=SHM MALLOC_LARGE (freed) 0000000101800000-0000000102200000 10.0M rw-/rwx SM=COW Stack 00007fff5f400000-00007fff5fc00000 8192K rw-/rwx SM=SHM thread 0 __DATA 00007fff5fc3c000-00007fff5fc7b000 252K rw-/rwx SM=COW /usr/lib/dyld ==== Summary for process 1 ReadOnly portion of Libraries: Total=33.0M resident=4804K(14%) swapped_out_or_unallocated=28.3M(86%) Writable regions: Total=38.3M written=384K(1%) resident=476K(1%) swapped_out=320K(1%) unallocated=37.8M(99%)
  • 10. More Tools gdb GNU Debugger, позволяет изучать программу изнутри почти в режиме интерпретатора реализован на ptrace(2) class-dump генератор прототипов классов и протоколов на базе runtime-секции бинарника IDA профессиональный инструмент для дизассемблирования и анализа кода ARM Help встроенный в OSX ARMARM с индексированием man(1) ваш друг, товарищ и брат
  • 12. Лезем в бинарник время выполнения DYLD_PRELOAD (dyld(1)) изменение протекции виртуальных страниц vm_protect/mprotect(2) не везде!
  • 13. Плагин для просмотра баланса оператора Разработаем плагин, который 1 будет посылать USSD-запрос оператору с текстом ∗101# 2 будет перехватывать интерфейс USSD-оповещений в SpringBoard и временно отключать его 3 будет обрабатывать ответ и выдирать из него остаток на счету 4 будет показывать остаток в форме, доступной через SBSettings 5 и будет автоматически обновлять баланс каждые пять минут
  • 14. Алло, коммборд! Для звонков в iPhone используется связка из MobilePhone, CoreTelephony и commcenter. Необходимый нам код скорее всего находится в MobilePhone, изучим его с помощью class-dump, IDA и GDB... Судя по списку классов, нам надо смотреть в PhoneApplication, особенно красив метод - (BOOL)dialPhoneNumber:(NSString *)phone forUID:(int)fp12 dialAssist:(BOOL)fp16; // IMP=0x0000a14c
  • 15. Внутри MobilePhone... Агрументы функции в arm передаются в регистрах (при этом не забываем про “магические” self и cmd в r0 и r1). Остановим выполнение MobilePhone в gdb прямо в начале потенциального метода: (gdb) b *0xa14c Breakpoint 1 at 0xa14c (gdb) cont Continuing. и посмотрим на phone, как только брекпоинт сработает: Breakpoint 1, 0x0000a14c in ?? () (gdb) po $r2 *101# (тут po сокращение от print-object, команды, которая вызывает -description на целевом ObjC-объекте)
  • 16. Внутри MobilePhone... (продолжение) В теле функции есть интересный вызов к CoreTelephony: CTCallDialWithID После анализа тела функции выше, можно смело утверждать о назначании двух аргументов этой функции. Попробуем запустить ее самостоятельно: (gdb) p (int)*0x5e3ac(@"*101#", -1) 0x0 функция выполнилась, а на экране – UI отправки USSD запроса. Искомый API для инициализации USSD запросов найден.
  • 17. MobileSubstrate перехват вызовов MobileSubstrate позволяет перехватить C и ObjC вызовы и выполнить необходимый код. Так, Winterboard перехватывает open и возвращает не оригинальные файлы с графикой, а файлы из каталогов текущей темы. Функции: инъекция в любую ARM/Thumb C-функцию инъекция в любой Objective-C метод загрузка пользовательских библиотек или бандлов
  • 18. Блокируем USSD интерфейс в SpringBoard Задача: заблокировать отображение USSD-окон в SpringBoard. получим список классов с помощью class-dump и изучим их. Нашей цели скорее всего соответствует класс SBUSSDAlert. с помощью анализа бектрейса у методов этого класса (используя брейкпоинты в gdb и адресам полученным из class-dump), что в методе +registerForAlerts происходит регистрация SpringBoard в системе событий CoreTelephony.
  • 20. Компилируем код без Xcode используйте make(1) (GNU Make для OSX) DEV=/Developer/Platforms/iPhoneOS.platform/Developer CC=$(DEV)/usr/bin/arm-apple-darwin9-gcc-4.2.1 SDK=$(DEV)/SDKs/iPhoneOS3.0.sdk LD=$(CC) LDFLAGS=-lobjc -dynamiclib -bind_at_load -L"$(SDK)$/usr/lib/" -F"$(SDK)$/System/Library/PrivateFrameworks/" -F"$(SDK)/System/Library/Frameworks/" -framework CoreTelephony -framework CoreFoundation -framework Foundation -framework UIKit -framework CoreGraphics -framework SystemConfiguration CFLAGS=-fconstant-cfstrings -std=gnu99 -Wall -O2 -I"$(SDK)/usr/include" -I"$(DEV)/usr/lib/gcc/arm-apple-darwin9/4.2.1/include/" -F"$(SDK)/System/Library/Frameworks" -F"$(SDK)/System/Library/PrivateFrameworks" -I"$(SDK)" VERSION=1.0 Balance.dylib: main.o BalanceView.o SBSwizzler.o Oper_Djuice.o Oper_MTC.o $(LD) $(LDFLAGS) -o $@ $^ env CODESIGN_ALLOCATE=$(DEV)/usr/bin/codesign_allocate ldid -S Balance.dylib
  • 21. Makefile на каждый день make(1) (OpenBSD), bsdmake(1) (OS X), pmake(1) (Linux) SRC?= jail INCL?= template.tex pygments.tex VIEWER?= evince -s PREVIEWER?= evince .PATH: ${.CURDIR} FIG= FIGPDF= ${FIG:S/.eps/.pdf/g} ${SRC}.pdf: ${SRC}.tex ${INCL} ${FIG} env TEXINPUTS=:${.CURDIR} pdflatex ${SRC}.tex ${FIGPDF}: ${FIG} figs: ${FIGPDF} obj: -[ -d ${.CURDIR}/obj ] || mkdir -p ${.CURDIR}/obj clean: -rm -f *.{aux,log,nav,out,snm,toc,pdf} view: ${SRC}.pdf ${VIEWER} ${SRC}.pdf pre: ${SRC}.pdf ${PREVIEWER} ${SRC}.pdf
  • 22. Makefile на каждый день (продолжение) src: for source in ‘find ${.CURDIR}/src/ -type f | grep -v CVS‘; do printf ">>> %snn" $$source; pygmentize -f latex $$source | perl -pi -e ’s/Verbatim}[/Verbatim}[fontsize=footnotesize,/g’; echo; done nframes: grep ’begin{frame}’ ${.CURDIR}/${SRC}.tex | grep -v ’s*%’ | wc -l .PHONY: clean view src nframes .SUFFIXES: .eps .pdf .eps.pdf: epstopdf $<
  • 23. Плагин для SpringBoard Можно встроится в какой-то из UIView от SpringBoard (например в lock–screen), или просто сделать плагин для SBSettings:
  • 24. Итак, для того, чтобы рассказать Вам про Jailbreak мы: farcaller@ покурил ARMARM и дампы xxd proger@ наконец залез в исходники XNU одели костюмы (:P) © 2009 Hack&Dev Team