What jailbreaks do (in SVC mode)God, it’s so late at night. This post  dịch - What jailbreaks do (in SVC mode)God, it’s so late at night. This post  Việt làm thế nào để nói

What jailbreaks do (in SVC mode)God

What jailbreaks do (in SVC mode)

God, it’s so late at night. This post explains how the kernel exploits work and the general code flow for patching an iOS 4.x/5.x and an 6.x kernel. (Mainly the interesting bits, and how you can potentially patch these kernels on your own.)
iOS 4.x/5.x: True Simplicity

Jailbreaks in this iOS version relied on a certain characteristic of the XNU pmap (physical mapping memory manager.). This characteristic was that kernel and user memory were shared in one address space. The address space for user processes only switched in machine_switch_context and a few other functions (see osfmk/arm/thredinit.c and others). This meant that a user could redirect a function pointer sysent to user executable code. This code could do many things such as hook various kernel functions or patch signature checking routines, and so on.
The only limitation is that the code page must be mapped as r-x, which is incredibly simple. Map the page using vm_allocate() or mmap(), change the protection flags and then invalidate/clean the caches.
iOS 6.x: Level Up

iOS 6.x doesn’t make things very easy. The kernel space executes in its own distinct address space, without any user mapped processes. This makes it impossible for the user to change sysent to a user mapped address, however, there are still flaws in this design.
In addition, the kernel text is mapped as read-only. Any writes will cause a data abort with DFSR bits equivalent to permission fault on page/section.
This is incredibly easy to circumvent, mainly because of the deisgn of the pmap subsystem. Apple uses the phys_to_virt and virt_to_phys (or equivalent) macros to convert virtual addresses to physical addresses. If you know the kernel slide, you can convert from a physical address to a virtual one by subtracting the physical base and adding the virtual base, and vice-versa.
By walking through the kernel_pmap and through the ARM translation table entries, it’s possible to change the APX and AP bits in the pages to reflect supervisor read+write. After the entries have been modified, the TLB must be flushed. When the TLB is flushed successfully, the new modified mappings will be used.
To simplify the jailbreak process, it’s much simpler to bcopy() the shellode over to a nop region present in the sleep token or to __start in the kernel. There’s not a lot of space, so be warned. This way, you don’t have to modify the page table entry for a page allocated by kalloc() or whatever.
You can also very much use the sysent technique on kernel mapped shellcode, but that’s your choice.
Kernel Exploits: A Basic Primer

All of the kernel exploits always control PC in some way to cause maximum profit or mayhem. The PC or program counter always points to the currently executing instruction.
When controlled, the PC can point to arbitrary code gadgets such as:
ldr r0, [r1]
bx lr

(This specific gadget reads the address in r1 and returns the loaded 32-bit value to the callee.)
By combining the use of PC control and register control, you can effectively run code very easily.
Jailbreak Patches

There are a few jailbreak patches, mainly:

vm_map_enter
vm_map_protect
Sandbox.kext path evaluate
AppleMobileFileIntegrity.kext codesign flags disable
proc_enforce sysctl setting
task_for_pid_0
boot-args (iOS 6.x+)
kernel codesign enforcement disable
PE_I_can_has_debugger _debug_enabled value

These values are patched using a simple ldr/str routine in the kernel shellcode. Nothing too fancy.
When the shellcode is done, it is always best to invalidate the instruction cache to PoU (and probably data).
Quick explanation of what each patch does

