今天看到一篇帖子,是关于病毒查杀的问题,那片帖子写的很详细,将原理都讲述出来了,后来根据帖子的代码自己实例验证了一下,发现是可行的,所以,现在就记录一下学习的过程。(此文有借鉴的地方,关键是大家能学到技术)

杀毒原理:首先给大家看一副图片(借鉴):

原理简介:
 
   首先,我们需要部署大量的“蜜罐”服务器,也就是没有安装杀毒软件、防火墙等的赤裸裸的手机或服务器,让
 
病毒很轻易的入侵。然后,由病毒工程师来对它们进行分析,提取特有的特征码,加入到特征码服务器里面,以供手
 
机安全卫士调用。当有新的病毒的时候,它们会被及时的下载到手机安全卫士里面,以供比对查杀。当进行云查杀的
 
时候,手机安全卫士提取本地所有应用的特征码,发送到云服务器进行比对,然后将比对结果返回给手机安全卫士,
 
告诉手机用户查杀结果,比如:哪些软件是病毒,哪些游戏会窃取话费,哪些壁纸具有高危风险等。

特征码:

在手机系统中,每个应用都有它特有的特征信息,这些信息在每个应用中都不相同。对,这就是手机的特征码。

在Android系统中,每个软件所特有的信息都有啥呢?也许你已经想到了,对!包名,就是应用程序的包名。Android

中,同一个包名的程序,只允许安装一个。

还有什么不同呢?每个程序的签名文件都不相同。因为每个开发者的签名文件都是特有的。病毒制造者只能用它

自己的签名文件来给病毒应用签名。

    当然啦,如果结合包名和签名,杀毒会更加的准确,效果会更好!

此外,需要说明的是,基于特征码的杀毒方式,是在已知病毒特征码的情况下。如果在未知病毒特征码的情况下

进行杀毒,那就是通过监控高危的API权限的调用,进行主动防御啦!

程序举例:

    接下来,就是我们的程序了,还是那句话,程序虽然简单,举一反三是关键。
 
    <a.>当我们点击查询按钮的时候,对系统中所有的应用程序包,包括未安装的在内,进行包名的检查,并且与特
 
定的特征码进行比对,如果比对成功,则是病毒,否则,就是安全的。
 
    <b.>在代码中,我们首先创建了一个包管理器,然后通过包管理器获得所有应用程序包的所有信息;然后,通过
 
循环方法,将每个应用包的包名取出来,并且与特定的特征码进行比对,如果比对成功,则对病毒数加1。以此类
 
推,直到将所有的包的包名比对完毕;然后,发布一条信息,提示我们杀毒的结果。

<c.>当我们将信息发送出去后,就需要通过Handler对发送的信息进行分析和显示。

<以上都是整理高人奕奕微笑 的博客弄出来的,主要是理论的东西,理论咱不太好弄,只学习技术>

布局文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:text="@string/button1"
android:onClick="shadu"/>
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="180dp"
android:text="@string/button2" />
</LinearLayout>
<ScrollView
android:id="@+id/scrollView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scrollbarFadeDuration="3000"
android:background="@drawable/a" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
</LinearLayout>
</ScrollView>
<LinearLayout
android:id="@+id/myLinearlayout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>

MainActivity.java

需要说明的是,这里规定的病毒包同时也是这个程序的包名。这样先易后难,理解方便一点。

public class MainActivity extends Activity {
private String resultString;
private int total = 0;
private int STOP = 0;
private LinearLayout myLinearLayout;
private ScrollView myScrollView;
private TextView myTextView;
private Button button1,button2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myLinearLayout = (LinearLayout) this.findViewById(R.id.myLinearlayout);
myScrollView = (ScrollView) this.findViewById(R.id.scrollView1);
myTextView = (TextView) this.findViewById(R.id.text);
button1 = (Button) this.findViewById(R.id.button1);
button1.setOnClickListener(new myonclickLister());
button2 = (Button) this.findViewById(R.id.button2);
button2.setOnClickListener(new myfinshLister());
}
//button1
class myonclickLister implements OnClickListener{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
// 创建包管理器的实例对象
PackageManager myPackageManager=getPackageManager();
//获取所有应用的包的信息
List<PackageInfo> allinfos=myPackageManager.getInstalledPackages(PackageManager.GET_UNINSTALLED_PACKAGES|PackageManager.GET_SIGNATURES);
//通过循环获取包名
for(PackageInfo everyinfo : allinfos){
//  String resultString=everyinfo.packageName;
resultString=everyinfo.packageName;
//以包名为特征码进行比对
if("com.example.android_yingyong".equals(resultString)){
total=total+1;//病毒计数
}
//将查询到的包名发送出去
Message msg=new Message();
msg.obj=resultString;
myHandler.sendMessage(msg);
}
//进行病毒数的判断,以决定发送何种信息
if(total==0){
Message msg=new Message();
msg.what = STOP;
msg.obj="共发现"+total+"个病毒!非常的安全!";
myHandler.sendMessage(msg);
} else if(total>0){
Message msg=new Message();
msg.what=STOP;
msg.obj="共发现"+total+"个病毒!请注意及时查杀!\n"+resultString;
myHandler.sendMessage(msg);
}
}
}
//button2
class myfinshLister implements OnClickListener{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
finish();
}
}
private Handler myHandler=new Handler(){
public void handleMessage(Message msg){
//收到杀毒完毕时的处理
if(msg.what==STOP){
myLinearLayout.removeAllViews();
}
//获取信息,添加到TextView控件上
String resultStr=(String) msg.obj;
myTextView.setTextColor(Color.BLUE);
myTextView.setText(resultStr);
//将TextView控件显示到线性布局上
myLinearLayout.setOrientation(LinearLayout.VERTICAL);
myLinearLayout.addView(myTextView);
//滚动显示
myScrollView.scrollBy(0, 20);
}
};
}

