Операционная система 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