Операционная система Android

Общий обзор проблемы безопасности ОС Android. Развитие индустрии по борьбе с вредоносным и мошенническим ПО. Разработка Системы ранжирования уровней опасности Android приложений. Выбор производителя и типа СУБД. Тестирование программного обеспечения.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 13.02.2016
Размер файла 2,7 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

// XMLTags, The XML tag tree starts after some unknown content after the

// StringTable. There is some unknown data after the StringTable, scan

// forward from this point to the flag for the start of an XML start tag.

int xmlTagOff = LEW(xml, 3 * 4); // Start from the offset in the 3rd word.

// Scan forward until we find the bytes: 0x02011000(x00100102 in normal int)

for (int ii = xmlTagOff; ii < xml.Length - 4; ii += 4)

{

if (LEW(xml, ii) == startTag)

{

xmlTagOff = ii; break;

}

}

int off = xmlTagOff;

int indent = 0;

int startTagLineNo = -2;

while (off < xml.Length)

{

int tag0 = LEW(xml, off);

//int tag1 = LEW(xml, off+1*4);

int lineNo = LEW(xml, off + 2 * 4);

//int tag3 = LEW(xml, off+3*4);

int nameNsSi = LEW(xml, off + 4 * 4);

int nameSi = LEW(xml, off + 5 * 4);

if (tag0 == startTag)

{ // XML START TAG

int tag6 = LEW(xml, off + 6 * 4); // Expected to be 14001400

int numbAttrs = LEW(xml, off + 7 * 4); // Number of Attributes to follow

//int tag8 = LEW(xml, off+8*4); // Expected to be 00000000

off += 9 * 4; // Skip over 6+3 words of startTag data

String name = compXmlString(xml, sitOff, stOff, nameSi);

//tr.addSelect(name, null);

startTagLineNo = lineNo;

//Console.WriteLine(tag6.ToString() + "\t" + name);

// Look for the Attributes

tabs++;

StringBuilder sb = new StringBuilder();

for (int ii = 0; ii < numbAttrs; ii++)

{

int attrNameNsSi = LEW(xml, off); // AttrName Namespace Str Ind, or FFFFFFFF

int attrNameSi = LEW(xml, off + 1 * 4); // AttrName String Index

int attrValueSi = LEW(xml, off + 2 * 4); // AttrValue Str Ind, or FFFFFFFF

int attrFlags = LEW(xml, off + 3 * 4);

int attrResId = LEW(xml, off + 4 * 4); // AttrValue ResourceId or dup AttrValue StrInd

off += 5 * 4; // Skip over the 5 words of an attribute

String attrName = compXmlString(xml, sitOff, stOff, attrNameSi);

String attrValue = attrValueSi != -1

? compXmlString(xml, sitOff, stOff, attrValueSi)

//: "resourceID 0x" + Integer.toHexString(attrResId);

: "resourceID 0x" + attrResId.ToString("X");

sb.Append(" " + attrName + "=\"" + attrValue + "\"");

//tr.add(attrName, attrValue);

}

if (name.ToLower() == "uses-permission")

{

string rr = sb.Replace("\"", "").ToString();

rr = rr.Substring(rr.IndexOf("name=") + "name=".Length);

//prtIndent(indent, rr);

permissions.Add( rr);

}

else if (name.ToLower() == "permission")

{

string rr = sb.Replace("\"", "").ToString();

rr = rr.Substring(rr.IndexOf("name=") + "name=".Length);

//prtIndent(indent, rr);

permissions.Add(rr);

}

else if (name.ToLower() == "action")

{

string rr = sb.Replace("\"", "").ToString();

rr = "action = " + rr.Substring(rr.IndexOf("name=") + "name=".Length);

actions.Add(rr);

// res.Add(rr);

}

indent++;

}

else if (tag0 == endTag)

{ // XML END TAG

indent--;

off += 6 * 4; // Skip over 6 words of endTag data

String name = compXmlString(xml, sitOff, stOff, nameSi);

}

else if (tag0 == endDocTag)

{

break;

}

else

{

break;

}

}

);

string result = "";

return result;

} // end of decompressXML

private static String compXmlString(byte[] xml, int sitOff, int stOff, int strInd)

{

if (strInd < 0) return null;

int strOff = stOff + LEW(xml, sitOff + strInd * 4);

return compXmlStringAt(xml, strOff);

}

