An Explanation of My Recent "Self Destruct" Application

An Explanation of My Recent “Self Destruct” Application

Self Destruct” is simply an application I made for fun, as a proof of concept. This application demonstrates a way to create an application that is able to “destroy” itself, preventing it from running until it is uninstalled, and then reinstalled later. I’d like to personally thank HandlerExploit for giving me a hint about how to do this (he mentioned that he found the trick in the provisioning code). HandlerExploit uses a similar technique in his application, “iBrick Proof of Concept”. As soon as the user opens the application, it removes it’s main class from the Dalvik package manager, preventing itself from being able to run again. The only way to run the application again after opening it is to uninstall the application, and reinstall it. This application serves no real purpose other than to demonstrate an interesting trick, and it is not malicious in any way. Please note that after running the application, it’s icon will remain in the launcher, although you won’t be able to open it. Uninstalling the application will remove the icon. I’d release the entire source code for this application, but really, the only part that actually matters is the part that removes the class from Dalvik and prevents the application from running again. Interestingly, this application requires absolutely no permissions, at all in order to do this. In case you are interested in how I did this, here is the source code for the main class in the project:

package com.dylantaylor.selfdestruct;
import android.app.Activity;
import android.content.ComponentName;
import android.content.pm.PackageManager;
import android.os.Bundle;

public class Main extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        PackageManager pm = getPackageManager(); ComponentName name = new ComponentName(this, Main.class);
        pm.setComponentEnabledSetting(name, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, 0);
    }
}

Yes, I realize that this application serves no real purpose, but it’s just something interesting that I made for fun. If you don’t want it, don’t download it. Otherwise, have fun! 🙂

P.S. Do whatever you want with that source code, it’s virtually worthless to me anyways.

Advertisements

Network Listing Coming Soon to FiOS WEP Calculator Lite

Network Listing Coming Soon to FiOS WEP Calculator Lite

In order to give FiOS WEP Calculator Lite users a taste of the Pro version, and boost sales, I decided to allow users to preview the network selection feature, but not actually “select” the network unless it is remembered on the device. What this means is that they will get a listing of remembered and nearby access point listings,  but they will only be able to select and calculate WEP keys for ‘remembered’ access points automatically. They will still be able to view a listing of nearby access points, but they will not be able to select them. Having this feature will still improve the overall experience, while still giving users a reason to purchase FiOS WEP Calculator Pro.

UPDATE: I finished adding the new features to the lite version, and an update is available in the Android market. The new version of FiOS WEP Calculator brings the ability to view nearby and remembered FiOS networks, previously only available to pro users. In order to select nearby networks (not remembered ones) automatically, you need to upgrade to the pro version, but you can now view a list of nearby networks without paying for FiOS WEP Calculator Pro.

Find The Mouse Improvements Complete!

Find The Mouse Improvements Complete!

I finished making the changes to “Find The Mouse”, and the new code is up on github. I’m already in the process of signing and uploading the new version to the Android market. You should be able to download it very soon! The new version automatically advances to the next level after you successfully find the mouse, it keeps track of your winning streak and current score, and the user interface feels much nicer. Enjoy! 🙂

UPDATE: The new version is now up on the market! Check it out!

Introducing “Find The Mouse”, a Basic Open Source Android Game!

Introducing “Find The Mouse”, a Basic Open Source Android Game!
So, a friend of mine asked me to show them how to make a basic Android game, which resulted in me coding up something simple for him. “Find The Mouse” is the result of this coding. This entire game was started and finished in around 20 minutes today, and the counter was added in later. All of the artwork in the game is public domain artwork found on sites like clker.com. The card background was heavily modified in order to reduce file size and make it look nicer on mobile screens. The object of the game is to find the mouse hidden behind one of five cards. You have three chances to find the mouse before you lose. The game is, as I stated earlier, incredibly simple, yet somewhat useful to someone who is learning to code for the Android operating system. The entire source code as well as all resources are available on GitHub, and I will probably end up putting this on the Android market soon, so that all of you without the Android SDK or the time to compile source code can play with this. This game will definitely be 100% free, and I have no intention of ever charging for it. The version on the market will likely have an AdMob advertisement in it, however, the version on github will not if you have the time to compile it and run it yourself. I am releasing this project under version 3 of the GNU General Public License, and all original artwork created by me in relation to this project is released to the public domain. You may copy, edit, modify and redistibute this project as long as you follow the terms of version 3 of the GPL. Enjoy! The project’s source code can be found on this GitHub repository. 😉

P.S. Hitting the Search button or the Menu button resets the game.

Automatic Limit Removal Still Broken On Certain Devices

Automatic Limit Removal Still Broken On Certain Devices
Sorry, but it looks like automatic limit removal is still not working on certain rooted Android 2.2 devices. If you want to get your limit removed, and automatic removal did not work, I suggest trying the manual removal method, which has been tested and proven to work. I want to get automatic removal working very badly, but unfortunately, I don’t actually have a 2.2 device, so it’s a lot harder to make it work. When I get 2.2 on my Samsung Epic 4G, I will do everything I can to get the automatic removal working, as I know it is very important to many of my users. I’d like to apologize for how long it has been taking to get this fixed, but developing for an operating system I don’t have is hard to do. I’d like to let you all know that fixing this is very high on my priority list, and I’m trying to get a fix out as soon as possible. Thank you for your understanding.

Currency Converter Version 0.4 Released

Currency Converter Version 0.4 Released

I just released version 0.4 of my currency converter to the market. This version now caches the exchange rates for when there is no connection available, allowing the application to be used without an Internet connection, as long as it was used with one at least once.

My Latest Top-Secret Project

My Latest Top-Secret Project

I’ve been playing around a lot with different styles of Android user interface design lately, in order to practice developing for the platform. In my new top-secret project (coming soon!), I spent a lot of time really tweaking and customizing the user interface in order to make it look and feel great. Some new techniques I’ve been experimenting with include: custom background images (with XML layouts), custom spinner layouts, font style and color, alpha-transparency, and a couple of other neat tricks. In addition to that, I also worked on really optimizing the graphics used in the application to reduce file size. How does this all fit together? You’ll soon find out, when I release one of my best looking applications (visually) yet. In addition to just graphical user interface design, I have also been playing around a lot with offloading processing by utilizing server side scripting (sometimes referred to as “Cloud Computing“), and API calls, in this case, to a dynamically updating data feed. In my upcoming application, I learned a lot about sending queries to a server, and parsing the output that is returned in an optimized and efficient way in order to improve reliability over a wireless network. For instance:

  • In my new project, all the data I need is queried and then parsed on the server side into a comma separated value file that is less than 1.5KB of data!
  • Once the data is retrieved, it is parsed on the client side into arrays using string tokenizers and buffered readers so that it can be accessed quickly without a lot of extra processing.
  • No third party libraries that are not included in Android itself are used or needed in order to retrieve and parse any of the data. All of the parsing and retrieving is hand coded from scratch.
  • When a network connection is not available, my application takes advantage of a cached copy of data stored on the phone itself (remember how I said the entire set of data is less than 1.5kb?)

Haven’t guessed what I’m working on yet? That’s ok… stay tuned for more updates and some screenshots as I continue to work on this project. Keep in mind that I will also be working on improving my old applications, such as EliteBomb, at the same time, and it may take a while for me to finally release this. My new application will be free, and it’s mostly just a practice application in order to improve my skills at coding Android applications and possibly increase my user-base, but I will continue to support it as well as all of my other applications.