我正在开发一个处理敏感数据的应用程序。
\n\n该应用程序具有合理的安全模型,包括加密、SSL,并且数据不会持久存储在设备上。
\n\n我试图确定我的应用程序是否是 \xe2\x80\x9csafe\xe2\x80\x9d 在 root 设备上运行,或者设备已 root 的事实将使利用/破解该应用程序变得更加容易。\n所以问题是:处理敏感数据的应用程序应该在 root 设备上运行吗?
\n\n我已经做过研究,但我还没有看到任何关于 root 设备安全性的讨论。我知道检测 root 设备的方法可能会被绕过,因此 \xe2\x80\x99s 不支持 root 设备有什么意义?
\n由于我是Windows Phone技术的新手,我想在我的应用程序中以编程方式查找Windows设备是否已植根/ jailbrake.我找到了许多链接,但似乎无法以编程方式查找root用户设备.那么有没有办法以编程方式找到rooted/jailbreak windows设备可用于此的任何API?谁能帮我 ?谢谢
我正在研究有根设备。我创建了一个应用程序作为系统应用程序运行。在以 su 用户身份从 adb shell 挂载 /system 目录后,我已将 apk 文件复制到 SD 卡,然后复制到 /system/priv-app。清单文件如下所示
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="abc.def.settings"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="19" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_APN_SETTINGS" />
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.READ_CALL_LOG" />
<uses-permission android:name="android.permission.WRITE_CALL_LOG" />
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.STATUS_BAR" />
<uses-permission android:name="android.permission.EXPAND_STATUS_BAR" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<service
android:name="abc.def.settings.service.SystemSettingsService" >
</service>
<receiver android:name="abc.def.settings.boot.DeviceBootReceiver" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
<action android:name="abc.def.settings.start_after_reinstall"/>
</intent-filter> …Run Code Online (Sandbox Code Playgroud) 我正在通过Android中的Xposed框架.特别是阅读博客 - http://d3adend.org/blog/?p=589了解潜在的对策,并对这些问题提出了几个问题.
因此,当我们使用Xposed挂钩方法时,框架将该方法设置为本机并执行它想要挂钩的代码.那么如何在stacktrace原始方法中调用它?
com.example.hookdetection.DoStuff->getSecret //This one
de.robv.android.xposed.XposedBridge->invokeOriginalMethodNative
de.robv.android.xposed.XposedBridge->handleHookedMethod
com.example.hookdetection.DoStuff->getSecret //This one again
com.example.hookdetection.MainActivity->onCreate
android.app.Activity->performCreate
android.app.Instrumentation->callActivityOnCreate
android.app.ActivityThread->performLaunchActivity
android.app.ActivityThread->handleLaunchActivity
android.app.ActivityThread->access$800
android.app.ActivityThread$H->handleMessage
android.os.Handler->dispatchMessage
android.os.Looper->loop
android.app.ActivityThread->main
java.lang.reflect.Method->invokeNative
java.lang.reflect.Method->invoke
com.android.internal.os.ZygoteInit$MethodAndArgsCaller->run
com.android.internal.os.ZygoteInit->main
de.robv.android.xposed.XposedBridge->main
dalvik.system.NativeStart->main
Run Code Online (Sandbox Code Playgroud)
另外为什么它会在stacktrace中出现两次.我想了解它们的执行顺序.
实际的方法是否运行?由于钩子方法代码执行,因此理想情况下不会执行原始方法代码.那么我们怎样才能在相同的方法中添加一个stracktrace检测机制,知道它将被替换.
这是我通过 USB 运行的命令
adb -s pm disable-user com.instagram.android
Run Code Online (Sandbox Code Playgroud)
错误:java.lang.SecurityException:权限拒绝:尝试从 pid=21028、uid=2000、包 uid=10134 更改组件状态
我也尝试过 --user 2000或--user 0没有--user 13任何运气
adb shell pm list users
用户:UserInfo{0:Owner:13} 正在运行
adb -s pm disable-user --user 13 com.instagram.android
Run Code Online (Sandbox Code Playgroud)
以上是在小米红米2 Prime上的android 5.1上进行的。
而相同的代码在摩托罗拉 Moto C 上的 android 7.0上运行时 效果非常好。两款都是全新的免root手机。有什么不同 ?我是否缺少任何权限设置?