vm_map_enter/vm_map_protect: Used in MobileSubstrate, allows pages to be mapped as rwx, not just rw- or r-x.
Sandbox.kext path evaluate: Used for allowing applications to execute properly outside of the specified sandbox domain (ie: MobileSafari in a stashed Applications directory).
AppleMobileFileIntegrity.kext codesign flags disable: Used for allowing non-codesigned applications.
proc_enforce sysctl setting: Disable all MAC policy hooks for processes.
task_for_pid_0: Allow applications with the task-for-pid_allow entitlement to use task_for_pid on the kernel task.
boot-args: Allows launchctl to load unsigned LaunchDaemon property lists.
kernel codesign enforcement disable: Used for allowing non-codesigned pages.
PE_I_can_has_debugger: Allow basic debugging functionality and much more relaxed sandbox.
Have fun!
0/5000
Từ: -
Sang: -
Kết quả (Việt) 1: [Sao chép]
Sao chép!
những gì jailbreaks làm (trong chế độ svc)

thần, nó rất muộn vào ban đêm. bài viết này giải thích cách hạt nhân khai thác công trình và dòng code chung cho vá một 4.x/5.x ios và hạt nhân 6.x. (. Chủ yếu là các bit thú vị, và làm thế nào bạn có khả năng có thể vá những hạt nhân trên của riêng bạn)
ios 4.x/5.x: đơn giản đúng

jailbreaks trong phiên bản iOS này dựa trên một đặc điểm nhất định của xnu pmap (quản lý bộ nhớ lập bản đồ vật lý.). đặc tính này là hạt nhân và sử dụng bộ nhớ đã được chia sẻ trong một không gian địa chỉ. không gian địa chỉ cho các quá trình sử dụng chỉ chuyển trong machine_switch_context và một vài chức năng khác (xem osfmk / cánh tay / thredinit.c và những người khác).điều này có nghĩa là người dùng có thể chuyển hướng một con trỏ hàm sysent để thực thi mã người dùng. mã này có thể làm nhiều thứ như móc chức năng hạt nhân khác nhau hoặc các bản vá chữ ký thói quen kiểm tra, và như vậy.
hạn chế duy nhất là trang mã phải được ánh xạ như rx, mà là cực kỳ đơn giản. bản đồ các trang sử dụng vm_allocate () hoặc mmap (),thay đổi những lá cờ bảo vệ và sau đó mất hiệu lực / làm sạch cache
ios 6.x:. cấp lên

ios 6.x không làm cho mọi việc rất dễ dàng. không gian hạt nhân thực hiện trong không gian địa chỉ riêng biệt của nó, mà không cần sử dụng bất kỳ quá trình ánh xạ. điều này làm cho nó không thể cho người dùng thay đổi sysent cho một người dùng ánh xạ địa chỉ, tuy nhiên, vẫn còn những sai sót trong thiết kế này.
ngoài ra,các văn bản hạt nhân là ánh xạ như chỉ đọc. bất kỳ viết sẽ gây ra hủy bỏ dữ liệu với DFSR bit tương đương với sự cho phép lỗi trên trang / phần.
này là vô cùng dễ dàng để phá vỡ, chủ yếu là do deisgn của các hệ thống phụ pmap. táo sử dụng phys_to_virt và virt_to_phys (hoặc tương đương) macro để chuyển đổi địa chỉ ảo thành địa chỉ vật lý. nếu bạn biết trượt hạt nhân,bạn có thể chuyển đổi từ một địa chỉ vật lý cho một ảo bằng cách trừ đi các cơ sở vật lý và thêm các cơ sở ảo, và ngược lại.
bằng cách đi bộ qua kernel_pmap và thông qua cánh tay mục bảng dịch, nó có thể thay đổi apx và ap bit trong các trang để phản ánh giám sát đọc viết. sau khi các mục đã được sửa đổi, các TLB phải đỏ mặt.khi TLB bị xóa thành công, các bản đồ mới sửa đổi sẽ được sử dụng.
để đơn giản hóa quá trình jailbreak, nó đơn giản hơn nhiều để bcopy () các shellode trên một khu vực hiện nay nop trong chứng cứ ngủ hoặc __ bắt đầu trong hạt nhân. có không có nhiều không gian, do đó, được cảnh báo. Bằng cách này, bạn không cần phải sửa đổi các mục bảng trang cho một trang giao kalloc () hoặc bất cứ điều gì.
bạn cũng có thể sử dụng rất nhiều kỹ thuật sysent trên ánh xạ hạt nhân shellcode, nhưng đó là sự lựa chọn của bạn
khai thác hạt nhân: một mồi cơ bản

