ทำไมเราต้องใช้โทรศัพท์รูทเพื่อจับภาพหน้าจอบน Android เวอร์ชันเก่ากว่า


21

ฉันรู้เพื่อจับภาพหน้าจอของโทรศัพท์ของฉันแอปพลิเคชั่นหน้าจอทั้งหมดต้องมีโทรศัพท์ที่รูท ทำไมเป็นเช่นนี้ เหตุใดเราจึงไม่มีแอปพลิเคชั่นสกรีนช็อตสำหรับ Android เหมือนที่เรามีสำหรับ Windows


2
ฉันมักจะพบว่ามันน่าสนใจที่ iPhone ใช้คุณลักษณะนี้นอกกรอบในขณะที่มันเป็นเรื่องสำคัญที่จะเปิดใช้งานบน Android
shambleh

1
โปรดทราบว่าตั้งแต่ประมาณ Android 4.0 เป็นไปได้ที่จะจับภาพหน้าจอโดยกดปุ่มลดระดับเสียง + พลังงาน ฟังก์ชั่นนี้ใช้งานได้ทันทีไม่ต้องใช้แอพ (ระบุไว้ที่นี่สำหรับลูกหลานและเครื่องมือค้นหา)
Piskvor

คำตอบ:


17

คำตอบนั้นง่ายมากมันเป็นปัญหาสิทธิ์

Android ใช้สิ่งที่เรียกว่าframebufferสำหรับการแสดงวิดีโอ framebuffer อยู่ที่ / dev / graphics / fb0 "ไฟล์" นี้ซึ่งโดยทั่วไปจะเป็นกระแสที่อุปกรณ์เขียนเมื่อมีการเปลี่ยนแปลงในส่วนต่อประสานผู้ใช้เกิดขึ้น ~ 2 เฟรมของหน้าจอแสดงผล

สิทธิ์ในไฟล์ framebuffer rw- rw- ---คือ โปรดทราบว่า "กลุ่ม" สุดท้ายมี 3 "-" นั่นหมายความว่าถ้าคุณไม่ใช่owner(ซึ่งเป็นรูท) คุณไม่ได้รับอนุญาตให้แม้แต่อ่านจากไฟล์นั้น

หากมีแอพพลิเคชั่นที่ติดตั้งระบบซึ่งสามารถจับภาพหน้าจอได้ก็จะได้รับอนุญาตให้อ่านจาก framebuffer ซึ่งฉันเชื่อว่าเป็นวิธีที่ Motorola Xoom สามารถถ่ายภาพหน้าจอได้ มันมีแอพพลิเคชั่นติดตั้งอยู่ในอุปกรณ์เป็นแอพระบบ

การอ่าน framebuffer สำหรับนักพัฒนานั้นเป็นเรื่องง่ายหากพวกเขาสามารถเข้าถึงการอ่าน


1
เสียงเช่น Google r--ควรปรับปรุงสิทธิ์ลง การทำเช่นนี้อาจสร้างความเสี่ยงด้านความปลอดภัยหากแอพใดสามารถดักฟังหน้าจอของคุณ แต่ไม่ใช่สิทธิ์เพียงอย่างใดอย่างหนึ่ง ( แอพนี้สามารถตรวจสอบหน้าจอของคุณ ) คุณต้องยอมรับก่อนติดตั้งหรือไม่ ไม่ว่าจะเป็นหรือ Google ควรเพิ่มการจับภาพหน้าจอในตัวในเมนูแบบเลื่อนออกไปจากนั้นไม่มีใครสามารถเข้าถึงได้ อย่างหลังของฉันเป็นอย่างดีฉันหมายถึงตอนนี้พวกเขากำลังเพิ่มตัวอย่างก่อนพิมพ์ลงใน Chrome
JD Isaacks

3
ฉันคิดว่า mod ของ o + r จะเป็นปัญหาด้านความปลอดภัยหากแอพใด ๆ ในตลาดสามารถอ่านหน้าจอได้
kzh

ฉันคิดว่ามันขึ้นอยู่กับ Windows OS ไม่ได้ป้องกันแอปพลิเคชันไม่ให้ถ่ายภาพหน้าจอ เราเคยได้ยินปัญหาด้านความปลอดภัยที่เกิดจากการถ่ายภาพหน้าจอหรือไม่
Cheok Yan Cheng

ไม่จำเป็นต้องใช้หน้าจอใน windows มีวิธีที่ง่ายกว่ามากในการดึงข้อมูลออกจากเครื่อง windows ฉันคิดว่ามือถือเป็นปัญหาที่ใหญ่กว่า แค่คิดเกี่ยวกับแอพอย่าง Square ที่ประมวลผลบัตรเครดิต ถ้าฉันเขียนบริการที่ฟังเมื่อการ์ดถูก swiped ฉันสามารถจับหน้าจอและดึงข้อมูลเช่นหมายเลขบัตรเครดิตชื่อและอื่น ๆ ได้
Ryan Conrad

7

