How did the WhatsApp support team knows I have a rooted phone?


Question

I emailed WhatsApp support team, via the built in Help feature.
It automatically generated a ticket which I emailed in.
Seems that they have "detected" that my phone is rooted, and they do not support that. How did they "detect" that my device is rooted? Is it from the Build? The Kernel? The Diagnostic Codes? Or the missing permissions? How will a "passable" debug email will look like? Will apps that "hide my root" fix this debug email to be passable?



Here is my email that was sent, (removing personal info):



--Support Info--
Debug info: <REMOVED PHONE NUMBER>
Description: 2.17.351
Version: 2.17.351
LC: US
LG: en
Context: settings/about
Carrier: T-Mobile
Manufacturer: OnePlus
Model: ONE A2005
OS: 7.1.2
Socket Conn: UP
Radio MCC-MNC: 310-260
SIM MCC-MNC: 310-260
Free Space Built-In: 34432339968 (32.07 GB)
Free Space Removable: 34432339968 (32.07 GB)
FAQ Results Returned: 10
FAQ Results Read: 0
Smb count: 0
Ent count: 0
CCode: <REMOVED PHONE NUMBER>
Target: release
Distribution: play
Product: OnePlus2
Device: OnePlus2
Build: OnePlus2-userdebug 7.1.2 NJH47F b4eb8634d4
Board: MSM8994
Kernel: 3.10.107-perf+ #1 SMP PREEMPT Sat Sep 30 23:53:43 PDT 2017
Connection: M.O.B.I.L.E. (L.T.E.)
Device ISO8601: <REMOVED TIMESTAMP>
Phone Type: G.S.M.
Network Type: L.T.E.
Missing Permissions: android.permission.ACCESS_COARSE_LOCATION, android.permission.ACCESS_FINE_LOCATION, android.permission.CAMERA, android.permission.INSTALL_SHORTCUT, android.permission.READ_PHONE_STATE, android.permission.RECORD_AUDIO, android.permission.WRITE_SETTINGS, com.sec.android.provider.badge.permission.READ, com.sec.android.provider.badge.permission.WRITE, com.htc.launcher.permission.READ_SETTINGS, com.htc.launcher.permission.UPDATE_SHORTCUT, com.sonyericsson.home.permission.BROADCAST_BADGE, com.sonymobile.home.permission.PROVIDER_INSERT_BADGE, com.huawei.android.launcher.permission.READ_SETTINGS, com.huawei.android.launcher.permission.WRITE_SETTINGS, com.huawei.android.launcher.permission.CHANGE_BADGE
Architecture: armv8l
Diagnostic Codes: <REMOVED CODE>
Network metered: 100:true
Network restricted: 100:false
Data roaming: false
Tel roaming: false
ref: <REMOVED NUMBERS>
Video transcode: supported
No log file to attach.


And here is their auto response:




Thanks for your message.



It appears that your device is rooted. We are sorry, but we don’t
support rooted devices and don't answer tickets from rooted devices.
We understand the reasons behind rooting a device, but please be aware
that any new configuration that is a result of rooting may conflict
with WhatsApp.



To add to this, rooted devices don't allow the WhatsApp security model
to function as intended and your messages will not be protected by
end-to-end encryption.



If you wish to receive further assistance, please remove root access
from your device. Then, contact us again from inside the app (WhatsApp
Settings > Help > Contact us).



Responses to this email will not be read.



Answer

I, as a programmer, will try to describe how the root is determined on the user's device.



Programmers should check some signs on your software which definitely show "is your device rooted" or not.



For example:
I wrote a sample app which checks a few signs in user's device.
You can see here(my repository). To be honest, I would not want my answer considered as spam.



As a programmer I should do in my application next checks:




  • TEST KEYS

  • DEV KEYS

  • NON RELEASE KEYS

  • DANGEROUS PROPS

  • PERMISSIVE SELINUX

  • SU EXISTS

  • SUPERUSER APK

  • SU BINARY

  • BUSYBOX BINARY

  • XPOSED

  • RESETPROP(EXPERIMENTAL)

  • WRONG PATH PERMISSION

  • HOOKS



You can download this app from google play(without any ads or analytics) or compile it yourself from the repository.


Topics


2D Engines   3D Engines   9-Patch   Action Bars   Activities   ADB   Advertisements   Analytics   Animations   ANR   AOP   API   APK   APT   Architecture   Audio   Autocomplete   Background Processing   Backward Compatibility   Badges   Bar Codes   Benchmarking   Bitmaps   Bluetooth   Blur Effects   Bread Crumbs   BRMS   Browser Extensions   Build Systems   Bundles   Buttons   Caching   Camera   Canvas   Cards   Carousels   Changelog   Checkboxes   Cloud Storages   Color Analysis   Color Pickers   Colors   Comet/Push   Compass Sensors   Conferences   Content Providers   Continuous Integration   Crash Reports   Credit Cards   Credits   CSV   Curl/Flip   Data Binding   Data Generators   Data Structures   Database   Database Browsers   Date &   Debugging   Decompilers   Deep Links   Dependency Injections   Design   Design Patterns   Dex   Dialogs   Distributed Computing   Distribution Platforms   Download Managers   Drawables   Emoji   Emulators   EPUB   Equalizers &   Event Buses   Exception Handling   Face Recognition   Feedback &   File System   File/Directory   Fingerprint   Floating Action   Fonts   Forms   Fragments   FRP   FSM   Functional Programming   Gamepads   Games   Geocaching   Gestures   GIF   Glow Pad   Gradle Plugins   Graphics   Grid Views   Highlighting   HTML   HTTP Mocking   Icons   IDE   IDE Plugins   Image Croppers   Image Loaders   Image Pickers   Image Processing   Image Views   Instrumentation   Intents   Job Schedulers   JSON   Keyboard   Kotlin   Layouts   Library Demos   List View   List Views   Localization   Location   Lock Patterns   Logcat   Logging   Mails   Maps   Markdown   Mathematics   Maven Plugins   MBaaS   Media   Menus   Messaging   MIME   Mobile Web   Native Image   Navigation   NDK   Networking   NFC   NoSQL   Number Pickers   OAuth   Object Mocking   OCR Engines   OpenGL   ORM   Other Pickers   Parallax List   Parcelables   Particle Systems   Password Inputs   PDF   Permissions   Physics Engines   Platforms   Plugin Frameworks   Preferences   Progress Indicators   ProGuard   Properties   Protocol Buffer   Pull To   Purchases   Push/Pull   QR Codes   Quick Return   Radio Buttons   Range Bars   Ratings   Recycler Views   Resources   REST   Ripple Effects   RSS   Screenshots   Scripting   Scroll Views   SDK   Search Inputs   Security   Sensors   Services   Showcase Views   Signatures   Sliding Panels   Snackbars   SOAP   Social Networks   Spannable   Spinners   Splash Screens   SSH   Static Analysis   Status Bars   Styling   SVG   System   Tags   Task Managers   TDD &   Template Engines   Testing   Testing Tools   Text Formatting   Text Views   Text Watchers   Text-to   Toasts   Toolkits For   Tools   Tooltips   Trainings   TV   Twitter   Updaters   USB   User Stories   Utils   Validation   Video   View Adapters   View Pagers   Views   Watch Face   Wearable Data   Wearables   Weather   Web Tools   Web Views   WebRTC   WebSockets   Wheel Widgets   Wi-Fi   Widgets   Windows   Wizards   XML   XMPP   YAML   ZIP Codes