Android DroidSheep is built for Android powered devices, so this section should give a short introduction about what

Android is and what Android applications look like. 'Basically, Android is a software stack for mobile devices that includes an operating system, middleware and key applications. The Android SDK provides the tools and APIs necessary to begin developing applications on the Android platform using the Java programming language.'[10] Android oers runtime and SDK for application development on mobile devices, such as phones and tablet computers. It is based on a Linux operating system using a Linux-kernel, meaning commands, directory structure and many other things are very similar to standard Linux systems. Android Applications are written in Java programming language and get compiled to 'byte code'. Applications can be run within a 'Dalvik Virtual Machine'[3], which interprets the 'byte code' on the device [6]. Figure 6 shows the general Android system architecture. DroidSheep is divided into two parts. One part needs direct access to the system resources, such as the Linux kernel, and is therefore located in the Android runtime itself. The runtime is a plain Linux system, so this means this program part is not interpreted by the virtual machine but has to be compiled for the devices ARM platform and runs as a system process. The second part is a normal Android Java application and runs within the application layer. 4.1 Android general application structure Most Android applications are based on the Android SDK. The Android SDK is a development kit, which oers a lot of dierent tools, a compiler and libraries for creating Android applications. Generally, an Android application is just a plain Java program using the well-known class and package structure Java uses. There are only a few dierences: As Android oers most of the user interface components, user interfaces needn't be created by hand, but can be dened using an XML layout

1 Android general application structure 4 ANDROID Figure 6: Android system architecture [10] In order to run the application on an Android device. most devices require the packages to be digitally signed and will warn the user in case this package has not been downloaded from a trusted or known source (such as the Google Android Market). An Android application is divided into 'Activities'. each activity has a special mission and controls the user interface and program logic for this special application. what the entry point of the program is and which permissions it requires. This le is then used to generate the whole user interface of the application.xml le.apk le (Android Package) and can be installed on an Android device. The AndroidManifest contains an application denition telling the Android operating system. For security reasons. Those dex les are zipped together with resources and AndroidManifest to an .2 Dalvik virtual machine 4 ANDROID 4. Normally. but use a Dalvik Virtual Machine. Android uses a virtual machine for interpreting the bytecode and thereby running the applications.descriptor. For installing an application on a device. A Dalvik VM is a register-based virtual machine which is designed and optimized for very low memory consumption and e-ciency when running on mobile devices.dex format (Dalvik Executable).2 Dalvik virtual machine Similar to desktop Java applications. For further information see [11] 184. They do not simply use some Linux Java VM. 194. it gets compiled to bytecode using the . //// . [3] In order to avoid security issues. each start of an Android application starts a separate VM running only this single application. there is a second thing to do: Dening an AndroidManifest.

content providers and other services programmers it can reassemble functions used by other existing applications. Every application which runs on Android is written in Java. This layer will mostly be used by commonly cell phone users. • The libraries The available libraries are all written in C/C++. The translated code can then be executed by the operating system. it is possible to hear music and read an email at the same time. SMS program. maps. With the help of managers. For every . the Java programs will be received and translated by the virtual machine Dalvik. contacts and many more. which include 5 different groups: • The application layer The Android software platform will come with a set of basic applications like browser. First a set of core libraries which provides most of the functionality available in the core libraries of the Java programming language. All these applications are written using the Java programming language. 2D and 3D graphics. Second the virtual machine Dalvik which operates like a translator between the application side and the operating system. It should be mentioned that applications can be run simultaneously. As the operating system is not able to understand this programming language directly. They will be called through a Java interface. the SQL database SQLite and the web browser engine WebKit.////The software stack is divided in four different layers. A very important notice is that applications will be encapsulated in Dalvik. calendar. email client. These includes the Surface Manager (for compositing windows). • The application framework An application framework is a software framework that is used to implement a standard structure of an application for a specific operating system. Media Codecs like MPEG-4 and MP3. Main features of Android 13 • The runtime The Android runtime consists of two components.

