This wiki will support the development of the TrUbi project.
Camera: kills;
Sound: sets volume to certain level and only allows certain apps to change it;
Start Application
- Service: uses ASM's hook;
- Activity: uses ASM's hook;
- Broadcast Receiver: uses an ASM hook with a tweak on its return value;
Network: kills (tested also in C);
XML Parser & Writer
Lease Specification: continuous changes;
Brightness: sets the brightness to a certain level and prevents apps from changing it;
Microphone: mutes the microphone;
Lease Creator: continuous changes;
Lease Termination Support: from a strapp to TrUbi;
NFC: toggle NFC hook only; NFC can only change through the Settings app, so it may be enough;
Bluetooth: toggle Bluetooth hook only; limitations on which apps can toggle are available but not for the Settings app (uid = 1000);
Set Time Hook: prevents a user from changing time in the Settings app;
Phone Calls: uses ASM's hook and a Broadcast Receiver;
Kill unauthorized running apps: used in leases with resources such as camera or network;
MMSs & SMSs: uses ASM's hook;
Led: turns the led to a certain state and prevents other apps from changing it; when the camera hook is active it is rendered useless;
File Permission filtered: only accesses to files with pattern <AF_INET> are sent to the middleware, reducing performance penalties;
Persistent Lease: when a lease is received, TrUbi saves it persistently, so that it can be loaded on startup;
Lease Confirmer: this system app now displays the terms of the lease to the user (moved from user level apps);
Remove Security Exceptions thrown by ASM: when starting an Activity or Service;
Freeze unauthorized running apps#1 (deprecated): freeze commands sent one by one based on the list of running applications;
Freeze unauthorized running apps#2: a single freeze command containing a whitelist freezes every app including non associated processes;
Malware: Dendroid setup;
Lease Termination Time: leases' duration now considers absolute time (minimum between duration and timeout);
App Freeze at Startup: when a device reboots with a valid lease, TrUbi kills every unauthorized app and prevents others from starting;
Prevent Screenshots
- (Global) Volume Down + Power Button: uses a normal hook;
- (Global) ADB screencap: uses the file_permission hook (it's an executable)
- (App) View.draw() method: unnecessary;
- (App) View.getDrawingCache() method: unnecessary;
Generalize TrUbi Hooks: hooks used to have specific classes, but they all did the same thing;
Wifi Toggle Hook: sets the wifi to a certain state and prevents other apps from changing it;
Wifi Range Support: leases now support termination based on whether the device is on range of certain wifi networks;
Audio Hook Re-engineer: it now uses the third party hook approach;
Disable Airplane Mode (deprecated): whenever the network resource is required, or the lease has wifi-range-based termination conditions;
Lease Resource Starting Levels: doesn't yet cover every resource;
Resource Starting Levels Reset: TODO; not a priority;
Change Field “Required” in Resources from String to boolean;
Prevent Wifi turn-off with Airplane Mode: whenever we have a lease with required network or wifi range termination conditions;
Location Toggle Hook: prevents the user from changing the state of the Location service (on or off);
Automatic Location Services enabling: whenever the lease has location termination conditions;
GPS-based Lease Termination;
Hide Lease Confirmer from Recent Apps: it appears in the recent apps tab when a lease terminates;
Enable/Disable Resources based on the required field: doesn't yet cover every resource;
Socket Accept Hook;
Bluetooth Socket Accept & Connect Hooks or getInputStream and getOutputStream Hooks: TODO; not a priority;
Handle Lease Termination Threads: they are now synchronized and terminate appropriately;
Lease Hash with Certificates: after enforcing a lease, an app can now request that lease's hash to ensure correctness;
Lease Start Notification: simple toast message;
Lease Acceptance Timeout: doesn't yet allow to edit lease confirmation timeout;
IPV4 & IPV6: TODO; not a priority;
Accelerometer Light Sensor: TODO; not a priority;
Block other IASMAPPs: TODO; not a priority;
1) Freezing kernel mode processes crashes the emulator
https://groups.google.com/forum/?fromgroups#!forum/android-kernel
http://www.linuxquestions.org/questions/linux-kernel-70/sigstop-signal-cannot-freeze-kernel-mode-process-4175535829/
http://forum.xda-developers.com/chef-central/android/sigstop-signal-freeze-kernel-mode-t3046818
2) Different apps with same pid
AndroidSecInt Pag.41 3rd parag
3) LED - android.hardware.Camera
http://stackoverflow.com/questions/6068803/how-to-turn-on-camera-flash-light-programmatically-in-android
http://stackoverflow.com/questions/14812269/how-to-turn-on-flash-light-on-android-phone-without-runing-camera-application?lq=1
http://stackoverflow.com/questions/7515309/widget-for-turning-on-off-camera-flashlight-in-android?lq=1