1 คะแนน โดย GN⁺ 2024-03-11 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • iPhone รุ่นแรกในปี 2007 ไม่สามารถเปิดใช้งานได้หากไม่สมัครใช้งาน AT&T ในสหรัฐฯ และ iPhone Dev Team ก็เดินหน้าค้นหาวิธีใช้งานกับเครือข่ายอื่นด้วยซอฟต์แวร์ล้วนอย่างเปิดเผย
  • งานนี้สรุปได้เป็น 6 หมุดหมาย ตั้งแต่การถอดรหัสเฟิร์มแวร์, การข้ามขั้นตอนการเปิดใช้งาน, การได้สิทธิ์เขียน, การสร้าง toolchain สำหรับ ARM/Mach-O, การรันแอปจากภายนอก, ไปจนถึงการปลดล็อกผู้ให้บริการเครือข่าย
  • จุดทะลวงแรก ๆ คือการวิเคราะห์ ramdisk และ DMG ที่เข้ารหัสภายใน .ipsw รวมถึงการใช้ช่องโหว่การส่งซ้ำในการตรวจสอบการเปิดใช้งานของ lockdownd เพื่อเข้าถึงหน้าจอโฮม
  • สิทธิ์เขียนได้มาจากการโหลด ramdisk และ kernelcache ใน Recovery Mode แล้วแก้ fstab กับ Services.plist เพื่อให้จัดการ root filesystem ได้ แทน afcd ที่เดิมถูกกักไว้ใน /root/Media
  • การปลดล็อกขั้นสุดท้ายถูกทำให้เป็นอัตโนมัติด้วย anySIM ที่ดัมพ์ แพตช์ และอัปโหลดเฟิร์มแวร์ baseband ใหม่ พร้อมรัน AT+CLCK="PN",0,"00000000" และ Apple ก็ออก firmware v1.1.1 มาตอบโต้ในวันที่ 27 กันยายน 2007

iPhone ปี 2007 และเป้าหมายของ DevTeam

  • Apple เปิดตัว iPhone เมื่อวันที่ 29 มิถุนายน 2007 โดยตอนนั้นราคาอยู่ที่ $499 สำหรับรุ่น 4GB และ $599 สำหรับรุ่น 8GB
  • iPhone ที่แกะออกจากกล่องจะอยู่ในสถานะยังไม่เปิดใช้งานและแสดงเพียงหน้าจอ Connect to iTunes โดยผู้ใช้ต้องสมัคร สมาชิก AT&T ผ่าน iTunes
  • แม้สมัครแล้ว ตัวเครื่องก็ยังคงถูกล็อกไว้กับ AT&T
  • แคนาดาไม่มีแผนวางจำหน่าย iPhone รุ่นแรกในช่วงต้น และ Apple ก็เพิ่งตกลงกับ Rogers พร้อม iPhone 3G ในวันที่ 11 กรกฎาคม 2008
  • iPhone Dev Team รวมตัวกันโดยมีเป้าหมายให้ใช้งานเครื่องกับผู้ให้บริการรายใดก็ได้ด้วยซอฟต์แวร์ล้วน และมักอัปเดตความคืบหน้าผ่านบล็อก iphone.fiveforty.net
    • วันที่ 3 กรกฎาคม 2007 มีการโพสต์อัปเดต 8 ครั้งตั้งแต่เที่ยงคืนถึง 21:00 น.

