Click here for the English version

Hiraku幫我翻譯了中文版,由此前往

(もともと英語でこれを書いた。ハーフ日本人だけど、日本語はまだ勉強しています。だからよく通信できないすみません。)

ディスアセンブラの使い方を知っている人のためにこれを早く書きました。

ディスアセンブラ(IDA ProHopper、とか)を使用できて、kernelcacheはもう解読し解読してある必要があります。

kernelcacheのキーはThe iPhone Wiki上に見つけることができて、kcacheのツールは1つ簡単コマンドだけを使ってkernelcacheの解読と解凍することができます。

一般情報

  • ディスアセンブラを使って見つけたすべてのアドレスから0x80001000を引いて
  • Hexストリングが見つからない場合、最後に数文字を削除してもう一度検索して

find_OSSerializer_serialize()

  • OSSerializer::serializeを検索して

find_OSSymbol_getMetaClass()

  • OSSymbol::getMetaClassを検索して

find_calend_gettime()

  • 90b501af82b0044601a86946fff7を検索して

find_bufattr_cpx()

  • _bufattr_cpxを検索して

find_clock_ops()

  • _clock_get_system_valueを検索して
  • それから、_clock_get_system_valueldr r1, [r0, #0x8]を探して
  • そのラインの右に、; 0x8001f0e5,0x80404424とかが表示されます
  • 第2のアドレスをクリックして(この例では、0x80404424
  • それから、アドレスは次のライン(この例では、0x80404428

find_copyin()

  • _copyinを検索して

find_bx_lr()

  • _bufattr_cpxを検索して
  • それから、bx lrのアドレスが表示されます

find_write_gadget()

  • 0c1080e51eff2fe1を検索して

find_vm_kernel_addrperm()

  • _buf_kernel_addrperm_addrを検索して
  • それから、_buf_kernel_addrperm_addrldr r1, [r1, #0x58]を探して
  • そのラインの右に、; 0x80456848とかが表示されます
  • そのアドレスから0x4を引くと、それがアドレスになります

find_kernel_pmap()

  • _kernel_pmapを検索して

find_flush_dcache()

  • 0000a0e35e0f07eeを検索して

find_invalidate_tlb()

  • 0000a0e3170f08ee4bf07ff56ff07ff51eff2fを検索して

find_task_for_pid()

  • f0b503af2de9000d84b0014691e8410800210391を検索して

find_setreuid()

  • f0b503af2de9000d87b0044602910394d1f800b04d68dff7を検索して