แม้ว่าคำตอบของคุณจะถูกต้อง แต่ฉันแค่อยากจะเจาะจงให้มากขึ้นเพื่อให้คนที่อยากรู้ว่ามันget_task_allow
หมายความว่าอย่างไร
get_task_allow
เป็นสิทธิ์ที่อนุญาตให้แอปอื่น ๆ รับพอร์ตงานของแอปของคุณ ซึ่งหมายความว่าหากแอปอื่น ๆ ทำงานtask_for_pid()
โดยใช้รหัสกระบวนการของแอปพวกเขาจะได้รับพอร์ตงานของแอปของคุณเพื่อให้สามารถทำสิ่งต่างๆเช่นการเขียนและการอ่านสิ่งต่างๆในหน่วยความจำดังนั้นจึงสามารถแก้ไขสิ่งต่างๆและปรับเปลี่ยนพฤติกรรมของ แอปของคุณ
ถ้าคุณดูที่วิธีการแหกคุกงานคุณจะสังเกตเห็นหนึ่งในสิ่งแรกที่พวกเขาทำคือการได้รับtask_for_pid(mach_task_self(),0,&kernel_task);
การที่kernel_task
เป็นmach_port_t
ที่มีค่า0
เพื่อให้พวกเขามีความสามารถที่จะสัมผัสหน่วยความจำเคอร์เนลของ
เนื่องจากการให้สิทธิ์เคอร์เนลไม่มีget_task_allow
สิทธิ์และ Apple ได้ลบความเป็นไปได้ในการทำtfp0
( task_for_pid 0
) ออกไปแล้วจึงต้องมีการแก้ไข
ดังนั้นโดยพื้นฐานแล้ว Xcode ต้องสัมผัสหน่วยความจำของแอปและทำงานร่วมกับมันเพื่อแก้ไขข้อบกพร่องคุณจะต้องเปิดใช้งานสิ่งนี้เพื่อแก้ไขข้อบกพร่อง แต่คุณจะต้องปิดการใช้งานนี้เพื่อแจกจ่ายแอปของคุณมิฉะนั้นแอปใด ๆ ก็สามารถรับได้ พอร์ตงาน