ฉันรู้เพื่อจับภาพหน้าจอของโทรศัพท์ของฉันแอปพลิเคชั่นหน้าจอทั้งหมดต้องมีโทรศัพท์ที่รูท ทำไมเป็นเช่นนี้ เหตุใดเราจึงไม่มีแอปพลิเคชั่นสกรีนช็อตสำหรับ Android เหมือนที่เรามีสำหรับ Windows
ฉันรู้เพื่อจับภาพหน้าจอของโทรศัพท์ของฉันแอปพลิเคชั่นหน้าจอทั้งหมดต้องมีโทรศัพท์ที่รูท ทำไมเป็นเช่นนี้ เหตุใดเราจึงไม่มีแอปพลิเคชั่นสกรีนช็อตสำหรับ Android เหมือนที่เรามีสำหรับ Windows
คำตอบ:
คำตอบนั้นง่ายมากมันเป็นปัญหาสิทธิ์
Android ใช้สิ่งที่เรียกว่าframebufferสำหรับการแสดงวิดีโอ framebuffer อยู่ที่ / dev / graphics / fb0 "ไฟล์" นี้ซึ่งโดยทั่วไปจะเป็นกระแสที่อุปกรณ์เขียนเมื่อมีการเปลี่ยนแปลงในส่วนต่อประสานผู้ใช้เกิดขึ้น ~ 2 เฟรมของหน้าจอแสดงผล
สิทธิ์ในไฟล์ framebuffer rw- rw- ---
คือ โปรดทราบว่า "กลุ่ม" สุดท้ายมี 3 "-" นั่นหมายความว่าถ้าคุณไม่ใช่owner
(ซึ่งเป็นรูท) คุณไม่ได้รับอนุญาตให้แม้แต่อ่านจากไฟล์นั้น
หากมีแอพพลิเคชั่นที่ติดตั้งระบบซึ่งสามารถจับภาพหน้าจอได้ก็จะได้รับอนุญาตให้อ่านจาก framebuffer ซึ่งฉันเชื่อว่าเป็นวิธีที่ Motorola Xoom สามารถถ่ายภาพหน้าจอได้ มันมีแอพพลิเคชั่นติดตั้งอยู่ในอุปกรณ์เป็นแอพระบบ
การอ่าน framebuffer สำหรับนักพัฒนานั้นเป็นเรื่องง่ายหากพวกเขาสามารถเข้าถึงการอ่าน
r--
ควรปรับปรุงสิทธิ์ลง การทำเช่นนี้อาจสร้างความเสี่ยงด้านความปลอดภัยหากแอพใดสามารถดักฟังหน้าจอของคุณ แต่ไม่ใช่สิทธิ์เพียงอย่างใดอย่างหนึ่ง ( แอพนี้สามารถตรวจสอบหน้าจอของคุณ ) คุณต้องยอมรับก่อนติดตั้งหรือไม่ ไม่ว่าจะเป็นหรือ Google ควรเพิ่มการจับภาพหน้าจอในตัวในเมนูแบบเลื่อนออกไปจากนั้นไม่มีใครสามารถเข้าถึงได้ อย่างหลังของฉันเป็นอย่างดีฉันหมายถึงตอนนี้พวกเขากำลังเพิ่มตัวอย่างก่อนพิมพ์ลงใน Chrome
เนื่องจากความปลอดภัยของ Android มุ่งเน้นที่การแยกแอพทั้งหมดออกจากข้อมูลของกันและกันเพื่อป้องกันแอพที่เป็นอันตรายจากการขโมยหรือเปลี่ยนแปลงข้อมูลในแอพที่คุณเชื่อถือ
ลองนึกถึงแอพของคุณที่สามารถทำสิ่งต่าง ๆ เช่น OCR เพื่อแปลรูปภาพเป็นข้อความฉันสามารถนึกถึงแอพอย่างน้อยสี่แอพในโทรศัพท์ของฉันที่สามารถทำสิ่งนี้ได้ตัวอย่างที่สำคัญคือชื่อหนังสือ Google OCRing ของ Google Goggles และ OCRing แปลบล็อคข้อความเป็นภาษาต่างประเทศ ตอนนี้คิดว่ามีกี่แอพของคุณใส่ข้อความบนหน้าจอที่คุณไม่ต้องการให้แอพที่ไม่น่าไว้วางใจดูฉันมีแอพฐานข้อมูลรหัสผ่านบนโทรศัพท์ของฉันด้วยฐานข้อมูลที่เข้ารหัสของรหัสผ่านของฉันสำหรับระบบต่างๆ จนกว่าแอปพลิเคชันรหัสผ่านนั้นจะทำงานให้ถ่ายรูปหน้าจอพร้อมรายละเอียดการเข้าสู่ระบบจากนั้น OCR เหล่านั้นและส่งออก นอกจากนี้ยังสามารถทำสิ่งเดียวกันทุกอย่างในรายการที่ติดต่อของคุณแม้ว่าคุณจะไม่อนุญาตให้แอปไปยังฐานข้อมูลผู้ติดต่อหรือประวัติเบราว์เซอร์ของคุณ หรือบันทึกการแชทและอื่น ๆ นี่เป็นวิธีเดียวเท่านั้นที่จะสามารถละเมิดการเข้าถึงหน้าจอของคุณ
นี่เป็นสาเหตุที่ทำให้ภาพหน้าจอเป็นสากลจำเป็นต้องอยู่ในระบบปฏิบัติการ (ซึ่งคุณไว้วางใจกับข้อมูลทั้งหมดแล้ว) นี่คือเหตุผลที่บนโทรศัพท์ที่มีฟังก์ชั่น shot shot ในตัวมันถูกเพิ่มเข้ามาเป็นส่วนหนึ่งของระบบไม่ใช่เป็นแอพแยกต่างหาก
หากคุณรูทโทรศัพท์ของคุณและอนุญาตให้แอปถ่ายภาพหน้าจอคุณจะบอกได้อย่างมีประสิทธิภาพว่าคุณเชื่อมั่นว่าแอพนั้นสามารถทำทุกอย่างที่ระบบสามารถทำได้รวมถึงการเข้าถึงและการแทรกแซงแอพอื่น ๆ และข้อมูลของพวกเขา เชื่อมั่นอย่างเต็มที่ว่าจะไม่ละเมิดการเข้าถึงนั้น นั่นไม่ใช่สิ่งที่ Android อนุญาตให้ทำอะไรนอกจากระบบปฏิบัติการ
คำตอบสั้น ๆ : เนื่องจาก 1) คอมพิวเตอร์มีความซับซ้อนและ 2) ฟังก์ชั่นจับภาพหน้าจอนั้นไม่ง่ายนัก (สำหรับโปรแกรมเมอร์ไม่ใช่สำหรับผู้ใช้)
กล่าวอีกนัยหนึ่งการจับภาพหน้าจอต้องการกระบวนการจับภาพหน้าจอเพื่อเจาะลึกลึกเข้าไปในระบบปฏิบัติการภายในยุ่งเหยิงกับพวกเขาสักครู่และปลดตะขออีกครั้ง ตั้งแต่ Android พยายามที่จะมีรูปแบบการรักษาความปลอดภัยในตัว (ตรงข้ามกับ "bolted-on ภายหลังคิด" ที่เห็นใน Windows), การเดินทางสกรีนช็อตในอุปสรรคด้านความปลอดภัยต่างๆ สิ่งเหล่านี้สามารถถูกข้ามได้ แต่วิธีเดียวที่ใช้งานได้ในปัจจุบัน (เพียงการสร้างช่องโหว่และช่องโหว่ที่อาจเป็นไปได้ในเคอร์เนล) คือการใช้บัญชีรูทที่มีประสิทธิภาพซึ่งไม่ได้อยู่ภายใต้ข้อ จำกัด