เนื่องจากความปลอดภัยของ Android มุ่งเน้นที่การแยกแอพทั้งหมดออกจากข้อมูลของกันและกันเพื่อป้องกันแอพที่เป็นอันตรายจากการขโมยหรือเปลี่ยนแปลงข้อมูลในแอพที่คุณเชื่อถือ

ลองนึกถึงแอพของคุณที่สามารถทำสิ่งต่าง ๆ เช่น OCR เพื่อแปลรูปภาพเป็นข้อความฉันสามารถนึกถึงแอพอย่างน้อยสี่แอพในโทรศัพท์ของฉันที่สามารถทำสิ่งนี้ได้ตัวอย่างที่สำคัญคือชื่อหนังสือ Google OCRing ของ Google Goggles และ OCRing แปลบล็อคข้อความเป็นภาษาต่างประเทศ ตอนนี้คิดว่ามีกี่แอพของคุณใส่ข้อความบนหน้าจอที่คุณไม่ต้องการให้แอพที่ไม่น่าไว้วางใจดูฉันมีแอพฐานข้อมูลรหัสผ่านบนโทรศัพท์ของฉันด้วยฐานข้อมูลที่เข้ารหัสของรหัสผ่านของฉันสำหรับระบบต่างๆ จนกว่าแอปพลิเคชันรหัสผ่านนั้นจะทำงานให้ถ่ายรูปหน้าจอพร้อมรายละเอียดการเข้าสู่ระบบจากนั้น OCR เหล่านั้นและส่งออก นอกจากนี้ยังสามารถทำสิ่งเดียวกันทุกอย่างในรายการที่ติดต่อของคุณแม้ว่าคุณจะไม่อนุญาตให้แอปไปยังฐานข้อมูลผู้ติดต่อหรือประวัติเบราว์เซอร์ของคุณ หรือบันทึกการแชทและอื่น ๆ นี่เป็นวิธีเดียวเท่านั้นที่จะสามารถละเมิดการเข้าถึงหน้าจอของคุณ

นี่เป็นสาเหตุที่ทำให้ภาพหน้าจอเป็นสากลจำเป็นต้องอยู่ในระบบปฏิบัติการ (ซึ่งคุณไว้วางใจกับข้อมูลทั้งหมดแล้ว) นี่คือเหตุผลที่บนโทรศัพท์ที่มีฟังก์ชั่น shot shot ในตัวมันถูกเพิ่มเข้ามาเป็นส่วนหนึ่งของระบบไม่ใช่เป็นแอพแยกต่างหาก

หากคุณรูทโทรศัพท์ของคุณและอนุญาตให้แอปถ่ายภาพหน้าจอคุณจะบอกได้อย่างมีประสิทธิภาพว่าคุณเชื่อมั่นว่าแอพนั้นสามารถทำทุกอย่างที่ระบบสามารถทำได้รวมถึงการเข้าถึงและการแทรกแซงแอพอื่น ๆ และข้อมูลของพวกเขา เชื่อมั่นอย่างเต็มที่ว่าจะไม่ละเมิดการเข้าถึงนั้น นั่นไม่ใช่สิ่งที่ Android อนุญาตให้ทำอะไรนอกจากระบบปฏิบัติการ


6

คำตอบสั้น ๆ : เนื่องจาก 1) คอมพิวเตอร์มีความซับซ้อนและ 2) ฟังก์ชั่นจับภาพหน้าจอนั้นไม่ง่ายนัก (สำหรับโปรแกรมเมอร์ไม่ใช่สำหรับผู้ใช้)

กล่าวอีกนัยหนึ่งการจับภาพหน้าจอต้องการกระบวนการจับภาพหน้าจอเพื่อเจาะลึกลึกเข้าไปในระบบปฏิบัติการภายในยุ่งเหยิงกับพวกเขาสักครู่และปลดตะขออีกครั้ง ตั้งแต่ Android พยายามที่จะมีรูปแบบการรักษาความปลอดภัยในตัว (ตรงข้ามกับ "bolted-on ภายหลังคิด" ที่เห็นใน Windows), การเดินทางสกรีนช็อตในอุปสรรคด้านความปลอดภัยต่างๆ สิ่งเหล่านี้สามารถถูกข้ามได้ แต่วิธีเดียวที่ใช้งานได้ในปัจจุบัน (เพียงการสร้างช่องโหว่และช่องโหว่ที่อาจเป็นไปได้ในเคอร์เนล) คือการใช้บัญชีรูทที่มีประสิทธิภาพซึ่งไม่ได้อยู่ภายใต้ข้อ จำกัด


1
ฉันไม่รู้ฮาร์ดแวร์คอมพิวเตอร์มากนัก แต่ฉันคิดว่า GPU ส่ง "ภาพ" ไปที่หน้าจอ ภาพนั้นไม่สามารถดักจับและบันทึกไว้ได้หรือไม่?
JD Isaacks

2
@ John Isaacks นั่นเป็นสิ่งที่เกิดขึ้นกับ framebuffer ดูคำตอบของฉันว่าทำไมมันยังต้องใช้ราก
Ryan Conrad
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.