宏碁v5473无法连接到服务器服务器

宏基电脑 用了驱动精灵后 怎么无法连接到NVIDIA CPU 求知道的 回答下 急求 真的很急。。。&br/&谢谢了
宏基电脑 用了驱动精灵后 怎么无法连接到NVIDIA CPU 求知道的 回答下 急求 真的很急。。。谢谢了 40
你好!你描述的较乱,NVIDIA是造显卡芯片的,不生产CPU,应该是GPU吧?一些品牌电脑的硬件是在公版的基础上做过修改的,因此驱动也具有特殊性,不能使用驱动精灵或者驱动人生等软件来查找或者升级,建议你根据你电脑型号和系统类型去宏碁官网下载驱动,先装主板芯片组驱动,然后再装显卡驱动~
的感言:当代劳模!所有人都应该向你学习!
其他回答 (2)
你好,你可以到宏基官方找一下驱动的,驱动精灵一般都是万能的驱动,而且你这个驱动或者就根本没有哦~~~
是驱动问题,你更新了公版的驱动,你可以还原一下。或者去官方找驱动重装一下、希望能帮到您
等待您来回答
笔记本电脑领域专家&&急急急!!!!宏基笔记本 aspire4736z 无法连接投影
急急急!!!!宏基笔记本 aspire4736z 无法连接投影
新购宏基笔记本 aspire4736z
昨天第一次连接明基MP511+投影
按Fn加F5组合键图像切换正常,今天连接 按Fn加F5组合键 投影上出现画面 继续按组合键切换 无法使电脑和投影同步
而且数秒钟以后 发生报警蜂鸣声 为什么?? 请高人指点!!!!!!!
网友回答0条
问答为您推荐
市场价:暂无
网友正在问
||||||||||
Copyright (C) 1999-, All Rights Reserved 版权所有 天极网络宏基笔记本无法连接到internet怎么办_电脑_百度经验
页面数据加载中...
爱游戏、爱运动,希望大家多多支持我写的经验!不足之处请多指教。
internet终端服务器的问题。如果internet终端服务器停止响应,你是怎样也连接不到internet了,如果调制解调器闪灯正常,其它正常使用没有什么问题,就要联系客服检修internet终端服务器了,看看是否是接线头松动,或者终端服务器有故障等。
调制解调器的问题。如果调制解调器灯光闪烁异常,也会无法连接internet,这时可以试着重启调制解调器,检查Link灯是否长亮,Data灯是否闪烁,如果是说明正常了。如果灯光异常要检查调制解调器是否有故障。
网线水晶头的问题。如果水晶头老化,会导致接触不良,就会上不去网。仔细检查检查水晶头,如果过于松动就要及时更换一个。
网络连接配置问题。在网络连接方面,是否没有正确的输入用户名和密码连接网络。应该再重新试着进行宽带连接,确保用户名和密码正确。
网费是否欠缴。如果欠缴了网费,会导致无法连接internet,可以先打电话咨询宽带所属的通讯公司,看看网费是否欠缴,如果欠缴及时补上,然后重新连接internet试试。
网费是否欠缴。如果欠缴了网费,会导致无法连接internet,可以先打电话咨询宽带所属的通讯公司,看看网费是否欠缴,如果欠缴及时补上,然后重新连接internet试试。
宏基笔记本无法连接到internet怎么办acer 4560G在Ubuntu10.04系统下的有线网络无法连接的有关问题_android中application共享数据以及内存泄露有关问题_SmartDroid论文阅览__脚本百事通
稍等,加载中……
^_^请注意,有可能下面的2篇文章才是您想要的内容:
acer 4560G在Ubuntu10.04系统下的有线网络无法连接的有关问题
android中application共享数据以及内存泄露有关问题
SmartDroid论文阅览
acer 4560G在Ubuntu10.04系统下的有线网络无法连接的有关问题
acer 4560G在Ubuntu10.04系统下的有线网络无法连接的问题
ubuntu10.04 用了很久了,一直有一个问题困扰着我,就是有线网络连不上的问题,既然有线网络连不上那就不用有线了,但是,没有有线上网的电脑总是感觉电脑少了只胳膊似的,一直以来在找寻一个方法可以让我的电脑连上有线网络。
在网上找了很多方法,但是我的电脑的情况很少,执行ifconfig命令只有lo和wlan,没有eth0,说明电脑有线网卡根本就没有启动,也就是有线网卡的驱动没有安转,下面详细讲讲我的解决方法,
(1)、确认网卡驱动是否安装
终端下输入:
若 回环节口(lo),以太网卡(eth0),无线网卡(wlan0)的信息都有显示,说明不是驱动的问题,您可以不要继续看下去了。我的电脑就是没有中点eth0的信息,说明我的有线网卡没有驱动,接下来看第二步.
(2)、确认网卡型号
终端输入:
输出信息如下:
00:00.0 Host bridge: Advanced Micro Devices [AMD] Device 1705
00:01.0 VGA compatible controller: ATI Technologies Inc Device 9647
00:01.1 Audio device: ATI Technologies Inc Device 1714
00:03.0 PCI bridge: Advanced Micro Devices [AMD] Device 1708
00:04.0 PCI bridge: Advanced Micro Devices [AMD] Device 1709
00:06.0 PCI bridge: Advanced Micro Devices [AMD] Device 170b
00:11.0 SATA controller: Advanced Micro Devices [AMD] Device 7800 (rev 40)
00:12.0 USB Controller: Advanced Micro Devices [AMD] Device 7807 (rev 11)
00:12.2 USB Controller: Advanced Micro Devices [AMD] Device 7808 (rev 11)
00:13.0 USB Controller: Advanced Micro Devices [AMD] Device 7807 (rev 11)
00:13.2 USB Controller: Advanced Micro Devices [AMD] Device 7808 (rev 11)
00:14.0 SMBus: Advanced Micro Devices [AMD] Device 780b (rev 13)
00:14.2 Audio device: Advanced Micro Devices [AMD] Device 780d (rev 01)
00:14.3 ISA bridge: Advanced Micro Devices [AMD] Device 780e (rev 11)
00:14.4 PCI bridge: Advanced Micro Devices [AMD] Device 780f (rev 40)
00:16.0 USB Controller: Advanced Micro Devices [AMD] Device 7807 (rev 11)
00:16.2 USB Controller: Advanced Micro Devices [AMD] Device 7808 (rev 11)
00:18.0 Host bridge: Advanced Micro Devices [AMD] Device 1700 (rev 43)
00:18.1 Host bridge: Advanced Micro Devices [AMD] Device 1701
00:18.2 Host bridge: Advanced Micro Devices [AMD] Device 1702
00:18.3 Host bridge: Advanced Micro Devices [AMD] Device 1703
00:18.4 Host bridge: Advanced Micro Devices [AMD] Device 1704
00:18.5 Host bridge: Advanced Micro Devices [AMD] Device 1718
00:18.6 Host bridge: Advanced Micro Devices [AMD] Device 1716
00:18.7 Host bridge: Advanced Micro Devices [AMD] Device 1719
01:00.0 VGA compatible controller: ATI Technologies Inc Device 6760<span style="color:#cc.0 Ethernet controller: Broadcom Corporation NetLink BCM57785 Gigabit Ethernet PCIe (rev 10)02:00.1 SD Host controller: Broadcom Corporation Device 16bc (rev 10)
02:00.2 System peripheral: Broadcom Corporation Device 16be (rev 10)
02:00.3 System peripheral: Broadcom Corporation Device 16bf (rev 10)
03:00.0 Network controller: Atheros Communications Inc. AR9287 Wireless Network Adapter (rev 01)
电脑硬件的不同,以上输出有一定的出入,但是大体上是一样的,
我们可以看到如下一行:
02:00.0 Ethernet controller: Broadcom Corporation NetLink BCM57785 Gigabit Ethernet PCIe (rev 10)
这一行就是有线网卡的信息:我的网卡型号是Broadcom公司的BCM57785,
(3)下载相应的网卡驱动
从broadcom官网下载对应型号的网卡驱动:
http://zh-/support/ethernet_nic/downloaddrivers.php
我下的安装包为:linux-3.129d.zip
(4)安装驱动
解压安装包,在Server/Linux/Driver目录下有*.tar.gz格式和*.src.rpm格式的文件,README.TXT中有安装过程,我选择的是*.tar.gz格式的安装包。
(1)解压tar格式的安装包
tar xvzf tg3-&version&.tar.gz
(2)编译生成.o或.ko文件
cd tg3-&version&
生成的.o或.ko文件是与正在运行的内核想匹配的。
(3)测试并安装驱动模块
sudo insmod tg3.o
若在2.6.X内核下,则
sudo insmod tg3.ko (on 2.6.x kernels)
终端输入:ifconfig
eth0的信息出来了。
接下来就是配置网络,配置网络有两种方法:
(1)直接在图形界面中配置
/etc/network/interfaces和/etc/resolv.conf,这个网上资料很多,在此转载一具体方法如下:
a. 配置静态ip地址
$sudo vim /etc/network/interfaces
原有内容只有如下两行:
iface lo inet loopback
向末尾追加以下内容:
iface eth0 inet static
address 192.168.0.33
gateway 192.168.0.1
netmask 255.255.255.0
然后保存退出;
b. 手动配置 dns
$sudo vi /etc/resolv.conf
想末尾追加如下内容:
nameserver 192.168.0.10
然后保存退出。
c. 重启 network 使修改生效
$sudo /etc/init.d/networking restart
这里有点有问题,就是重启ubuntu后,发现又不能上网了,问题出在 /etc/resolv.conf,重启后,此文件配置的dns又被自动修改为默认值。所以需要永久性修改DNS。方法如下:
cd /etc/resolvconf/resolv.conf.d/
# cat base
nameserver 8.8.8.8
android中application共享数据以及内存泄露有关问题
android中application共享数据以及内存泄露问题
Application的使用What is ApplicationApplication和Actovotu,Service一样是android框架的一个系统组件,当android程序启动时系统会创建一个 application对象,用来存储系统的一些信息。通常我们是不需要指定一个Application的,这时系统会自动帮我们创建,如果需要创建自己 的Application,也很简单创建一个类继承 Application并在manifest的application标签中进行注册(只需要给Application标签增加个name属性把自己的 Application的名字定入即可)。android系统会为每个程序运行时创建一个Application类的对象且仅创建一个,所以Application可以说是单例 (singleton)模式的一个类.且application对象的生命周期是整个程序中最长的,它的生命周期就等于这个程序的生命周期。因为它是全局 的单例的,所以在不同的Activity,Service中获得的对象都是同一个对象。所以通过Application来进行一些,数据传递,数据共享 等,数据缓存等操作。Data passing between components using Application假如有一个Activity A, 跳转到 Activity B ,并需要推荐一些数据,通常的作法是Intent.putExtra() 让Intent携带,或者有一个Bundle把信息加入Bundle让Intent推荐Bundle对象,实现传递。但这样作有一个问题在 于,Intent和Bundle所能携带的数据类型都是一些基本的数据类型,如果想实现复杂的数据传递就比较麻烦了,通常需要实现 Serializable或者Parcellable接口。这其实是Android的一种IPC数据传递的方法。如果我们的两个Activity在同一个 进程当中为什么还要这么麻烦呢,只要把需要传递的对象的引用传递过去就可以了。基本思路是这样的。在Application中创建一个HashMap&String,Object& ,以字符串为索引,Object为value这样我们的HashMap就可以存储任何类型的对象了。在Activity A中把需要传递的对象放入这个HashMap,然后通过Intent或者其它途经再把这人索引的字符串传递给Activity B ,Activity B 就可以根据这个字符串在HashMap中取出这个对象了。只要再向下转个型 ,就实现了对象的传递。Data caching in Application我一般会习惯在application中建立两个HashMap&String,Object&一个用于数据的传递,一个用于缓 存一些数据。比如有一个Activity需要从网站获取一些数据,获取完之后我们就可以把这个数据cache到Application 当中,当页面设置到其它Activity再回来的时候,就可以直接使用缓存好的数据了。但如果需要cache一些大量的数据,最好是cache一些 (软引用)SoftReference ,并把这些数据cache到本地rom上或者sd卡上。如果在application中的缓存不存在,从本地缓存查找,如果本地缓存的数据也不存在再从网 络上获取。PitFalls使用Application如果保存了一些不该保存的对象很容易导致内存泄漏。如果在Application的oncreate中执行比较 耗时的操作,将直接影响的程序的启动时间。不些清理工作不能依靠onTerminate完成,因为android会尽量让你的程序一直运行,所以很有可能 onTerminate不会被调用。MemoryLeak在Java中内存泄漏是只,某个(某些)对象已经不在被使用应该被gc所回收,但有一个对象持有这个对象的引用而阻止这个对象被回收。比如我 们通常会这样创建一个View TextView tv = new TextView(this);这里的this通常都是Activity。所以这个TextView就持有着这个Activity的引用。下面看张图 (Google IO 2011 ppt中抄得)通常情况下,当用户转动手机的时候,android会重新调用OnCreate()方法生成一个新的Activity,原来的 Activity应该被GC所回收。但如果有个对象比如一个View的作用域超过了这个Activity(比如有一个static对象或者我们把这个 View的引用放到了Application当中),这时候原来的Activity将不能被GC所回收,Activity本身又持有很多对象的引用,所以 整个Activity的内存被泄漏了。通常情况下,当用户转动手机的时候,android会重新调用OnCreate()方法生成一个新的Activity,原来的 Activity应该被GC所回收。但如果有个对象比如一个View的作用域超过了这个Activity(比如有一个static对象或者我们把这个 View的引用放到了Application当中),这时候原来的Activity将不能被GC所回收,Activity本身又持有很多对象的引用,所以 整个Activity的内存被泄漏了。经常导致内存泄漏的一些原因:keeping a long-lived reference to a Context.持有一个context的对象,从而gc不能回收。1,一个View,的作用域超出了所在的Activity的作用域,比如一个static的View或者 把一个View cache到了application当中 etc2,某些与View关联的Drawable的作用域超出了Activity的作用域。3,Runnable对象:比如在一个Activity中启用了一个新线程去执行一个任务,在这期间这个Activity被系统回收了, 但Runnalbe的任务还没有执行完毕并持有Activity的引用而泄漏,但这种泄漏一般来泄漏一段时间,只有Runnalbe的线程执行完闭,这个 Activity又可以被正常回收了。4,内存类的对象作用域超出Activity的范围:比如定义了一个内存类来存储数据,又把这个内存类的对象传给了其它Activity 或者Service等。因为内部类的对象会持有当前类的引用,所以也就持有了Context的引用。解决方法是如果不需要当前的引用把内部类写成 static或者,把内部类抽取出来变成一个单独的类,或者把避免内部对象作用域超出Activity的作用域。out Of Memery Error 在android中每一个程序所分到的内存大小是有限的,如果超过了这个数就会报Out Of Memory Error。android给程序分配的内存大小与手机硬件有关,以下是一些手机的数据:G1:16M Droid:24 Nexus One:32M Xoom:48Ms所以尽量把程序中的一些大的数据cache到本地文件。以免内存使用量超标。1,通过Application在两个Activity间传递数据记得数据传递完成之后,把存放在application的HashMap中的数据remove掉,以免发生内存的泄漏。
不要对一个Activity Context保持长生命周期的引用(一个对Activity的引用应该与Activity自身的生命周期相同)
尝试使用应用上下文(context-application)代替活动上下文(context-activity)
如果你不能控制它们的生命周期,在活动(Activity)中避免使用不是静态的内部类,使用静态类并且使用弱引用到活动(Activity)的内部。对于这个问题的解决方法是使用静态的内部类与一个弱引用(WeakReference)的外部类。就像ViewRoot和它的W内部类那么实现的。
垃圾回收器对于内存泄露来说并不是百分百保险的。
SmartDroid论文阅览
SmartDroid论文阅读SmartDroid: an Automatic System for RevealingUI-based Trigger Conditions in Android Applications
文章语言:英文
文章来源:2nd Annual ACM CCS Workshop on Security and Privacy inSmartphones and Mobile Devices (SPSM)-2012(CCS
workshop汇集)
作者信息:
1. Cong Zheng
2. Shixiong Zhu
3. Shuaifu Dai
4. Guofei Gu (简介,发表文章汇集)
5. Xiaorui Gong
6. Xinhui Han(简介)
7. Wei Zou(简介,发表文章汇集)
发表单位:
Beijing Key Laboratory of Internet Security Technology, Peking University
Institute of Computer Science and Technology, Peking University
最近几年静态分析和动态分析的演化趋势:
UI交互在Android的应用程序中是一种基本的功能,像许多的Activities都需要UI交互来触发。这种类型的UI交互能够帮助恶意软件的apps来隐藏他们的敏感行为(例如:发送短信和获取手机设备的ID号码)通过动态分析工具的检测例如TaintDroid,因为简单的运行app,但是没有正确的UI交互将不会导致敏感行为的暴露。这篇文章关注的就是通过自动的UI交互来触发特定的行为。特别的,通过混合静态分析和动态分析来揭示Android应用程序的基于UI触发的条件。首先使用静态分析来提炼出期望的Activity转换路径通过分析Activity和Function调用图,并且使用动态分析来遍历每一个UI控件并且搜索出UI交互一直到敏感API的路径。作者实现了原型系统SmartDroid并且展示出他能够自动的并且高效的检测出基于UI的触发条件暴露出的敏感行为,使用TaintDroid不能够检测出来的敏感行为。
【设计思路】
Android的Activity是一个屏幕包括了按钮,文本框还有其他的UI元素用来做用户交互。因此,主要的思想就是使用静态分析找出期望的Activity转换路径能够涉及到敏感行为的传播;之后对于每一条路径,我们使用动态分析强迫这个应用程序按照指定的路线运行,直到敏感行为被触发。在动态分析中,SmartDroid将会尝试着和每一个UI元素进行自动的交互通过遍历当前的Activity中的view tree,将APK运行在在修改后的Android系统中。
如果目前的Activity能够跳转到下一个Activity的转换路径,则目前的UI元素就是我们期待的元素将会被保存下来。当遍历到最后一个Activity的时候敏感行为将会被触发。最后,这一系列的UI元素将会被作为触发条件,包括他的坐标以及UI的事件类型。
简要归纳为一下几点:
1.静态分析,找出每个activity之间的调用关系
2.HOOK了framework中的敏感APIs
3.Activity的代码,修改了了startActivity
以及startActivityForResult保证了Activity的跳转是按照想要的路径来转化的。
4.修改了View
之类的含有UI事件的源代码
文章使用了Horoscope这个例子来做讲解。下载地址/store/apps/details?id=fr.telemaque.horoscope
这款软件可以显示每天的和每月的运势。它可以连接Internet以及发送IMEI号通过特地的号码通过点击特定的按钮。点击每天运势和每月运势的时候,会在后台有一些行为。一个是发短信,一个是读取IMEI
在这里我们认为读取IMEI号码以及接入网络都是属于敏感行为并且接入网络能够导致隐私泄露。
使用Apktool反编译了这款软件:APKtool的使用方法可以参考:Ubuntu上安装apktool
基本命令是: apktool
d yourapk.apk
这个软件的权限由下列出:
&uses-permission android:name="android.permission.INTERNET" /&
&uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /&
&uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /&
&uses-feature android:name="android.hardware.wifi" android:required="false" /&
&uses-permission android:name="android.permission.READ_PHONE_DATA" /&
&uses-permission android:name="android.permission.READ_PHONE_STATE" /&
&uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /&
&uses-permission android:name="android.permission.RESTART_PACKAGES" /&
&uses-permission android:name="android.permission.GET_ACCOUNTS" /&
&uses-permission android:name="android.permission.WAKE_LOCK" /&
&uses-permission android:name="com.android.vending.BILLING" /&
&uses-permission android:name="com.google.android.googleapps.permission.GOOGLE_AUTH" /&
&uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /&
&uses-feature android:name="android.hardware.location" android:required="false" /&
&uses-feature android:name="android.hardware.location.network" android:required="false" /&
&permission android:name="fr.telemaque.horoscope.permission.C2D_MESSAGE" android:protectionLevel="signature" /&
&uses-permission android:name="fr.telemaque.horoscope.permission.C2D_MESSAGE" /&
&uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /&
提取出这个软件的所有权限的方法如下,当然和这篇论文是没有关系的,只是想写代码而已~#!/usr/bin/env python
# coding=utf-8
@ FUNCTION : Get the permission in AndroidManifest.xml
@ FILENAME : getpermission.py
: python getpermission.py -d your_directory_store_APKfile
import sys, getopt
from xml.dom import minidom
if __name__ == '__main__':
_directory = ""
# define a directory to store you target file
# opts store the relevant parameters , args stores some char except parameters
opts,args = getopt.getopt(sys.argv[1:], "d:h", "directory=help")
# get the directory
for op,value in opts:
if op in ("-d", "--directory"):
_directory = value
xmldoc = minidom.parse(_directory + '/AndroidManifest.xml')
# get all the elements in the manifest
manifest = xmldoc.getElementsByTagName('manifest')[0]
permission_list = manifest.getElementsByTagName('uses-permission')
#print permission_list
#the total number of all the permissions
lens = len(permission_list)
for i in range(0, lens):
permission = manifest.getElementsByTagName('uses-permission')[i]
permission_name = permission.getAttribute('android:name')
print permission_name
说明:这个软件目前不支持在中国下载,所以下载的和文章的有点不一样,使用的是360手机助手里下载的,还有一个问题,这个软件可以在手机中正常运行,但是在模拟器上跑不起来。
目前还没有分析这个原因,之后会在研究。如果您已经知道了原因可以告诉我,十分感谢。
当这个Horoscope启动的时候Android系统将会创建一个app 的main Activity实例如图1所示。暂停三秒钟之后启动第二个Activity如图1(b)使用了Intent来启动。在这里有两个按钮,是用来登陆FaceBook和Twitter还有其他的按钮是用来设置你自己的生日的。有12个按钮呈现出了不同的星座。当你点击12个图标中的一个图标的时候将会得到一个如图(C)所示的Activity。有两个按钮分别得到每天的还有没月的运程。当你点击两者中的任何一个的时候,它将会跳转到图1中的(d)在最后一个Activity中它可以跳转到如图1(d)中所示的Activity。在最后一个Activity中,它会读取并且发送设备的敏感APIs到远程服务器通过敏感APIs“android.telephony.TelephonyManager.getDeviceId()”以及“org.apache.http.client.HttpClient.execute()”
图2展示出了该架构的原理图,它由FCG(Function Call Graph)函数调用图和ACG(Activity Call Graph)调用图组成。在FCG中,我们可以决定所有的函数调用敏感APIs的路径。开始的路径被定义为敏感源函数。在ACG中,我们定义和敏感函数相关联的Activity叫做敏感池Activity(sensitive sink Activity).例如在图2中,Activity F它联系了两种作为敏感源函数,当目前的Activity跳转到我的ActivityF的时候它将会调用“onCreate()”函数来启动我的ActivityF。之后的控制流程序将会沿着函数调用图到达我的“getDeviceId()”
API。于此同时,在Activity F中的按钮点击之后将会调用相应的onClick()函数。这个控制流就会执行“sendTextMessage()” API来发送一条SMS 短信。
我们的方法包括两部,金泰分析阶段以及动态分析阶段。在静态分析阶段能够产生我们期待的Activity路径转换并且用来指导动态分析觉得和哪一个Activity做交互。在动态分析阶段我们可以发现一系列的UI elements能够导致敏感APIs执行。这个UI元素相应的坐标以及事件类型是我们是触发条件。
在静态分析中我们首先使用FCG和ACG,我们必须要分析所有的Intents在调用“startActivity”以及“startActivityForResult”功能来获得源Activity和目标Activity它们之间通过Intent相连接。最终,我们提取出期待的Activity转换路径即从源Activity到每一个敏感池Activity。这个过程包括
获取所有的敏感函数。我们在FCG当中提取出每一个函数调用敏感API,在每一条路径的第一个first function是源function。
获取每一个敏感池Activity我们分析这些敏感源Activity是属于哪一个Activity的.
得到期望的Activity转换路径。我们在ACG当中使用深度优先遍历算法得到路径。
在动态分析阶段我们的目标是判定哪一个UI元素能够触发敏感行为。在知道了期望的Activity路径之后,目标转移的Activity知道哪一个UI可以让应用程序按照期待的Activity路径转换。我们修改了Android系统以至于我们能够遍历并且和UI进行自动的交互从一个Activity到另一个Activity。除此之外我们强迫这个运用程序能够按照期待的Activity转换路径进行,我们限制了Activity的产生通过修改Android系统。如果我们的系统和错的UI元素交互让这个运用程序转换到错误的Activity,我们将会禁止这个错误的Activity产生。最终,当这个敏感行为被触发,我们获得了一系列的UI元素。在和UI交互的时候,我们记录下来他们相应的UI坐标和UI事件类型作为UI触发的基本条件。
【系统设计】
在图3中揭示了SmartDroid系统的概况。他有两个关键部分组成:静态分析路径提取 以及动态UI触发。静态分析选择器用来选择被期待的转换路径能够导致敏感行为的触发。动态UI触发能够根据揭示触发条件和相应的UI元素进行交互得到期待的转换路径。
【静态分析选择器】
静态路径选择器被用来找到正确的Activity转换路径。如果一个应用程序能够按照期待的Activity调用路径运行,他有可能触发敏感行为,否则他是不可能触发敏感行为的。例如,在图2中,我们点击了按钮A这个时候Main Activity将会跳转到Activity A。第一步在这个案例中是错误的,所以不可能触发发送短信这个敏感行为。因此在静态分析中有三部:
反编译,构建FCG和ACG。
下面是由python编写的获取这个软件的包名,以及所有的Activity的方式
当然这篇论文的技术远不止这些,你必须要构建的是他们之间的调用关系,然后构建出他们之间的ACG,这个之间的连接就是我们的Intent
#!/usr/bin/env python
# coding=utf-8
#filename : parseManifest.py
#author : Chicho
@FUNCTION: 1. Get the package name of you APK
2. Get all the activities in you application
@VERSION: 1.0
import sys, getopt
from xml.dom import minidom
if __name__ == '__main__':
_directory = ""
opts, args = getopt.getopt(sys.argv[1:],"d:h","directory=help")
for op, value in opts:
if op in ("-d", "--directory"):
_directory = value
xmldoc = minidom.parse(_directory + '/AndroidManifest.xml')
manifest = xmldoc.getElementsByTagName('manifest')[0]
package = manifest.getAttribute('package')
output = open(_directory + '/package.txt', 'w')
output.write(package)
output.close()
activity_list = manifest.getElementsByTagName('activity')
total = len(activity_list)
activity_name = ""
output = open(_directory + '/activity.txt', 'w')
for i in range(0, 38):
activity = manifest.getElementsByTagName('activity')[i]
activity_name = activity.getAttribute('android:name')
print activity_name
output.write(activity_name)
output.write('\n')
output.close()
【反汇编】
对于一个APP,我们想知道哪一个可能的敏感行为,所以我们必须检测这个应用程序中使用的APP。为了实现这个,我们必须要反汇编这个应用程序。考虑到Dalvik bytecode-to-Java bytecode 翻译的准确性。我们更喜欢操作并且分析Dalvik字节码。这个smali code作为Dalvik字节码的中间表现。Smali code 是十分方便的相对分析 Dalvik 字节码。
【构建FCG】
在这一步当中,我们想要发现FCG,在这里,所有的孩子节点都是敏感的API。所以我们第一步是发现所有的敏感APIs的smali代码。在smali代码中我们很容易的知道函数之间的调用关系。我们之后使用交互算法来找到所有的敏感的APIs的调用路径。 但是有很多间接的调用指令以及事件驱动调用也是不能忽视的。实际上一些间接的调用指令来自于Java的多态。我们使用的方法是用Woodpecker的解决方案来解决的。他增加语义事件驱动最终获得了全部的FCG。
【构造ACG】
基于文章介绍的方法是应该完全知道全部的ACG。在Android系统中,Activity是通过Intent的,它是一个消息指明了收件人和可选的数据,并且用它来开启一个新的组件。通常一个Activity开启一个新的Activity它将会创建一个Intent并且调用“startActivity”或者是“startActivityForResult”函数。一般情况下,开发者创建一个“startActivity”或者是“startActivityForResult”调用指令。App将会使用Intents和一个或者其他的应用程序进行交互。除此之外,系统使用Intents作为一个应用程序的通知。我们的目标就是发现所有的Intents并且分析他们的源Activity以及目标Activity通过这些Intents.我们首先介绍Android的Intent之后我们介绍使用这个Intent来做分析的方法。
在Android中有两种类型的Intents:显示的Intent和隐式的Intent。一个显示的Intent能够明确的指出他的接受组件的名字,但是隐式的Activity就只申明了Action。实际上接受者是根据声明在AndroidManifest.xml内容决定的。在AndroidManifest.xml中,所有的组件(包括i.e.Activity,Receiver)在应用程序中定义的他们都能收到特定的actions.
对于一个显示声明的Intent,是十分容易的知道他的目标Activity根据他的定义。但是对于一个隐式的Activity,我们就需要匹配在AndroidManifest.xml中的actions。如果没有匹配的Intent,我们就认为Intent仅仅只能接收系统的组件(i.e.,sms box, email)或者是其他的应用程序。以下列出了6种类型的结构体来构造Intent的对象。
a) Intent()
b) Intent(Intent o)
c) Intent(String action)
d) Intent(String action, Uri uri)
e) Intent(Context packageContext,Class&?&cls)
f) Intent(String action, Uri uri, ContextpackageContext,Class&?&cls)
在构造器a)中,他初始化的是一个null的Intent。之后,可以使用setClass(),setComponent(),setAction()方法来定义目标Activity或者绑定一个目标Activity。c),d),e),f)是等效的。在构造体当中Intent是由其他的Intent产生的,这个时候我们就需要分析更多的参数。构造器c),d)他们是隐式的Intent。可以分析AndroidManifest.xml我们可以决定会启动的Activity根据actions。在e)和f)当中我们显示的声明了Intent所以可以很清楚的知道他的目标Activity是谁。有时在e)中参数“packageContext”就是目前的Activity的名字,所以我们可以很好的获得要启动的Activity,也就是Activity。
在这里举一个例子说明Activity之间的跳转关系,现在有一个比较简单的APK ,主Activity启动secondActivity,在这里使用的是隐式申明:
MainActivity的代码
package com.example.
import android.app.A
import android.content.I
import android.os.B
import android.view.M
import android.view.V
import android.view.View.OnClickL
import android.widget.B
public class MainActivity extends Activity {
public final static String INTENT_ACTION
= "net.chicho.intent.action.INTENT_ACTION";
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button bn = (Button)findViewById(R.id.bn);
bn.setOnClickListener(new OnClickListener()
public void onClick(View arg0) {
// TODO Auto-generated method stub
Intent intent = new Intent();
intent.setAction(MainActivity.INTENT_ACTION);
startActivity(intent);
public boolean onCreateOptionsMenu(Menu menu) {
// I this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
second中的代码:
package com.example.
import android.app.A
import android.content.I
import android.os.B
import android.view.V
import android.view.View.OnClickL
import android.widget.B
import android.widget.EditT
public class SecondActivity extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second);
EditText show = (EditText)findViewById(R.id.ed);
String action = getIntent().getAction();
show.setText("Action为:" + action);
AndroidManifest.xml中的代码
&?xml version="1.0" encoding="utf-8"?&
&manifest xmlns:android="/apk/res/android"
package="com.example.actionattr"
android:versionCode="1"
android:versionName="1.0" &
android:minSdkVersion="8"
android:targetSdkVersion="17" /&
&application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" &
android:name="com.example.actionattr.MainActivity"
android:label="@string/app_name" &
&intent-filter&
&action android:name="android.intent.action.MAIN" /&
&category android:name="android.intent.category.LAUNCHER" /&
&/intent-filter&
&/activity&
android:name="com.example.actionattr.SecondActivity"
android:label="@string/app_name" &
&intent-filter&
&action android:name="net.chicho.intent.action.INTENT_ACTION" /&
&category android:name="android.intent.category.DEFAULT" /&
&/intent-filter&
&/activity&
&/application&
&/manifest&
在这里我们主要的关注是secondActivity中的Action属性。在这里就可以很明确的确定他们之间的调用关系:
&intent-filter&
&action android:name="net.chicho.intent.action.INTENT_ACTION" /&
&category android:name="android.intent.category.DEFAULT" /&
&/intent-filter&
看马上MainActivity中声明的action
final static String INTENT_ACTION= "net.chicho.intent.action.INTENT_ACTION";
Intent就好比之间的暗号一样的
Intent intent = new Intent();
intent.setAction(MainActivity.INTENT_ACTION);
startActivity(intent);在来看一下smali代码是什么情况,大同小异:
由于在ManiActivity中实现了匿名内部类,所以出现了上面这个图片的情况。但是在smali代码中仍然是很好找出其中的对应关系
# static fields
.field public static final INTENT_ACTION:Ljava/lang/S = "net.chicho.intent.action.INTENT_ACTION"
invoke-direct {v1, p0}, Lcom/example/actionattr/MainActivity$1;-&&init&(Lcom/example/actionattr/MainA)V
invoke-virtual {v0, v1}, Landroid/widget/B-&setOnClickListener(Landroid/view/View$OnClickL)V
.local v0, intent:Landroid/content/I
const-string v1, "net.chicho.intent.action.INTENT_ACTION"
invoke-virtual {v0, v1}, Landroid/content/I-&setAction(Ljava/lang/S)Landroid/content/I
.local v1, show:Landroid/widget/EditT
invoke-virtual {p0}, Lcom/example/actionattr/SecondA-&getIntent()Landroid/content/I
这样代码实现的思路应该是很清晰了吧~
【动态UI触发】
动态分析有三个组件:UI交互模拟,Activity限制以及运行时环境。
【运行时环境】
修改了源码的framework层之后在敏感APIs中插入输出日志,便于监控敏感API是否被调用。
【UI交互模拟】
为了让我们的动态分析自动化,我们第一部就是应该开发UI交互模拟器来和UI元素自动的交互。执行UI交互的思想就是:修改Android的framework层的Activity代码,是的可能被遍历的UI元素都被HOOKActivity被组织成一个hierarchy树。View对象是Activity的根节点。我们使用深度优先遍历算法得到每一个UI元素的信息。当遍历到UI元素的时候我们可以触发一些事件监听器。这些事件监听器都涉及到可能的传播路径。在期间我们记录下这个控件的尺寸和坐标。
【Activity限制器】
目前的关键问题就是知道哪一个UI控件的交互会条跳转到正确的Activity
转载注明出处:http://blog.csdn.net/chichoxian/article/details/谢谢合作~
如果您想提高自己的技术水平,欢迎加入本站官方1号QQ群:&&,&&2号QQ群:,在群里结识技术精英和交流技术^_^
本站联系邮箱:

我要回帖

更多关于 line无法连接服务器 的文章

 

随机推荐