( It(contains(all(the(packages.4. • The kernel The Linux Kernel will be used by Android for its device drivers.( The(more(specific(Android(classes( and(packages(use(other(names(that(are(not(similar(to(Java(editions.(similar(to(Java(Standard(Edition((J2SE).( The(PATH(variable(is(used(by(the(developing(computer’s OS(to(locate(the(Android(SDK(and(is( essential(for(developing(software anywhere in the(developing(machine’s(file(system([4]. memory management.(file(handling(and(more. The(syntax(is(the(same(as(Java(in( terms(of(operands.( This(is(an(advantage(to(developers(familiar(with(programming( languages(originating(from(the(programming(language(family(C.program an own virtual machine is available even if some programs are running parallel.(developer(could(choose(developing(environment(operating(system(freely [1]. so a program error for example can lead to a crash of the program but not of the whole system.(selections. The following diagram shows the major components of the Android operating system listed above: [GO2008-2] /////Android(SDK(makes(use(of(Java(programming(language. . To(develop(an(Android(application.(application( framework(and class(libraries the(developer(needs(to(develop(an(Android(application. developers(need(to(make(sure(that(the(development( environment(has(a(Java(version(5(or(above.1!Android!SDK The(Android(SDK(is(mandatory(to(Android(developers.( Download(and(install(a(Java(version(appropriate(for(the(developing(computer(OS. The advantage is that the different programs do not affect each other. called(Java(Android(Library.( Today(Java(6(is(stable(and(there(is(really(no(reason(not( to(use(it.( The( developer(should(download(and(install(the(Android(SDK(and(set(up(the(PATH(environment(variable.(since( Java(is(OS(independent. process management and networking. 6.(such(as(the(Activity(Class(and( the(View(Class([4].(iterations.

4.6. with over 25 billion downloads. and tutorials. .( Today(it(is(the(only(IDE(which(supports Android(development.(and(makes(development(more(straight(forward(and(thus(8(quicker. However(using(a(text(editor(is(time(consuming(and(sometimes(frustrating(for(developers(when(the( Figure!3:!Ratio of!Android!Devices!used!to!download!Applications!using! the!Android!Market!March!29!to!April!12!2010![14]. A June 2011 [4] research indicated that over 67% of mobile developers used the platform.(adding( breakpoints(and(check(variables(at(a(specific(time(within(the(programming(code.000 applications have been developed for Android.(access(Dalvik( Debug(Monitor(Server((DDMS)(and(use(the(project(wizard(are(some(of(the(features.2!Eclipse!IDE Even(though(Eclipse(Integrated(Development(Environment. Furthermore(Eclipse(has(a(handy( Android(Development(Tool((ADT)(plug8in(which(is(a(powerful(extension(to(Eclipse. (It(lets(the developer(use(all(the(basic(tools(any(full(featured(IDE(uses([1]([4]. Applications are usually developed in the Java programming language using the Android Software Development Kit. libraries.(the(author(recommends developers(to(use(it.////// Android software development is the process by which new applications are created for the Android operating system.(IDE.( It(is( possible.5. The [citation needed] Android platform has also grown to become a favorite among mobile developers. Currently supported development platforms include computers running Linux (any modern desktop Linux distribution).8 or later. sample code. The officially .Android(Application(Development ~(12(~ Benny(Skogberg lack(of(a(semi(colon((. In Q2 2012. but other development tools are available. documentation.(to(use(a(simple(text(editor(for(development. (To(mention(a(few. at the time of publication. Android SDK The Android software development kit (SDK) includes a comprehensive set of development [6] tools.(as(in(most(other(programming(languages. around 105 million units of Android smart phones were shipped which acquires a total share of [5] 68% in overall smart phones sale till Q2 2012. These include a debugger.(is not(necessary(for(Android( developers.)(or(a(misspelling(is(not(highlighted. a handset emulatorbased on QEMU. Windows XP or later. Mac OS X 10. As of October 2012. more [2][3] than 700.

The file system of the partition must be recognized by the device. It requires that the device be started in a boot loader or Second Program Loader mode in which only the most basic hardware initialization is performed. and NetBeans IDE also supports Android development via a plugin. The SDK also supports older versions of the Android platform in case developers wish to target their applications at older devices. It consists of both client and server-side programs that communicate with one another. Development tools are downloadable components. . APK package contains . though IntelliJ IDEA IDE (all editions) fully supports Android development out of the [7] [8] box. Additionally. triggering a reboot. build and debug Android applications as well as control [9] attached Android devices (e. The ADB is typically accessed [12] through the command-line interface. then use command line tools (Java Development Kit and Apache Ant are required) to create.Reboots the device into either the main operating system.   devices . [edit]Fastboot Fastboot is a diagnostic protocol included with the SDK package used primarily to modify the flash filesystem via a USB connection from another computer. After enabling the protocol on the device itself it will accept a specific set of commands sent to it via USB utilizing a command line.supported integrated development environment (IDE) is Eclipse using the Android Development Tools (ADT) Plugin. etc.dex [11] files (compiled byte code files called Dalvik executables). so after one has downloaded the latest version and platform.Rewrites a partition with a binary image stored on the host computer.apk format and stored under /data/app folder on the Android OS (the folder is accessible only to root user for security reasons). installing software package(s) remotely). The format for issuing commands through the ADB is typically: adb [-d|-e|-s <serialNumber>] <command> In a security issue reported in March 2011. developers may use any text editor to edit Java and XML files. Android Debug Bridge The Android Debug Bridge (ADB) is a toolkit included in the Android SDK package. erase .Displays a list of all devices (with Serial #) connected to the host computer.. older platforms and tools can also be downloaded for [10] compatibility testing.Erases a specific partition. Android applications are packaged in . ADB was targeted as a vector to attempt to install a [13] rootkit on connected phones using a "resource exhaustion attack". resource files. Some of most commonly used fastboot commands include:    flash . reboot . the system recovery partition or back into its bootloader.g.Format a specific partition. Enhancements to Android's SDK go hand in hand with the overall Android platform development. format .

Native classes can be called from Java code running under the Dalvik VM using the System. The ADB debugger gives a root shell under the Android Emulator which allows native ARM code or x86 code to be uploaded and executed. Android USB accessories are specifically designed to attach to Android-powered devices and adhere to a simple protocol (Android accessory protocol) that allows them to detect Android-powered devices [22] that support accessory mode. Wellesley.[edit]Native development kit Libraries written in C and other languages can be compiled to ARM or x86 native code and installed using the Android Native Development Kit. Running native code is complicated by Android's use of a nonstandard C library (libc. text messaging. which allows external USB hardware (an Android USB accessory) to interact with an Android-powered device in a special "accessory" mode. the connected accessory acts as the USB host (powers the bus and enumerates devices) and the Android-powered device acts as the USB device.1 platform (also backported to Android 2. Skia has backends for both win32 and Unix.) and the University of San Francisco. accelerometer and orientation data.3. a Web-based visual development environment for novice programmers.4) introduces Android Open Accessory support. Under [25] development for over a year. The graphics library that Android uses to arbitrate and control access to this device is called the Skia Graphics Library (SGL). and it has been released [18] under an open source licence. [edit]HyperNext Android Creator . "We could only have done this because [24] Android’s architecture is so open. [edit]App Inventor for Android Main article: Google App Inventor On 12 July 2010. which is part of the standard Android Java classes. contact data. MIT's Hal Abelson. initially including Amazon and Twitter. the block-editing tool has been taught to non-majors in computer science at Harvard. Several third[20] [21] party tools allow integrating the NDK into Eclipse and Visual Studio. allowing the development of cross-platform applications. Google announced the availability of App Inventor for Android. deploy and debug the apps. ARM or x86 code can be compiled [16] using GCC on a standard PC. speech-to-text conversion. known as Bionic). the NDK is based on command-line tools and requires invoking them manually to build. phone functions. and Web [23] services. and it is the graphics engine underlying the Google [19] Chrome web browser. MIT. When an Android-powered device is in accessory mode. [14][15] [16] Complete applications can be compiled and installed using traditional development tools. based on MIT's Open Blocks Java library and providing access to Android devices' GPS. Trinity College (Hartford.loadLibrary call. The underlying graphics device is available as [17] a framebuffer at/dev/graphics/fb0." said the project director. Unlike Java App development based on the Eclipse IDE. where Professor David Wolber developed an introductory computer science course [26][27] and tutorial book for non-computer science students based on App Inventor for Android. persistent storage. [edit]Android Open Accessory Development Kit The Android 3.

HTTP. HyperNext is an interpreted English-like language and has many features that allow creation of Android applications. allowing the development with C and the simple porting of existing SDL and native C applications. [edit]RFO [31] the last source code update being in August 2009.g. GPS. SQLite. text-to-speech. It is an open source project which can produce full[32] fledged Android APK files. multitouch. Simple programs are form definitions (which contain components) and code (which contains the program logic). FTP. [edit]Basic4android Basic4android is a commercial product similar to Simple. It is based on HyperCard that treated software as a stack of cards with only one card being visible at any one time and so is well suited to mobile phone applications that have only one window visible at a time. [29] the Jagged Alliance 2video game. list functions. Simple is a BASIC dialect for developing Android applications. bluetooth.Main article: HyperNext HyperNext Android Creator (HAC) is a software development system aimed at beginner programmers that can help them create their own Android apps without knowing Java and the Android SDK. It targets professional and non-professional programmers alike in that it allows programmers to quickly write Android applications that use the Android runtime components. The Simple project is not very active. and other essentials. By injection of a small [28] java shim and JNI the usage of native SDL code is possible. Basic4android is very active. math. encryption. It is inspired by Microsoft Visual Basic 6 and Microsoft Visual Studio. phone. HTML GUI. Development of RFO Basic is active. file system. Similar to Microsoft Visual Basic 6. The interaction between the components and the program logic happens through events triggered by the components. email. It supports a growing subset of the Android SDK including its own versions of the GUI control types and automatically runs its own background service so apps can continue to run and process information while in the background. [edit]Android [33] APIMiner . allowing Android ports like e. [edit]SDL The SDL library offers also a development possibility beside Java. The program logic consists of event handlers which contain code reacting to the events. and there is a strong online community of Basic4android developers. graphics. sensors. and there is a strong online community of RFO Basic! developers. SMS. network sockets. Basic! RFO Basic is an on-device interpreter which provides simple access to hardware. sound. [edit]The Simple project The goal of Simple is to bring an easy-to-learn-and-use language to the Android [30] platform. string functions. HyperNext Android Creator's main programming language is simply called HyperNext and is loosely based on Hypercard's HyperTalk language. voice recognition.

it has been by far the [citation needed] most widely used Software Development Kit (SDK). APIMiner relies on an intra-procedural static slicing algorithm. extracted from real open-source Android applications. This [3] happened in large part on May 8. Linux. 2007.Java EE or Java [1] ME platforms released by Oracle Corporation in the form of a binary product aimed at Java developers [2] on Solaris. when Sun contributed the source code to the OpenJDK. On November 17. Since the introduction of Java platform. .Android APIMiner is a platform that automatically instruments the Javadoc documentation of the [34] Android API with examples of usage. Sun announced that it would be released under the GNU General Public License (GPL). thus making it free software. The Java Development Kit (JDK) is an implementation of either one of the Java SE. 2006. Mac OS X or Windows. To improve the quality of the extracted examples.

Sign up to vote on this title
UsefulNot useful