Just out of curiosity does anyone know if any android devices can be affected by a fork bomb sent via text or email?
It is Linux so I'm guessing it will be affected. Maybe it won't be like OMG but it will be some what affected.
If a text or email could execute a custom script on being received, there is probably a lot worse that it could do than a fork bomb... Might be possible to get two views to keep calling each other, in which case the bundle for that program will expand until it runs out of memory and android will kill the app. This is very much an app specific bug though, and isn't related to the "fork bomb" of a program making a new instance of itself.
I thought Android runs on the sandbox environment for applications, which means the app can't execute much permissions as compared to Windows.
Just my $0.02
Yes, the apps are sandboxed for the most part.
Now that I think on it, there is a launch flag to open a new instance of a program leaving any currently running ones alone, which could be used to make a forkbomb. In this case, it would not be stopped by memory as the earlier instances will shut down but the exponentially increasing new instances will keep going, probably making the phone unusable until a reboot.
This can only be done by compiling and launching a signed app though, no email client can do this unless it has a backdoor to trigger this code from itself or from a trojan-esque feature to download, install, and launch apps on its own. The user would be promted to ok the new app's permissions anyway, unless it uses and gets permission for root access.
Basically, forkbombs are possible, but not by email or text with stock or nonmalacious programs.
Task Management
If the script gained root access, it'd be just the same as on a Linux machine. But I believe the DalvikVM simply kills any apps/processes it needs to in order to keep the system running smoothly (in theory).
well it works...
https://github.com/nicandris/com.example.forkbomb
Not using Tasker? Shame on you… Download your free trial here
The debate about whether or not to use an automatic task killer in Android is for another thread. The general consensus seems to be ‘don’t’, but regardless, we all have them in case of troublesome processes (even if you can long-press the back button) and therefore I’ve produced this tutorial to show you how to use Tasker to create one that you can configure how you wish, should you wish!
If nothing else, there’s a few good Tasker tips in here, that I’m sure will come in handy for your other profiles.
Let’s get on with it!
Preparation
For best practice, testing and understanding, you’ll need:
1) A Terminal Emulator
2) A Task Killer (!)
3) The Locale Execute Plug-in for Tasker (make sure this is installed prior to importing the profile)
4) A speech engine – Pico TTS for example.
The Short Winded Tutorial
It kills sh*t loads of processes.
Proceed to the download!
The Long Winded Tutorial
Import the profile and ‘un-tick’ it to make sure it is not active until you have edited it to suit your needs.
The trigger for this profile is time based and set up as standard to run every 30 minutes between the times you are likely to be using your phone. Be sure that the activation time does not match that of your AutoSync Profile that you may/should/could be using from here, or otherwise how often your standard email and widgets sync with their individual settings – you don’t want those processes being killed mid-sync.
In this profile, Tasker will use Linux commands via the Locale Execute Plug-in to kill processes you have specified. Let’s get familiar with them.
Open up the Terminal Emulator and type:
Code:
su
then:
Code:
ps
The current running processes will be listed. You’ll note that all applications you would want to kill are assigned a process ID (PID) and an application number app_** (listed under 'User'). The application process (process name) is listed at the end, such as com.android.google.browser.
A process can be killed using its corresponding PID. Try it with an application you see in the list (NOT A SYSTEM PROCESS!):
Code:
pkill 3456
Unfortunately, the PID changes and therefore is not a constant we can use to terminate applications. We therefore have to focus on the process name – bbc.iplayer.android for example.
Try killing an application by name (open it first, list the processes again to make sure it’s there and then see if it has gone afterwards by listing processes again):
Code:
pkill com.google.android.youtube
Sometimes a process is persistent and needs further encouragement (execution) to die:
Code:
pkill -9 com.facebook.katana
Sometimes a process refuses to die – this can be because there are other processes associated with it that are not killed by the above.
Code:
Killall -9 com.levelup.beautifulwidgets
That’s the process killing commands lesson complete and only leaves us with one small issue = What if you are using the process at the time? Obviously we don’t want the browser killed if you are in the middle of surfing, so we have to use a variable to make certain of this. The chosen built in variable is %LAPP, which is the last foreground application used. By making sure this isn’t killed, it’ll stop your current program being terminated in the middle of a message to someone! Therefore, each separate action to kill a process has an IF statement included to prevent the termination if that application is currently being used.
There are plenty of examples in the profile for you to use, but of course you’ll want to add your own entries in the KillProcesses task by:
+
Plugin
Execute
Edit
And then type (or even better paste):
@! pkill -9 and then the process name* (@! Stops the commands appearing on the screen)
Press the back button to save
Click IF
%LAPP
Click ‘~’ select ‘doesn’t match’
Enter the application name**.
Done
* The process name can be found and noted in the Terminal Emulator. Alternatively, often the process names are listed in the Task Manager you are already using.
** In the profile, there is a speech task, popup notification and a STOP task, these are there to discover the correct application name. Open the application you want to add to the list, long hold the home button and select Tasker and then press ‘test’. Tasker will say the name of the application and show how it is spelt on the screen. If the speech says ‘Launcher’, you may need to navigate back to Tasker (after opening the desired app) via the notification bar.
Copying all of the process names and completing the IF statements can be a little tedious, but when it’s done, it’s done… Test each new action to ensure the application is actually killed – just drag it above the STOP action. The Super User application may request permission first time (for each application command). Go to your current Task Manager, refresh it and check the application was terminated! If it wasn’t, try the ‘killall -9’ command detailed above. I have to use this for Beautiful Widgets and Titanium Backup as they are stubborn (and return again soon).
When you've completed your list, delete the pop-up, speech and stop actions and you're good to go.
Finally, it couldn’t be easier to create a widget for the home-screen to activate KillProcesses whenever you like. Hold down somewhere on the home-screen, select widgets. Select Tasker. Select Task. Select KillProcesses. Select your icon and hit ‘make widget’! Done!
There you have it! Your very own self created task murderer at the touch of a button!
Enjoy!
Shortfalls
You are unable to kill a troublesome process if it’s not in your task list!
Future Inclusions?
When setting this up, I had Locale write the process list to a text file. In theory it is possible to get Tasker to read this file, dissect it and therefore discover by the constant app_** which tasks are running and place the process name in a variable which then could be exported to Locale to kill (I think). This is waaay too much effort, but have a go if you want!
In addition, Tasker could compare the before and after (kill) process list and work out approximately how many applications it killed, displaying the number in a popup notification. Again, effort – go for your life!
At present a notification is displayed showing the last time it murdered something.
Please let me know if you have any sensible requests and your feedback is always welcome!
Installation Instructions
In menu options/profile data 'Import One Profile':
Task_Manager
The thanks meter lets me know I'm appreciated!
Feedback?!
There have been a few downloads of this now... but no comments!
Do I assume that it works absolutely fine? No errors or anything? If so, I'll stick it on the Tasker Wiki for educational purposes.
Wow! But how about use Locale AutoKill Plug-in ? It works for me with 2.2 Froyo. So much easier )
memberfive said:
Wow! But how about use Locale AutoKill Plug-in ? It works for me with 2.2 Froyo. So much easier )
Click to expand...
Click to collapse
For education purposes
Sent from my HTC Desire using XDA Premium App
brandall said:
For education purposes
Click to expand...
Click to collapse
Well. In this case, suggest another simple solution, without the use of additional fee applications.
1) Connect your phone via USB.
2) Do adb shell and then ps to remember the last lines.
3) On your phone start the unnecessary application, again execute ps
and see the process name (like android.process.media) after the last lines.
4) Add it to the killing list (say kill_list.txt): echo android.process.media>>/sdcard/kill_list.txt.
5) Repeat for all the unnecessary applications.
6) In the Locale Execute Plug-in is only one line: @! /system/xbin/cat /sdcard/kill_list.txt | /system/xbin/xargs -n1 /system/xbin/killall
memberfive said:
Well. In this case, suggest another simple solution, without the use of additional fee applications.
1) Connect your phone via USB.
2) Do adb shell and then ps to remember the last lines.
3) On your phone start the unnecessary application, again execute ps
and see the process name (like android.process.media) after the last lines.
4) Add it to the killing list (say kill_list.txt): echo android.process.media>>/sdcard/kill_list.txt.
5) Repeat for all the unnecessary applications.
6) In the Locale Execute Plug-in is only one line: @! /system/xbin/cat /sdcard/kill_list.txt | /system/xbin/xargs -n1 /system/xbin/killall
Click to expand...
Click to collapse
Do you mean 'fee' applications? It only uses locale which is free??
I originally messed with the idea of using a list like this, but the problem is, you can't pass the %LAPP variable in this way. I had Tasker/locale writing the original .txt file from ps output and getting Tasker to try and 'read line/find' the associated %LAPP process in order to exclude it from the list prior to the xargs command being executed... but it became more complicated than just listing IF actions individually as I was going to have to list them anyway!
Hope that made sense? If you can think of a betterway to exclude the foreground process and then use a single command in this way, please do let me know!
Sent from my HTC Desire using XDA Premium App
brandall said:
Do you mean 'fee' applications? It only uses locale which is free??
I originally messed with the idea of using a list like this, but the problem is, you can't pass the %LAPP variable in this way. I had Tasker/locale writing the original .txt file from ps output and getting Tasker to try and 'read line/find' the associated %LAPP process in order to exclude it from the list prior to the xargs command being executed... but it became more complicated than just listing IF actions individually as I was going to have to list them anyway!
Hope that made sense? If you can think of a betterway to exclude the foreground process and then use a single command in this way, please do let me know!
Sent from my HTC Desire using XDA Premium App
Click to expand...
Click to collapse
I mean, this solution is just for the Tasker with free Locale Execute Plug-in !
I think that any attempt to pass variables in Tasker and process them would increase the CPU load and reduce performance. It seems to me that there is no difference as to kill the process. And everything works (killed) fine with a single command.
memberfive said:
I mean, this solution is just for the Tasker with free Locale Execute Plug-in !
Click to expand...
Click to collapse
Thought so!
I think that any attempt to pass variables in Tasker and process them would increase the CPU load and reduce performance.
Click to expand...
Click to collapse
Agreed - It was becoming more complicated than an actual Task Killer!
It seems to me that there is no difference as to kill the process. And everything works (killed) fine with a single command.
Click to expand...
Click to collapse
Only problem is with it killing the current application you are using....... Need a solution to prevent that....
Ok, been browsing the web and found these nice profiles, which can trigger an app (Fast Reboot - which acts like a virtual reboot, closing all apps). What do you think about it Brandall? Could it be tweaked even more to get a nice profile using this app? Thanks.
Published by James.
Display- Battery Saver
The initial idea came from some members on the LG2X MoDaCo Forum. The problem at the time was various applications were misbehaving and not stopping when the phone should have been going into its sleep mode. One member suggested using Fast Reboot to ‘reset’ the phone into a state where it can enter sleep mode.
The context:
Event: Display Off
The task:
Wait [ Seconds:11 ]
Stop If [ %SCREEN ~ ON ]
Load App [ App:Fast Reboot Data: Exclude From Recent Apps:On]
The wait is to allow my phone to lock (10 seconds after screen off) then if the phone has been used again the second part should cancel the task #this has limited success if you know a better way to about a task please get in touch!#. Fast reboot unlike many task managers closes and restarts your tasks so your alarms and other app keep working.
Further Improvements
I have added two more complimentary profiles to control when the above profile can run.
Profile: Display- Phone Idle
Event: Phone Idle
Task: Profile Status [ Nameisplay- Battery Saver Set:On]
and
Profile: Display- Phone Offhook
Event: Phone Offhook
Task: Profile Status [ Nameisplay- Battery Saver Set:Off]
These stop the Display- Battery Saver profile from running when the phone is in use. Again, they may not been the most effective solution but they work.
Click to expand...
Click to collapse
mi3x said:
Ok, been browsing the web and found these nice profiles, which can trigger an app (Fast Reboot - which acts like a virtual reboot, closing all apps). What do you think about it Brandall? Could it be tweaked even more to get a nice profile using this app? Thanks.
Published by James.
Click to expand...
Click to collapse
I'd say this is a little excessive... Using a hot/fast reboot as it is known is not addressing the actually issue of misbehaving applications...
For Tasker users, this can be done using Deep Sleep Detective - for other users, this can be done with Better Battery Stats.
Hot/Fast reboot resets the system without rebooting the kernel and is only really necessary when system changes such as remapping hardware keys need to be applied without the need for a full and time-consuming reboot...
Best to track down a problem and resolve it rather and kill everything which this solution does... If a rouge application or process starts at screen-off, then this will happen eventually/immediately after a reboot, so again, a little drastic for short term 'relief'.
The hot reboot is used in my Tasker media mapping profiles though!
I want to kill the backup service that saves data from apps in the cloud and start the service later (when charging) again.
I think it is android alarms: act=android.app.backup.intent.RUN isn't it?
How can I do that?
Thanks in advance!
MaluNoPeleke said:
I want to kill the backup service that saves data from apps in the cloud and start the service later (when charging) again.
I think it is android alarms: act=android.app.backup.intent.RUN isn't it?
How can I do that?
Thanks in advance!
Click to expand...
Click to collapse
This is entirely possible in theory, however killing the service once does not guarantee that it will not start again and again when it feels like it... There is no monitor within Tasker to alert you when it starts...
If there was....
Sent from my Sensation using xda premium
So could you help me with that for the backup service? Or enable/disable toggle?
Thanks.
brandall, I need some help here, please help me out.
I want the following thing:
Everytime I turn internet (easy) some apps services would be launched, like viber/whatsapp/facebook/gmail runing in background as they already do, and when I turn off the internet, I want to kill those process and services...
how can I do that?
pkill -9 and kill-9 arent killing com.whatsapp for example.
MaluNoPeleke said:
So could you help me with that for the backup service? Or enable/disable toggle?
Thanks.
Click to expand...
Click to collapse
Sorry, I didn't see your reply. It's not possible unless the process is obvious when you type 'ps' in the terminal - you can try manually killing it then and see if it comes back. Let me know if you find it and I'll talk you through how to kick off the intent with Tasker.
Sent from my HTC Sensation XE with Beats Audio using xda premium
brunoshady said:
brandall, I need some help here, please help me out.
I want the following thing:
Everytime I turn internet (easy) some apps services would be launched, like viber/whatsapp/facebook/gmail runing in background as they already do, and when I turn off the internet, I want to kill those process and services...
how can I do that?
pkill -9 and kill-9 arent killing com.whatsapp for example.
Click to expand...
Click to collapse
Hi, don't forget that Android is supposed to handle these processes so they don't use any cpu and remain dormant, however, I understand that sometimes it just feels better if they are not there... (although others would tell you that killing apps may make your device under-perform!)
Anyway, killall -9 com.whatsapp will kill the process, but testing it on my device, it restarted almost instantly.
I have the application system tuner pro by 3c an amazing app and under the apps tab there is a 'startup' option for applications which I assumed referred to at boot - I just unticked whatsapp in there, killed the process and then it didn't restart... Maybe a coincidence, but worth a try...
I've no idea what different events in Android cause these apps to decide to come to life...
Hope that helped!?
Sent from my HTC Sensation XE with Beats Audio using xda premium
brandall said:
Hi, don't forget that Android is supposed to handle these processes so they don't use any cpu and remain dormant, however, I understand that sometimes it just feels better if they are not there... (although others would tell you that killing apps may make your device under-perform!)
Anyway, killall -9 com.whatsapp will kill the process, but testing it on my device, it restarted almost instantly.
I have the application system tuner pro by 3c an amazing app and under the apps tab there is a 'startup' option for applications which I assumed referred to at boot - I just unticked whatsapp in there, killed the process and then it didn't restart... Maybe a coincidence, but worth a try...
I've no idea what different events in Android cause these apps to decide to come to life...
Hope that helped!?
Sent from my HTC Sensation XE with Beats Audio using xda premium
Click to expand...
Click to collapse
they may not use cpu but for sure they use battery =/
brunoshady said:
they may not use cpu but for sure they use battery =/
Click to expand...
Click to collapse
It's not my understanding, but I have been wrong before
Did what I suggested stop it restarting??
kill service
I would like to kill a service using this method
I can find the service I want in android service list, it's called "RTService"
How can I find the text to put before "pkill" ?
In terminal emulator and "ps", I didn't find anything related to this and of course "pkill RTService" does nothing ^^
Thanks!
FYI, I don't have a Nexus 5, but I've been following the Android L news for the past few weeks and have yet to see any reports on the battery historian developer tool. I'm really curious to see detailed battery usage reports for apps that are known to cause frequent wakeups from deep sleep (e.g. facebook). From what I can tell, you need 3 things to use this tool:
1.) adb
2.) The actual Python script: https://raw.githubusercontent.com/google/battery-historian/master/historian.py (just right-click and "Save as" to the directory from which you run 'adb')
3.) Also need to install Python 2.7 on your system (for Window users): https://www.python.org/download/
4.) Obviously, a browser to view the generated html.
There are some comments at the beginning of historian.py script that describe how to generate the required data with adb. Note for Windows users: open up the file in Wordpad, not Notepad.
Also for Windows users: assuming you have installed Python 2.7 in c:\Python27, use the following command line to run the script:
c:\Python27\python.exe historian.py [OPTIONS] [FILE]
Also note that this tool is NOT part of the built-in Android battery settings/stats and there is no native Android UI for it. It is meant to be a developer tool. However, this doesn't mean that users with access to 'adb' can't play with it...
I manage to get this work...even i have no idea about development...
First it need python 2.7 not 3.4
After that you have to mix some commands from the OT and the info inside the .py file...so what i do
After installing python 2.7 i use the command to get a bugreport from the phone...
Code:
adb bugreport > bugreport.txt
then i use the OT command to make the bugreport to an html file with a bit of change
Code:
c:\Python27\python.exe historian.py -a bugreport.txt > battery.html
Thats it...now..i don't know if it has the correct data...im just achived the html look of what we saw on I/O
I think first you need to use this command
Code:
adb shell dumpsys batterystats --enable full-wake-history
To let the phone start dumping stats...and then after some use time to gather the bugreport from your phone....anyone with better knowlage im sure it will figure it out!!!
On the attachment i use the command
Code:
adb shell dumpsys batterystats --reset
to reset my values cause im not using my L rom...
Oh btw this will work only on L....
I can't use "--enable" option.
I can't use this command.
Code:
adb shell dumpsys batterystats --enable full-wake-history
Please tell me how to use "--enable" option.
My phone is Android4.4.2.
("--enable" option is Android "L" only ??)
k-matoo777 said:
I can't use this command.
Code:
adb shell dumpsys batterystats --enable full-wake-history
Please tell me how to use "--enable" option.
My phone is Android4.4.2.
("--enable" option is Android "L" only ??)
Click to expand...
Click to collapse
This is only for Android L.
thomase00 said:
This is only for Android L.
Click to expand...
Click to collapse
How is it that we are a month after Google I/O, and no one with Android L has played with this yet?
IMHO, this is one of the most important new features.
Yep, i think this is the most recent problems the two guys from project Volta have. They have to be rely on the help of the programmers which develop the software.
Daimonion1980 said:
Yep, i think this is the most recent problems the two guys from project Volta have. They have to be rely on the help of the programmers which develop the software.
Click to expand...
Click to collapse
They have to rely on Developer to use JobScheduler API but not for finding you bad apps that are killing the battery. And to that effect, those guys are doing a terrible job with a botched tool.
It's amazing how there is NOTHING on the Internet about the Battery Historian tool. It's like no one has used it. In my case, I can't get the command to builds the html file from the bugreport. It keeps giving me a invalid html error.
Yep, I did ask chamonix from BBS if he can use the generated stats and he will take a look into it. I hope he will do it in the near future.
Using battery historian
After playing with this for a while I've figured out how to use the basic function (this is part of project volta, so it will only work on Android 5.0+)
enable full wake history and then output your batterystats to a text file
./adb shell dumpsys batterystats --enable full-wake-history
./adb shell dumpsys batterystats > batterystats.txt
navigate to wherever you placed historian.py and output the data to a html file (you need python 2.7)
./historian.py [location of batterystats.txt] > batterystats.html
open the batterystats.html file and you're done! For basic use at least. I'm still figuring out the rest myself.
So after having problems on lollipop with mobile radio active bug (https://code.google.com/p/android/i...id&colspec=ID+Type+Status+Owner+Summary+Stars)
i managed to get an dump from battery historian. But at the moment a see not the culprit in my log. The only thing i see is that my device although it was not heavily used this morning has a tons of wakelocks.... and an running par between 10:45 and 10:55 where i don't know it's coming from......
Have a look at it:
http://picture-diamonds.de/private/Thomas/Dumpsys.html
Is anyone able to interpret this chart?
I finally got 5.1 on my Verizon Moto X (1st gen). One of the first things I did was collect battery stats and run Battery Historian 2.0. The following guide was very helpful in getting this set up on Windows 7:
http://ph0b.com/battery-historian-2-0-windows/
Anyway, it turns out that while sitting untouched on my desk at work, the phone pretty consistently wakes up about once per minute (only for a second or 2), with the partial wakelock held by GOOGLE_SERVICES. Most of the time, it seems to be related to location reporting. This doesn't sound like a lot, but I think there is a relatively big cost associated with powering the up and down.
Other than location, the ONLY reason I can think of for waking up the phone periodically is for TCP keep-alive (to keep GCM push notifications working), but once per minute seems kind of excessive even for that. My theory is that there is an app using the Google Play Services Geofencing API, and I just happen to be parked near a geofence boundary. According to my understanding, the Google geofencing service adjusts location polling frequency according to your distance from a geofence. If I am correct, the problem is that it is not smart enough to understand that you are stationary and therefore avoid excessive polling.
I'll try to collect more stats from different locations.
I'm sure this ground has been tread before...
thomase00 said:
I finally got 5.1 on my Verizon Moto X (1st gen). One of the first things I did was collect battery stats and run Battery Historian 2.0. The following guide was very helpful in getting this set up on Windows 7:
http://ph0b.com/battery-historian-2-0-windows/
Anyway, it turns out that while sitting untouched on my desk at work, the phone pretty consistently wakes up about once per minute (only for a second or 2), with the partial wakelock held by GOOGLE_SERVICES. Most of the time, it seems to be related to location reporting. This doesn't sound like a lot, but I think there is a relatively big cost associated with powering the up and down.
Other than location, the ONLY reason I can think of for waking up the phone periodically is for TCP keep-alive (to keep GCM push notifications working), but once per minute seems kind of excessive even for that. My theory is that there is an app using the Google Play Services Geofencing API, and I just happen to be parked near a geofence boundary. According to my understanding, the Google geofencing service adjusts location polling frequency according to your distance from a geofence. If I am correct, the problem is that it is not smart enough to understand that you are stationary and therefore avoid excessive polling.
I'll try to collect more stats from different locations.
I'm sure this ground has been tread before...
Click to expand...
Click to collapse
Thanks for sharing ph0b's work here with Battery Historian.
Hi Guys,
I'm currently looking for a possibly very special app and can't find anything but the usual suspects like Tasker that don't seem to meet my requirements.
I'm looking for an automation app that allows me to navigate in apps, fill in text fields, if possible, transfer predefined data into the text fields for each run and wait for text to be entered at certain points.
For a better explanation:
I would like to test 2 apps and their behavior. Reset smartphones should be used for this. The automation app should run through the following steps:
- Step 1: The app creates an account with Gmail. As soon as the SMS code has been requested, the app should interrupt so that I can enter the SMS code. After confirmation, the app should continue to go through its routine.
- Step 2: Another app is to be opened that has a longer waiting time before it starts. Then text fields should again be filled in with predefined data.
- Step 3: Finally, the app should go to the settings and delete the G-Mail account.
I don't care how the whole thing is realized. Either macro recording again or using symbols as with Tasker. The main thing is that it works properly. I am not familiar with such an app. Just such simple apps as Tasker that work with if and while and are not sufficient for my purposes.
Otherwise, I had the idea to use Python to implement my dream routine. A few days ago I discovered a Python SDK for Android. If I understand correctly, the SDK is based on Python 3. I just can't estimate how well the programming is going or whether scripts can be executed 1: 1 as on the PC. What do you all mean? Do you know of an app that meets my expectations or should I deal directly with the Python method?
Nobody has an idea? Or is my text not understandable?
I know you said no "Tasker" like apps, but this app called Automate can definitely achieve what you outlined without any other apps (or with them). You only need android 7 or above and These function blocks:
The app uses a flowchart logical system (essentially the basis of all programming languages) and can even execute shell scripts with/without root privileges. You can also install Termux (a terminal emulator) and use the command:
Code:
pkg install python
To install python3.7, from there the world is in your hands, provided you have sufficient java/kotlin knowledge and an understanding for android processes.
Also please tick the check mark next to my answer if I solved your question, so that others can find the solution.
Thank you Slim K. Automate looks good at the first look. I'll give that app a chance and otherwise test thy python way with termux.
If there are other ways to solve the problem, let me know.