Click here for the English version

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

(日本人と台湾人のハーフなんですけど、日本語はまだ勉強していますから、間違いがあっても補正してください。)

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

もう解読したkernelcacheとディスアセンブラ(HopperIDA Pro、とか)が必要です。

kernelcacheのキーはThe iPhone Wiki上に見つけることができて、kcacheというツールを使ってkernelcacheを解読することができます。

一般情報

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

find_OSSerializer_serialize()

  • OSSerializer::serializeを検索してください

find_OSSymbol_getMetaClass()

  • OSSymbol::getMetaClassを検索してください

find_calend_gettime()

  • Hexストリングの90b501af82b0044601a86946fff7を検索してください

find_bufattr_cpx()

  • _bufattr_cpxを検索してください

find_clock_ops()

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

find_copyin()

  • _copyinを検索してください

find_bx_lr()

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

find_write_gadget()

  • Hexストリングの0c1080e51eff2fe1を検索してください

find_vm_kernel_addrperm()

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

find_kernel_pmap()

  • _kernel_pmapを検索してください

find_flush_dcache()

  • Hexストリングの0000a0e35e0f07eeを検索してください

find_invalidate_tlb()

  • Hexストリングの0000a0e3170f08ee4bf07ff56ff07ff51eff2fを検索してください

find_task_for_pid()

  • Hexストリングのf0b503af2de9000d84b0014691e8410800210391を検索してください

find_setreuid()

  • Hexストリングのf0b503af2de9000d87b0044602910394d1f800b04d68dff7を検索してください