private static String spaces = " ";

private static string prtIndent(int indent, String str)

{

Console.WriteLine(spaces.Substring(0, (int)Math.Min(indent * 2, spaces.Length)) + str);

return spaces.Substring(0, (int)Math.Min(indent * 2, spaces.Length)) + str;

}

// compXmlStringAt -- Return the string stored in StringTable format at

// offset strOff. This offset points to the 16 bit string length, which

// is followed by that number of 16 bit (Unicode) chars.

private static String compXmlStringAt(byte[] arr, int strOff)

{

int strLen = arr[strOff + 1] << 8 & 0xff00 | arr[strOff] & 0xff;

char[] chars = new char[strLen];

for (int ii = 0; ii < strLen; ii++)

{

chars[ii] = (char)arr[strOff + 2 + ii * 2];

}

return new string(chars); // Hack, just use 8 byte chars

} // end of compXmlStringAt

// LEW -- Return value of a Little Endian 32 bit word from the byte array

// at offset off.

private static int LEW(byte[] arr, int off)

{

return (int)(arr[off + 3] << 24 & 0xff000000 | arr[off + 2] << 16 & 0xff0000

| arr[off + 1] << 8 & 0xff00 | arr[off] & 0xFF);

} // end of LEW

}

}

Модуль распаковки:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.IO;

using System.Security.Cryptography;

using System.Security.Cryptography.X509Certificates;

using ICSharpCode.SharpZipLib.BZip2;

using ICSharpCode.SharpZipLib.Zip;

using ICSharpCode.SharpZipLib.Zip.Compression;

using ICSharpCode.SharpZipLib.Zip.Compression.Streams;

using ICSharpCode.SharpZipLib.GZip;

namespace WindowsFormsApplication1

{

class tools

{

public static void unpack(string file)

{

FastZip fz = new FastZip();

string unpdir = file + "_unp";

if (!Directory.Exists(unpdir))

Directory.CreateDirectory(unpdir);

fz.ExtractZip(file, unpdir, null);

}

public static string GetMD5(string filename)

{

try

{

FileStream file = new FileStream(filename, FileMode.Open);

MD5 md5 = new MD5CryptoServiceProvider();

byte[] retVal = md5.ComputeHash(file);

file.Close();

StringBuilder sb = new StringBuilder();

for (int i = 0; i < retVal.Length; i++)

{

sb.Append(retVal[i].ToString("X2"));

}

return sb.ToString();

}

catch

{

return "000000T000000000000000000000000";

}

}

public static byte[] GetMD5(byte[] buff)

{

MD5 md5 = new MD5CryptoServiceProvider();

byte[] retVal = md5.ComputeHash(buff);

return retVal;

}

public static string ConvertMD5(byte[] md5)

{

StringBuilder sb = new StringBuilder();

for (int i = 0; i < md5.Length; i++)

{

sb.Append(md5[i].ToString("X2"));

}

return sb.ToString();

}

public static byte[] ConvertMD5(string line)

{

line = line.Trim();

var bytes = new byte[16];

line = line.Replace("0x", "");

if (line.Length != 32) return bytes;

for (int i = 0; i < 16; i++)

{

string s = "" + line[i * 2] + line[i * 2 + 1];

int b = Convert.ToInt32(s, (int)16);

bytes[i] = (byte)b;

}

return bytes;

}

public static byte[] GetMD5b(string filename)

{

// FileStream file = new FileStream(filename, FileMode.Open);

BinaryReader br = new BinaryReader(File.OpenRead(filename));

var buff = br.ReadBytes((int)br.BaseStream.Length);

br.Close();

MD5 md5 = new MD5CryptoServiceProvider();

byte[] retVal = md5.ComputeHash(buff);

return retVal;

}

public static byte[] GetDex(byte[] apk)

{

try

{

MemoryStream ms = new MemoryStream(apk);

using (ZipInputStream zip = new ZipInputStream(ms))

{

ZipEntry theEntry;

while ((theEntry = zip.GetNextEntry()) != null)

{

if (theEntry.Name == String.Empty)

continue;

if (theEntry.Name!="classes.dex")continue;

MemoryStream rs = new MemoryStream();

int size = 2048;

int ll = 0;

byte[] data = new byte[2048];

while (true)

{

size = zip.Read(data, 0, data.Length);

if (size > 0)

{

ll += size;

rs.Write(data, 0, size);

}

else

{

break;

}

}

if (rs.Length < 0x20) continue;

var unp_buff = new byte[rs.Length];

rs.Position = 0;

rs.Read(unp_buff, 0, unp_buff.Length);

rs.Flush();

if (unp_buff[0] != 0x64) continue;

if (unp_buff[1] != 0x65) continue;

if (unp_buff[2] != 0x78) continue;

if (unp_buff[3] != 0x0a) continue;

return unp_buff;

}

}

return new byte[1];

}

catch (Exception e)

{

Console.WriteLine(e.ToString());

return new byte[1];

}

}

}

}