上图,自己测试的程序。不过有一个小缺陷,就是ScrollView这个空间没有显示出动态效果,由于对ScrollView不太

熟悉,所以,大家还是自己去研究吧,去网上一搜就可以了。

Android----病毒查杀原理及应用相关推荐

  1. Android病毒查杀原理

    1.常规本地查杀 特征码: 在手机系统中,每个应用都有它特有的特征信息,他是该应用所特有的,每个应用都是不同的,这就是手机的特征码. 应用的特征码包括:包名和应用签名 Android中,同一个包名的程 ...

  2. Android病毒查杀原理,Android编程之杀毒的实现原理及具体实例

    本文实例讲述了Android杀毒的实现原理.分享给大家供大家参考,具体如下: 一个杀毒软甲最核心的部分一个是病毒库一个是杀毒引擎,病毒库从服务器中获得,杀毒引擎实际上是判断程序中的包名和签名是否匹配病 ...

  3. android病毒下载地址,LINE病毒查杀

    LINE病毒查杀是免费通话.免费传讯「LINE」的周边应用程序之一.它能保护智能手机上个人信息的安全,使其免于病毒或恶意程序的侵害.您只要执行几个简单的步骤就能确认手机状态或完成病毒扫描. LINE病 ...

  4. Android进阶之路 - 病毒查杀

    那段时间公司app陆续被应用平台下架,后面发现主要被腾讯管家报的木马病毒,针对于此病毒,官方并未进行说明,对应病毒资料也很少,所以我们需要自己逐步去排毒,解决病毒最重要的一步应该是定位病毒,然后根据病 ...

  5. android146 360 病毒查杀

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...

  6. 彻底分析ARP病毒查杀防范全攻略

                           彻底分析ARP病毒查杀防范全攻略      近期在全国范围内大规模爆发arp病毒及其各种变种.如果局域网中发现许多台电脑中毒,电脑中毒后会向同网段内所有计 ...

  7. W32.Downedup.B顽固病毒——查杀记

    W32.Downedup.B顽固病毒--查杀记:前因后果 Dec 20.2011 这几天的我,埋头忙碌于处理这么一件事--近来被一个名为W32.Downedup.B顽固病毒折腾了一段时间,弄得新上线的 ...

  8. 文件夹exe病毒查杀方法(图解)

    文件夹exe病毒查杀方法(图解) http://www.antidu.cn/html/200901/wenjianjiabingdu-exe.html ------------------------ ...

  9. U盘病毒查杀并打补丁

    一个查杀U盘病毒并给每个磁盘打补丁的批处理,打过补丁后的磁盘(包括U盘.移动硬盘)可以避免感染绝大部分U盘病毒.下面给出程序代码: @echo off cls color 0D echo. echo  ...

最新文章

  1. c#,Winform同一系统中只运行一个实例。
  2. 23种设计模式(11):责任链模式
  3. 【图文并茂】RNN、LSTM、GRU、ConvLSTM、ConvGRU、ST-LSTM的总结
  4. code3289 花匠
  5. python 数据结构与算法
  6. 持有1000枚比特币及以上的地址数量创历史新高
  7. 如何在SQL Server VARCHAR / NVARCHAR字符串中插入换行符
  8. EventBus全面讲解和案例
  9. 修改Ubuntu系统的用户名和主机名、创建和删除用户
  10. heartbeat如何监控程序_一文看懂MyCAT 命令行监控命令,监控调优必备
  11. 5. OpenCV图像分割-watershed
  12. python:生成器
  13. fluidsim元件库下载_FluidSIM5|FluidSIM(液压气动仿真软件)下载 v5.0中文免费版 附安装教程 - 121下载站...
  14. 当前版本与卡刷包android_Android p系统下载-MIUI 10 Android p线刷包卡刷包最新版 - 极光下载站...
  15. Android 百度导航SDK
  16. Qt设置鼠标光标样式
  17. 应用程序“Parallels Desktop“无法打开MAC电脑打不开
  18. 手把手教你用深度学习做物体检测(四):模型使用
  19. 中国小微企业调查数据CMES:小型微型家庭作坊式企业收支工商税收营商情况
  20. window系统下安装VS(Microsoft Visual Studio),及Visual Studio使用教程

热门文章

  1. Tyvj Q1028(调整法)
  2. Linux 系统故障排查
  3. Visio View:打开VSd时,IE弹出已停止工作。
  4. L-edit软件界面简介
  5. 2021-2022学年广州市第二中学九年级第一学期12月考英语试题
  6. [iOS]Charles工具
  7. 有哪些网络推广方式,常见的网络推广方法有几种
  8. openlayers添加删除图层
  9. 案例解析:广域网加速在校园网中的应用
  10. [原创] PS制作水笔