tất cả các hạt nhân khai thác luôn luôn kiểm soát máy tính một cách nào đó gây ra lợi nhuận tối đa hoặc tình trạng lộn xộn.. máy tính hoặc chương trình truy cập luôn luôn trỏ vào lệnh hiện đang thực hiện
khi kiểm soát, máy tính có thể chỉ để mã tiện ích tùy ý như:.
ldr r0, [r1]
bx lr

(Tiện ích này cụ thể đọc địa chỉ trong r1 và trả về giá trị nạp 32-bit để các callee.)
Bằng cách kết hợp việc sử dụng kiểm soát máy tính và đăng ký kiểm soát, bạn có hiệu quả có thể chạy mã rất dễ dàng.
Bản vá lỗi Jailbreak

có một vài bản vá lỗi jailbreak, chủ yếu là:

vm_map_enter

vm_map_protect sandbox.kext con đường đánh giá
applemobilefileintegrity.kext codesign cờ vô hiệu hóa
proc_enforce thiết lập sysctl
task_for_pid_0
khởi động-args (ios 6.x)
hạt nhân codesign thi hành vô hiệu hóa
pe_i_can_has_debugger _debug_enabled giá trị

các giá trị được vá bằng cách sử dụng thường xuyên ldr / str đơn giản trong shellcode hạt nhân. . không có gì quá lạ mắt
khi shellcode được thực hiện, nó luôn luôn là tốt nhất để làm mất hiệu lực bộ nhớ cache hướng dẫn để pou (và có lẽ dữ liệu)
nhanh chóng giải thích về những gì mỗi miếng vá không

vm_map_enter / vm_map_protect.:được sử dụng trong mobilesubstrate, cho phép các trang được ánh xạ như rwx, không chỉ rw hoặc rx
sandbox.kext con đường đánh giá:. được sử dụng để cho phép các ứng dụng để thực hiện đúng bên ngoài tên miền sandbox quy định (ví dụ: MobileSafari trong một ứng dụng thư mục cất giấu).
applemobilefileintegrity.kext codesign cờ vô hiệu hóa: được sử dụng để cho phép các ứng dụng không codesigned
proc_enforce thiết lập sysctl.:vô hiệu hóa tất cả các móc chính sách mac cho quá trình
task_for_pid_0:. cho phép các ứng dụng với các chức danh công việc-cho-pid_allow sử dụng task_for_pid vào nhiệm vụ hạt nhân
khởi động-args:.. cho phép launchctl để tải danh sách tài sản launchdaemon dấu
hạt nhân codesign thi hành vô hiệu hóa: sử dụng cho phép các trang không codesigned
pe_i_can_has_debugger.:cho phép chức năng gỡ lỗi cơ bản và nhiều hơn nữa chỗ thử thoải mái
vui chơi.
đang được dịch, vui lòng đợi..
Kết quả (Việt) 2:[Sao chép]
Sao chép!
Jailbreaks làm gì (trong chế độ SVC)

Thiên Chúa, nó là muộn vào ban đêm. Bài đăng này giải thích làm thế nào hạt nhân khai thác công việc và dòng chảy chung mã cho vá một 4.x/5.x iOS và một hạt nhân 6.x. (Chủ yếu là các bit thú vị, và làm thế nào bạn có khả năng có thể vá các hạt nhân mình.)
iOS 4.x/5.x: sự thật đơn giản