SQL Сценарий для выполнения на Microsoft SQL Server

create database Android;

use Android;

create table App_Ranking (file_md5 binary(16) PRIMARY KEY, App_Name varchar(25), metadrank int, exerank int);

create table App_Permissions (file_Md5 binary(16) FOREIGN KEY references app_ranking(File_md5), permissions varchar(10));

create table Perm_Descr (id char(2), descr text);

create table ExeMethods (file_Md5 binary(16) FOREIGN KEY references app_ranking(File_md5), method1 int, method2 int, method3 int, method4 int, method5 int);

create table Method_Descr (id int, descr text);

Размещено на Allbest.ru


Подобные документы

  • Первое устройство, работающее под управлением Android. Приложения под операционную систему Android. Формат установочных пакетов. Разработка приложений на языке Java. Шаблоны основных пакетов и компонентов Android. Сборка приложений, основанная на Gradle.

    курсовая работа [492,0 K], добавлен 08.02.2016

  • Архитектура и история создания операционной системы Android. Язык программирования Java. Выбор средства для реализации Android приложения. Программная реализация Android приложения. Проведение тестирования разработанного программного обеспечения.

    курсовая работа [167,8 K], добавлен 18.01.2017

  • Архитектура операционной системы Android. Инструменты Android-разработчика. Установка Java Development Kit, Eclipse IDE, Android SDK. Настройка Android Development Tools. Разработка программы для работы с документами и для осуществления оперативной связи.

    курсовая работа [2,0 M], добавлен 19.10.2014

  • Разработка открытой мобильной платформы Android. Первое устройство, работающее под управлением Android. Магазин приложений "Google Play". Полноценные программы навигации, редакторы офисных документов и синхронизационные утилиты. Рост вирусной активности.

    презентация [58,8 K], добавлен 29.10.2014

  • Архитектура операционной системы Android, набор библиотек для обеспечения базового функционала приложений и виртуальная машина Dalvik. Объектно-ориентированный язык программирования Java как инструмент разработки мобильных приложений для ОС Android.

    дипломная работа [1,6 M], добавлен 08.07.2015

  • Структура Android-приложений. Особенности игрового движка. Алгоритмизация и программирование. Список игровых состояний. Настройка, отладка и тестирование программы. Разработка руководства пользователя. Тестирование инсталляции и отображения элементов.

    дипломная работа [4,5 M], добавлен 19.01.2017

  • Место и роль различных изданий в современном обществе. Основные требования к подготовке электронных учебных изданий. Разработка приложений. Операционная система Android. Выбор программного обеспечения. Пакеты для обработки растровой и векторной графики.

    отчет по практике [1,6 M], добавлен 26.05.2014

  • Обзор существующих популярных программ для просмотра погоды на ОС Android. Операционные системы современных смартфонов. Ключевые особенности Android, технология Java. Разработка программной части, выбор языка, описание алгоритма, ее логической структуры.

    курсовая работа [911,5 K], добавлен 16.04.2014

  • Общие характеристики операционной системы Android. Разработка приложения на основе создания менеджера файлов. Получение с помощью приложения доступа к файлам, хранящимся в "облачном хранилище" в сети Интернет. Расчет стоимости программного обеспечения.

    дипломная работа [2,7 M], добавлен 03.04.2015

  • Общая характеристика системы Android, обзор его аналогов. Необходимые компоненты для начала работы в Android. Настройка конфигураций Ubuntu. Написание script-ов, упрощающих генерацию Linux. Отладка и тестирование программы на плате i.MX53 фирмы freescale.

    курсовая работа [1,1 M], добавлен 12.10.2012

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.