6 หมุดหมายของ DevTeam

  • การทำให้เครื่องที่ถูกล็อกใช้งานได้เหมือนสมาร์ตโฟนทั่วไป ต้องผ่านขั้นตอนต่อไปนี้
    • สิทธิ์อ่านเพื่อทำความเข้าใจระบบ: Break DMG Password
    • หลุดจากสถานะยังไม่เปิดใช้งาน: Bypass Activation
    • สิทธิ์เขียนเพื่อแก้ไขระบบ: Get Write Access
    • Working Toolchain สำหรับสร้างไฟล์รันแบบกำหนดเอง
    • Unlock เพื่อให้ baseband เชื่อมต่อกับผู้ให้บริการรายใดก็ได้
    • แอปสำหรับทำทั้งกระบวนการให้เป็นอัตโนมัติ: Enable Third-Party Applications
  • ตามข้อมูลจาก Wayback Machine ณ วันที่ 6 กรกฎาคม 2007 มีหมุดหมายสำเร็จแล้ว 2 จาก 6 และการเดินทางนี้สิ้นสุดลงในวันที่ 12 กันยายน 2007
  • หน้าสถานะที่ถูกเก็บเมื่อวันที่ 25 กันยายน 2007 แสดงว่า Decrypt Firmware, Bypass Activation, Get Write Access, Get Working Toolchain, Enable Third-party Applications, Unlock Phone เสร็จสมบูรณ์แล้ว

การวิเคราะห์ .ipsw และการอ่านไฟล์ระบบ

  • iTunes ดาวน์โหลด iPhone Software archive นามสกุล .ipsw สำหรับกู้คืนอุปกรณ์ และไฟล์นี้มีรูปแบบเป็น zip
  • ภายใน iPhone1,1_1.0_1A543a_Restore.ipsw มีอิมเมจกู้คืนแบบ img2, โฟลเดอร์ Firmware ที่เกี่ยวข้องกับ baseband, kernelcache ซึ่งเป็นเคอร์เนล iOS, และไฟล์ DMG ขนาดใหญ่ 2 ไฟล์
    • ขนาดรวมของ archive สำหรับกู้คืน iOS อยู่ที่ประมาณ 105MiB
  • DMG แรก 694-5259-38.dmg เป็น ramdisk ที่ใช้ตอนกู้คืน และไม่ได้เข้ารหัส จึงสามารถเมานต์ด้วย dd ได้
  • แม้ ramdisk จะไม่ใช่ไฟล์ระบบ iOS ทั้งหมด แต่ก็ทำให้ตรวจสอบรหัสผ่านของผู้ใช้ mobile ที่ใช้รันแอป และ root ที่ใช้รันโปรเซสอื่น ๆ ได้จาก /private/etc/master.passwd
  • DMG ที่สอง 694-5262-39.dmg เป็นไฟล์ระบบ iOS สำหรับการบูตปกติและถูกเข้ารหัสไว้
    • พบคีย์อยู่ใน /usr/sbin/asr บน ramdisk
    • เนื่องจากเป็นคีย์ไม่ใช่ passphrase จึงใช้ hdiutil ไม่ได้ และ DevTeam ก็เขียนเครื่องมือถอดรหัสของตัวเองชื่อ vfdecrypt.c
    • หลังถอดรหัสแล้ว จึงได้ สิทธิ์อ่าน ไฟล์ระบบทั้งหมดขณะรันจริง

การข้ามขั้นตอนการเปิดใช้งาน

  • การเปิดใช้งานตามปกติเกี่ยวข้องกับ iTunes, เซิร์ฟเวอร์ Apple albert.apple.com, และ lockdownd บน iPhone
    • iTunes รวบรวม DeviceID, IMEI, ICCID ของอุปกรณ์
    • ส่งค่าทั้งสามที่รวมเป็นโทเคนไปยังเซิร์ฟเวอร์ Apple
    • เซิร์ฟเวอร์ Apple ลงลายเซ็นโทเคนด้วย private key แล้วส่งกลับ
    • lockdownd ที่รออยู่ผ่าน USB จะตรวจสอบโทเคนด้วย public key ของ Apple
    • หากโทเคนมาจาก Apple และตรงกับข้อมูลเครื่อง สถานะจะเปลี่ยนเป็น Activated
  • PhoneActivationServer ของ dvdjon แพตช์ iTunes ให้เข้าถึงเซิร์ฟเวอร์เปิดใช้งานผ่าน HTTP แทน HTTPS และเปลี่ยนปลายทางคำขอไปยังเซิร์ฟเวอร์ของตัวเอง
  • แก่นสำคัญคือไม่ได้สร้าง signed token ใหม่ แต่ใช้วิธีส่งซ้ำโดยคืน signed token เดิมที่ดักจับมาจากการเปิดใช้งานที่สำเร็จแล้ว โดยไม่สนค่าขาเข้า
  • ตามคำอธิบายของ George Hotz นั้น lockdownd ไม่ได้ตรวจว่าค่า DeviceID, IMEI, ICCID ในคำตอบตรงกับค่าจริงของอุปกรณ์หรือไม่
  • DevTeam สร้าง CLI tools ที่อ่าน signed token แบบฮาร์ดโค้ดจาก plist แล้วส่งไปยัง iPhone และภายหลังพัฒนาเป็น iPhoneInterface ที่ทำงานได้โดยไม่ต้องใช้ iTunes

สิทธิ์เขียนและการเจลเบรก

  • iPhone ที่เปิดใช้งานแล้วสามารถอัปโหลดไฟล์อย่างเพลงและรูปผ่าน iTunes ได้ แต่โปรเซส afcd ที่รับหน้าที่อัปโหลดถูกขังอยู่ใน chroot jail ที่ /root/Media
  • มีเพียงพาร์ทิชันผู้ใช้เท่านั้นที่เมานต์แบบอ่าน/เขียน (rw) ส่วนพาร์ทิชันระบบเป็นแบบอ่านอย่างเดียว (r)
  • เป้าหมายคือหลุดจาก chroot jail และเขียนถึงพาร์ทิชันระบบได้ ซึ่งเป็นที่มาของคำว่า jailbreaking
  • การบูตของ iPhone แบ่งเป็นโหมดปกติและ Recovery Mode
    • โหมดปกติเป็นลำดับ BootROM → LLB → iBoot → Kernel → Normal Mode โดยแต่ละขั้นจะตรวจสอบลายเซ็นของขั้นถัดไป
    • Recovery Mode จะหยุดที่ขั้น iBoot และ iTunes จะโหลด ramdisk, kernelcache ฯลฯ เข้า RAM เพื่อเข้าสู่โหมดกู้คืน
  • DevTeam ตรวจสอบวิธีที่ iTunes เขียนลงไฟล์ระบบระหว่างการกู้คืนจาก iTunesMobile.dll และพบคำสั่งอย่าง mount, umount, ditto
  • iPHUC เป็นเครื่องมือ CLI ที่ใช้เมธอดภายในที่ไม่เปิดเผยของ iTunesMobile.dll เพื่อสื่อสารกับอุปกรณ์ใน Recovery Mode
    • ผู้ใช้ทำให้อุปกรณ์เข้าสู่ Recovery Mode
    • ส่ง ramdisk ไปยังอุปกรณ์และโหลดเข้า RAM
    • ส่ง kernelcache แล้วบูตเคอร์เนลให้ชี้ไปยัง ramdisk
    • อุปกรณ์จะเข้าสู่ Restore Mode
  • ขั้นตอนเจลเบรกจริงเกิดจากการแก้ fstab และ Services.plist
    • ใน fstab เปลี่ยนให้พาร์ทิชันระบบเมานต์แบบ rw แทนอ่านอย่างเดียว
    • ใน Services.plist สร้างบริการ afcd ตัวที่สองที่อ้างอิงจาก / แทน /root/Media
    • หลังรีบูต iTunes จะมองเห็นไฟล์ระบบทั้งหมดผ่าน afcd2 และทั้งพาร์ทิชันระบบกับผู้ใช้ก็อ่าน/เขียนได้
  • หลังจากนั้นการเปิดใช้งานและการได้สิทธิ์เขียนก็ถูกทำให้เป็นอัตโนมัติผ่านแอปเดสก์ท็อป Mac OS X ชื่อ INdependence