Jailbreaks trong phiên bản iOS này dựa vào một đặc tính nhất định của XNU pmap (quản lý bộ nhớ vật lý ánh xạ.). Đặc trưng này là hạt nhân và người sử dụng bộ nhớ đã được chia sẻ trong một địa chỉ không gian. Không gian địa chỉ cho người dùng quá trình chỉ chuyển trong machine_switch_context và một vài chức năng khác (xem osfmk/arm/thredinit.c và những người khác). Điều này có nghĩa rằng người dùng có thể chuyển hướng một con trỏ hàm sysent để người sử dụng mã thực thi. Mã này có thể làm nhiều điều như móc chức năng hạt nhân khác nhau hoặc vá chữ ký kiểm tra thói quen, và vv..
hạn chế duy nhất là rằng trang mã phải được ánh xạ như r-x, mà là vô cùng đơn giản. Bản đồ trang web bằng cách sử dụng vm_allocate() hoặc mmap(), thay đổi lá cờ bảo vệ và sau đó làm mất hiệu lực/sạch cache.
iOS 6.x: Level Up

iOS 6.x không làm cho những điều rất dễ dàng. Không gian hạt nhân thực hiện trong không gian địa chỉ khác biệt riêng của mình, mà không có bất kỳ quá trình người dùng ánh xạ. Điều này làm cho nó không thể cho người dùng để thay đổi sysent đến một địa chỉ người dùng được ánh xạ, Tuy nhiên, có vẫn còn sai sót trong thiết kế này.
ngoài ra, văn bản hạt nhân là ánh xạ là chỉ-đọc. Viết bất kỳ sẽ gây ra một hủy bỏ dữ liệu với DFSR bit tương đương với sự cho phép lỗi trên trang / phần.
điều này là vô cùng dễ dàng để phá vỡ, chủ yếu là do deisgn các hệ thống phụ pmap. Apple sử dụng các macro phys_to_virt và virt_to_phys (hoặc tương đương) để chuyển đổi địa chỉ ảo để địa chỉ vật lý. Nếu bạn biết trượt hạt nhân, bạn có thể chuyển từ một địa chỉ vật lý một ảo bởi trừ các cơ sở vật chất và thêm các cơ sở ảo, và phó-versa.
bằng cách đi bộ thông qua kernel_pmap và thông qua các cánh tay dịch bảng mục, ta có thể thay đổi các bit APX và AP trong trang để phản ánh giám sát đọc viết. Sau khi các mục đã bị sửa đổi, TLB phải được xóa. Khi TLB xóa thành công, ánh xạ lần mới sẽ được sử dụng.
để đơn giản hóa quá trình jailbreak, nó là đơn giản hơn nhiều để bcopy() shellode trên một khu vực nop hiện nay trong kỷ niệm giấc ngủ hoặc __start trong hạt nhân. Không phải là rất nhiều không gian, do đó, được cảnh báo. Bằng cách này, bạn không cần phải sửa đổi các mục nhập bảng trang cho một trang được phân bổ bởi kalloc() hoặc bất cứ điều gì.
Bạn cũng có thể rất nhiều sử dụng kỹ thuật sysent trên hạt nhân ánh xạ shellcode, nhưng đó là sự lựa chọn của bạn.
hạt nhân khai thác: A cơ bản mồi

tất cả hạt nhân khai thác luôn kiểm soát máy tính trong một số cách để làm cho lợi nhuận tối đa hoặc tình trạng lộn xộn. Số lượt truy cập máy tính hoặc chương trình luôn luôn chỉ để giảng dạy hiện nay executing.
khi kiểm soát, máy PC có thể trỏ đến mã bất kỳ tiện ích như:
ldr r0, [r1]
bx lr

(Tiện ích cụ thể này đọc địa chỉ ở r1 và trả về giá trị 32-bit nạp để callee.)
Bằng cách kết hợp việc sử dụng máy tính điều khiển và kiểm soát đăng ký, bạn có thể có hiệu quả chạy mã rất dễ dàng.
Jailbreak bản vá lỗi

có một vài jailbreak bản vá lỗi, mainly:

vm_map_enter
vm_map_protect
Sandbox.kext con đường evaluate
AppleMobileFileIntegrity.kext codesign cờ vô hiệu hóa
proc_enforce sysctl thiết lập
task_for_pid_0
khởi động-args (iOS 6.x)
vô hiệu hóa hạt nhân codesign thực thi
PE_I_can_has_debugger _debug_enabled giá trị

những giá trị này được vá bằng cách sử dụng một thói quen đơn giản ldr/str ở shellcode hạt nhân. Không có gì quá lạ mắt.
khi shellcode được thực hiện, nó luôn luôn là tốt nhất để làm mất hiệu lực bộ nhớ cache chỉ dẫn để PoU (và có lẽ dữ liệu).
nhanh chóng giải thích về những gì mỗi vá làm

vm_map_enter/vm_map_protect: Được sử dụng trong MobileSubstrate, cho phép các trang web được vẽ bản đồ như rwx, không chỉ rw - hoặc r-x.
Sandbox.kext con đường đánh giá: được sử dụng để cho phép các ứng dụng để thực hiện đúng cách bên ngoài miền được chỉ định chỗ thử (ví dụ: MobileSafari trong một thư mục ứng dụng giấu).
AppleMobileFileIntegrity.kext codesign cờ vô hiệu hóa: sử dụng cho phép phòng không codesigned ứng dụng.
proc_enforce sysctl thiết lập: Vô hiệu hoá tất cả MAC chính sách móc cho quá trình.
task_for_pid_0: cho phép các ứng dụng với quyền lợi được nhiệm vụ cho pid_allow để sử dụng task_for_pid trên nhiệm vụ hạt nhân.
khởi động-args: cho phép bắt để tải dấu các LaunchDaemon bất động sản danh sách.
vô hiệu hóa hạt nhân thực thi pháp luật codesign: được sử dụng cho phép phòng không codesigned trang.
PE_I_can_has_debugger: Cho phép chức năng gỡ lỗi cơ bản và nhiều hơn nữa thoải mái chỗ thử.
vui chơi!
đang được dịch, vui lòng đợi..
 
Các ngôn ngữ khác
Hỗ trợ công cụ dịch thuật: Albania, Amharic, Anh, Armenia, Azerbaijan, Ba Lan, Ba Tư, Bantu, Basque, Belarus, Bengal, Bosnia, Bulgaria, Bồ Đào Nha, Catalan, Cebuano, Chichewa, Corsi, Creole (Haiti), Croatia, Do Thái, Estonia, Filipino, Frisia, Gael Scotland, Galicia, George, Gujarat, Hausa, Hawaii, Hindi, Hmong, Hungary, Hy Lạp, Hà Lan, Hà Lan (Nam Phi), Hàn, Iceland, Igbo, Ireland, Java, Kannada, Kazakh, Khmer, Kinyarwanda, Klingon, Kurd, Kyrgyz, Latinh, Latvia, Litva, Luxembourg, Lào, Macedonia, Malagasy, Malayalam, Malta, Maori, Marathi, Myanmar, Mã Lai, Mông Cổ, Na Uy, Nepal, Nga, Nhật, Odia (Oriya), Pashto, Pháp, Phát hiện ngôn ngữ, Phần Lan, Punjab, Quốc tế ngữ, Rumani, Samoa, Serbia, Sesotho, Shona, Sindhi, Sinhala, Slovak, Slovenia, Somali, Sunda, Swahili, Séc, Tajik, Tamil, Tatar, Telugu, Thái, Thổ Nhĩ Kỳ, Thụy Điển, Tiếng Indonesia, Tiếng Ý, Trung, Trung (Phồn thể), Turkmen, Tây Ban Nha, Ukraina, Urdu, Uyghur, Uzbek, Việt, Xứ Wales, Yiddish, Yoruba, Zulu, Đan Mạch, Đức, Ả Rập, dịch ngôn ngữ.

Copyright ©2025 I Love Translation. All reserved.

E-mail: