Jailbreakの仕組みを記しておこうと思います。exploitを使用して脱獄するかと思います。(完全脱獄だともう少しありますが...。exploitを正常に維持できるようにいくつかトリックを使用していますが、ここでは省略します。bootでコード署名を無効化して起動されます。未署名カーネルをロードできるので、コード署名を無効化したり、既に脱獄された状態で起動できます。カーネルパッチに関してはこちらこれでカーネル領域の脱獄は完了です。後述の理由からsandboxのパッチだけは適用していません。(混乱を招くかもしれませんが、配布ツールはsandboxのパッチも適用されてます。)起動カーネルは既にほぼ脱獄状態です。起動時にはまずsandboxをパッチしなければなりません。sandboxのパッチだけはまだ適用していないからです。policiesを0にします。mac_policy_opsにあらかじめパッチを適用して起動した場合、これは__DATAにあるのでkaslrによりカーネルパニックを起こします。そのため、以下の方法をとる必要があります。addressは0x80001000に固定されるので問題なく起動できます。2の場合は起動時にカーネルパッチをします。policiesmpo_file_check_mmapmpo_vnode_check_renamempo_vnode_check_renamempo_vnode_check_accessmpo_vnode_check_chrootmpo_vnode_check_creatempo_vnode_check_deleteextattrmpo_vnode_check_exchangedatampo_vnode_check_execmpo_vnode_check_getattrlistmpo_vnode_check_getextattrmpo_vnode_check_ioctlmpo_vnode_check_linkmpo_vnode_check_listextattrmpo_vnode_check_openmpo_vnode_check_readlinkmpo_vnode_check_setattrlistmpo_vnode_check_setextattrmpo_vnode_check_setflagsmpo_vnode_check_setmodempo_vnode_check_setownermpo_vnode_check_setutimesmpo_vnode_check_setutimesmpo_vnode_check_statmpo_vnode_check_truncatempo_vnode_check_unlinkmpo_vnode_notify_creatempo_vnode_check_fsgetpathmpo_vnode_check_getattrmpo_mount_check_statmpo_proc_check_setauidmpo_proc_check_getauidmpo_proc_check_forkこの場合、バイナリを"/usr/libexec/rtbuddyd"に配置することで、他デーモンが起動するよりも前に実行できます。10からはデーモンのidentを検証するようなので、バイナリのidentは"com.apple.rtbuddyd"に設定しておく必要があります。**前提条件として、今回の脱獄ではカーネル起動時には既にコード署名が無効化されているので、バイナリを改変したり任意のバイナリが実行可能な状態です。無事に起動できたら、次はデーモンの読み込みについて考えます。10では"/System/Library/Caches/com.apple.xpcd/xpcd_cache.dylib"に起動時に実行されるデーモンが記述されているので、ここから以下のデーモンを読み込まないように削除します。com.apple.SpringBoard.plistcom.apple.backboardd.plistcom.apple.mobile.lockdown.plistcom.apple.mobile.softwareupdated.plistcom.apple.softwareupdateserviced.plist上二つはSpringBoard関係です。JBデーモンやSubstrateをロードしてからホーム画面を読み込みたいのでリストから消しておきます。3番目はAFC2を有効化した際にSubstrateをロードしてから起動するようにしたいのでリストから消します。Update関連です。(同様に、"reloader"のバイナリのidentは"com.apple.CrashHousekeeping"に設定する必要があります。"com.apple.mobile.lockdown.plist"の3つは"/Library/LaunchDaemons"に配置しておくことで、"reloader"実行時にJBデーモンと一緒に読み込まれ、脱獄された状態でホーム画面が表示されます。7.0.4のSHSHがあること。exploitや完全脱獄について。»*警告*このブログ内には、iOSの『脱獄』(Jailbreak)に関する内容が存在します。『脱獄』を行うことで、iOSデバイスはセキュリティの低下や動作の不安定化、データの破損・消失、デバイスの破損などを引き起こす可能性がありますが、これらの行為を行ったことによるあらゆる損害や不利益に対し当ブログでは一切の責任を負いません。当ブログ側の記載ミスによって生じた損害についても一切の責任を負いません。jailbreakを作成。Reserved.はてなブログをはじめよう!diosra2さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。