Toolchain และแอปจากภายนอก

  • มีข้อมูลสาธารณะเกี่ยวกับขั้นตอนสร้าง toolchain และการรันแอปภายนอกไม่มากนัก แต่มีผู้ร่วมงานอย่างน้อย 12 คน
  • เมื่อวันที่ 19 กรกฎาคม 2007 binutils toolchain ที่ตั้งเป้า ARM ก็เสร็จสมบูรณ์ ทำให้ DevTeam สามารถรันโปรแกรมที่พวกเขาสร้างเองบน iPhone ได้
  • ARM/Mach-O Toolchain ของ Nightwatch ถูกใช้คอมไพล์แอป Hello World แบบอิสระตัวแรกและรันบน iPhone ได้สำเร็จ
  • GeoHotz อธิบายว่าก่อนหน้านั้นไม่มีชุดผสม Mach-O กับ ARM นอก Apple จึงต้องเขียนขึ้นมาเอง
  • อีกเป้าหมายหนึ่งของ toolchain คือการสร้าง MobileTerminal.h ขึ้นใหม่เพื่อเปิดเผยฟังก์ชันภายในที่ไม่เปิดเผยของ iTunesMobile.so และสื่อสารกับ afc ได้โดยไม่ต้องรัน iTunes
  • แม้บางการบรรยายจะบอกว่าเคอร์เนลตรวจลายเซ็นไฟล์รันก่อน execl แต่สรุปได้ว่า iPhone รุ่นแรกยังไม่ทำเช่นนั้น และน่าจะเพิ่งถูกนำมาใช้ใน v1.1.1

การปลดล็อก baseband และ anySIM

  • iPhone แยกออกเป็นส่วนสมาร์ตโฟนที่รัน iOS และส่วน baseband ที่ทำหน้าที่โทรศัพท์/โมเด็ม
    • ทั้งสองระบบมี RAM, CPU, สตอเรจ, เฟิร์มแวร์ และออสซิลเลเตอร์ของตัวเอง
    • ทั้งคู่สื่อสารกันผ่านสาย UART ที่เมานต์เป็น /dev/tty.baseband โดยใช้คำสั่ง AT
  • คำสั่ง AT ที่จำเป็นต่อการปลดล็อกเป็นที่รู้กันตั้งแต่ช่วงต้น
    • AT+CLCK="PN",0,"xxxxxxxx"
    • xxxxxxxx คือ NCK หรือ Network Control Key ซึ่งเชื่อว่ามีค่าเฉพาะต่อเครื่อง
    • จำนวนครั้งที่ลองถูกจำกัดไว้ที่ 3 ถึง 10 ครั้ง และหลังจากนั้นเฟิร์มแวร์อาจล็อกกับ AT&T แบบถาวร
  • baseband เองก็มี BootROM และ chain of trust พร้อมการตรวจสอบลายเซ็นเช่นกัน
  • MuscleNerd อธิบายว่า baseband ไม่มีตาข่ายนิรภัยอย่าง DFU/Recovery Mode ดังนั้นถ้าแตะ NOR หรืออิมเมจพลาด อุปกรณ์อาจพังถาวรได้
  • ในเดือนกรกฎาคม 2007 DevTeam ทำ reverse engineer baseband ภายใน .ipsw และวิเคราะห์ /usr/local/bin/bbupdater บน ramdisk เพื่อหาคำสั่งสำหรับอัปโหลด baseband ใหม่
  • CLI ตัวแรก iUnlock ต้องใช้หลายไฟล์ เช่น เฟิร์มแวร์ที่ดัมพ์ออกมา nor และ ICE03.12.06_G.fls
  • ต่อมามีแอป anySIM ที่ใช้งานง่ายกว่า เพียงนำขึ้นเครื่องแล้วกดปุ่มเดียวก็รันได้
  • anySIM ทำงานตามลำดับดังนี้
    • เปิด /dev/tty.baseband และตั้งค่าพารามิเตอร์ของโมเด็ม
    • ดัมพ์ baseband ขนาด 4MiB หรือก็คือ NOR ไปยัง /tmp
    • โหลด baseband เข้า RAM
    • โหลด secpack ICE03.12.06_G.fls จาก ramdisk
    • แพตช์คำสั่งของ baseband ใน RAM เพื่อให้ NCK ใด ๆ ก็ปลดล็อกได้
    • อัปโหลด baseband ที่แพตช์แล้วกลับเข้าไป
    • รัน AT+CLCK="PN",0,"00000000" และ AT+CLCK="PN",2

ทริก -0x400

  • ตามปกติแล้วเฟิร์มแวร์ baseband ที่ถูกแพตช์ไม่ควรผ่านการตรวจลายเซ็น และการอัปโหลดก็ควรล้มเหลว
  • วิธีข้ามคือใช้ออฟเซ็ต minus 0x400
  • GeoHotz อธิบายว่า 0x400 ไบต์แรกจะยังไม่ถูกใช้งานจนกว่าจะตรวจลายเซ็นเสร็จ ดังนั้นจึงเริ่มเขียนจากตำแหน่งก่อนหน้า 0x400 ไบต์ได้
  • ต่อมาจากคำอธิบายของผู้อ่าน Hacker News ระบุว่า baseband รับเฟิร์มแวร์ใหม่เป็นชังก์ขนาดสูงสุด 0x800 ไบต์
    • ไม่ได้เก็บทั้ง 4MiB ไว้ใน RAM ก่อนแล้วค่อยตรวจ checksum และเขียนลงแฟลช
    • ไบต์ที่รับมาจะถูกเขียนลงแฟลชทันที แต่ 0x400 ไบต์แรกเท่านั้นที่จะถูกบัฟเฟอร์ไว้ใน RAM
    • เมื่ออัปโหลดเสร็จ baseband จะตรวจ checksum
    • ถ้าล้มเหลว 0x400 ไบต์แรกที่บัฟเฟอร์ไว้จะไม่ถูกเขียนลงแฟลชและถูกทิ้งไป
  • วิธี -0x400 คือเริ่มจากเขียนข้อมูลขยะลงไปก่อนหน้าตำแหน่งเฟิร์มแวร์จริง 0x400 ไบต์ แล้วค่อยส่งเฟิร์มแวร์ 4MiB ตามมา
    • checksum จะล้มเหลว ทำให้ข้อมูลขยะ 0x400 ไบต์ถูกทิ้ง
    • แต่เฟิร์มแวร์ใหม่ส่วนที่เหลือได้ถูกเขียนลงแฟลชในตำแหน่งที่ถูกต้องไปแล้ว

ความสำเร็จและเกมแมวจับหนูหลังจากนั้น

  • คำแนะนำการปลดล็อกด้วยซอฟต์แวร์ทั้งหมดถูกเผยแพร่เมื่อวันที่ 12 กันยายน 2007
  • มีการเผยแพร่กรณีใช้งานสำเร็จจากหลายทวีปพร้อมกัน และมีกรณีจากแคนาดารวมอยู่ด้วย
  • Apple ออก iPhone firmware v1.1.1 อย่างรวดเร็วในวันที่ 27 กันยายน 2007
  • แถบสถานะความคืบหน้าของ DevTeam ถูกรีเซ็ตเป็น Decrypt 1.1.1, Get Write Access 1.1.1, Activate 1.1.1, Unlock 1.1.1, Enable Third-party Applications 1.1.1
  • จากจุดนั้น เกมแบบ แมวจับหนู ระหว่าง Apple กับชุมชนแฮ็ก iPhone ก็เริ่มต้นขึ้นและดำเนินต่อไปหลังจากนั้น

1 ความคิดเห็น

 
GN⁺ 2024-03-11
ความเห็นจาก Hacker News
  • นี่เป็นวิธีที่พบได้บ่อยในการอัปเดตเฟิร์มแวร์ โดย 0x400 ไบต์ แรกเป็นเฮดเดอร์ที่ตัวโหลดของสเตจก่อนหน้าต้องตรวจสอบก่อนบูตสเตจนี้ จึงรับข้อมูลและเขียนได้อย่างอิสระ แต่จะไม่เขียนเฮดเดอร์
    เมื่อไม่มีเฮดเดอร์ก็จะไม่ไปสู่การรันโค้ดจึงปลอดภัย แล้วตอนท้ายจะตรวจสอบลายเซ็นของทั้งชุด หากผ่านก็เขียนเฮดเดอร์เพื่อทำให้อิมเมจทั้งหมดใช้งานได้
    กลเม็ดตรงนี้คือเขียนขยะ 0x400 ไบต์ก่อนตำแหน่งที่ต้องการเขียนจริงอยู่ 0x400 ไบต์ ส่วนนี้จะถูกมองเป็นเฮดเดอร์จึงแค่ถูกบัฟเฟอร์ไว้และไม่ถูกเขียนจริง ส่วนข้อมูลที่ส่งที่เหลือจะถูกเขียนลงตำแหน่งที่ต้องการจริง ๆ หลังจากนั้นการตรวจสอบลายเซ็นจะล้มเหลว และ 0x400 ไบต์แรกที่เดิมไม่ต้องการก็จะไม่ถูกเขียน จึงถือว่าสำเร็จ
    • ส่วนที่เรียกว่า “โหมดกู้คืน” นั้น ตอนนั้นน่าจะเรียกว่า โหมด DFU มากกว่า ย่อมาจาก “Device firmware update” และไม่แน่ใจว่าตอนนั้นมีใครเรียกมันว่า “recovery” หรือไม่ เพราะผ่านมานานกว่า 15 ปีแล้ว
    • iZsh(https://x.com/izsh1911) น่าจะพอรู้เหมือนกัน แต่ขาดการติดต่อกันไปนานกว่าสิบปีแล้ว
  • สมกับเป็นงานเขียนของ Fabien เขียนดีและละเอียดมาก จำได้ว่าเคยเห็นตอนเขากำลังวิเคราะห์ กลไกป้องกันของ iPhone นี้อยู่ และหลังจากนั้นมันก็เป็นเส้นทางที่ยาวนานมาก
    ส่วนการ ขยับ -0x400 ก่อนเขียนข้อมูล ถ้ามีใครอธิบายเพิ่มอีกหน่อยก็น่าจะเข้าใจครบถ้วน
    • การขยับ -0x400 ดูเหมือนจะทำงานประมาณนี้
      ใช้ Seek(fd, 0xA0020000 - 0x400); เพื่อเลื่อนไปก่อนตำแหน่งที่จะเขียนข้อมูลจริง 0x400 ไบต์ แล้วใช้ SendWrite(fd, foo, 0x400, false); เพื่อเติม 0 ลงใน 0x400 ไบต์แรก ที่อยากเขียน
      จากนั้นใช้ SendWrite(fd, fw, fwsize, true); เพื่อใส่ไบต์ที่เหลือด้วยข้อมูลจริง แล้วเรียก SendEndSecpack(fd); ตัว iPhone จะคัดลอกข้อมูลหลัง 0x400 ไบต์ นั่นคือข้อมูลทั้งหมดที่เราอยากเขียน แล้วลองตรวจสอบลายเซ็นและล้มเหลว หากการตรวจสอบลายเซ็นสำเร็จ 0x400 ไบต์แรกที่ปล่อยไว้เป็น 0 ก็คงจะถูกคัดลอกในตอนนั้นด้วย
  • เพื่อบันทึกไว้ในหน้าประวัติศาสตร์ ฉันเป็นคนสร้าง iPHUC ขึ้นมา และชื่อนั้นก็ตั้งตอนอายุ 19 คนที่ใช้นามแฝงว่า “nightwatch” เป็นกำลังสำคัญของการเจลเบรกยุคแรกและเป็นคนสร้างคำว่า “jailbreak” ขึ้นมา และร่วมงานกันได้ดีมาก
    เท่าที่จำได้ เขาน่าจะเป็นคนจัดการ PDF หรือ TIFF exploit ที่ใช้ปลดล็อก PSP ด้วย เหมือนจะอาศัยและทำงานอยู่แถวมหาวิทยาลัยสักแห่งในอเมริกาใต้ แต่ฉันรู้แค่นั้น
    มันเป็นช่วงเวลาที่สนุกมากและได้เรียนรู้อะไรเยอะมาก เพียงแต่ George Hotz ทำให้ความปลอดภัยของบางคนที่ช่วยเขาเข้าถึงเอกสารภาษาญี่ปุ่นตกอยู่ในความเสี่ยง ทั้งที่มีการขอซ้ำแล้วซ้ำเล่าว่าอย่าทำแบบนั้น ซึ่งน่าหงุดหงิดมาก และสุดท้ายก็เป็นเหตุผลที่ dev team ถอนตัวจากโปรเจกต์
    • ทำให้นึกขึ้นได้ว่ามีคนหนึ่งที่ใช้นามแฝงว่า “pineapple” ซึ่งเป็นหนึ่งในคนที่ช่วยให้ฉันเข้าใจสถาปัตยกรรม ARM ตอนนั้น ARM ยังถือว่าค่อนข้างใหม่ จึงมี สับปะรด อยู่ใน UI ยุคแรก ๆ เยอะมาก เป็นคนที่ดีจริง ๆ และเสียดายที่ไม่ได้ติดต่อกันต่อ
    • ในขอบเขตที่เล่าได้โดยไม่เสี่ยงโดนฟ้องหมิ่นประมาท อยากฟังเพิ่มว่า George Hotz ทำให้ความปลอดภัยของคนอื่นตกอยู่ในความเสี่ยงอย่างไร
  • การเอา DeviceID, IMEI และ ICCID มาต่อกันเป็นโทเค็น แล้วส่งไปที่เซิร์ฟเวอร์ของ Apple อย่าง albert.apple.com เพื่อให้เซ็นด้วยกุญแจส่วนตัวของ Apple จากนั้น lockdownd บนอุปกรณ์จะตรวจสอบด้วยกุญแจสาธารณะของ Apple แล้วเปลี่ยนสถานะเป็น “Activated” ฟังดูเหมือนบรรพบุรุษของ OAuth ในทุกวันนี้
  • อา ช่วงเวลาดี ๆ สมัยที่การแฮ็ก iPhone ยังง่าย… หรือพูดให้ถูกคือ ง่ายกว่าตอนนี้มาก
  • อยากรู้ว่าใช้เครื่องมืออะไรทำผังงาน ดูเหมือนเป็นแบบข้อความและอาจดีกว่า mermaid
    • ฉันใช้ https://asciiflow.com
    • ดูเหมือน Monodraw นะ เพิ่งกลับขึ้น HN อีกรอบเมื่อไม่กี่วันก่อน
  • เกร็ดที่จำได้คือ ฉันอยู่ในช่อง IRC ตอนที่ iPhone OS 1.1 ออกมาแล้วบล็อกการเจลเบรก หนึ่งในวิธีที่พบตอนนั้นคือดาวน์เกรดกลับไปเป็น 1.0.2 เจลเบรกโทรศัพท์ แล้วทำ symbolic link จากไดเรกทอรี /root/Media ที่ iTunes เข้าถึงได้ ไปยัง /
    ลิงก์นี้ยังคงอยู่ระหว่างการอัปเกรด และหลังจากนั้นเมื่ออัปเดตเฟิร์มแวร์ก็จะเข้าถึง rootfs ได้ ตอนนั้นมันยังไม่ชื่อ iOS แต่ชื่อ iPhone OS
  • สำหรับ iPhone ยุคแรก ๆ ตัว “S” ดูเหมือนจะหมายถึงความปลอดภัย เพราะเป็นผลจากการรีบออกสินค้ารุ่นแรก
    คล้ายกับผู้ผลิตรถยนต์เหมือนกัน คือไม่ควรซื้อ รุ่นปีแรก ๆ ของสินค้าหรือแพลตฟอร์มใหม่
    • ไม่มีข้อสรุปร่วมกันว่าตัว “S” หมายถึงอะไร และ Apple ก็ไม่เคยบอกอย่างเป็นทางการ “Successor”, “Second”, “Speed” ต่างก็ดูพอฟังขึ้น แต่ไม่มีคำตอบจริง
      โดยทั่วไป “S” มักเป็นสัญลักษณ์ว่ามีการ อัปเกรดเล็กน้อย จากรุ่นพื้นฐาน