Android----病毒查杀原理及应用
今天看到一篇帖子,是关于病毒查杀的问题,那片帖子写的很详细,将原理都讲述出来了,后来根据帖子的代码自己实例验证了一下,发现是可行的,所以,现在就记录一下学习的过程。(此文有借鉴的地方,关键是大家能学到技术)
杀毒原理:首先给大家看一副图片(借鉴):
特征码:
在手机系统中,每个应用都有它特有的特征信息,这些信息在每个应用中都不相同。对,这就是手机的特征码。
在Android系统中,每个软件所特有的信息都有啥呢?也许你已经想到了,对!包名,就是应用程序的包名。Android
中,同一个包名的程序,只允许安装一个。
还有什么不同呢?每个程序的签名文件都不相同。因为每个开发者的签名文件都是特有的。病毒制造者只能用它
自己的签名文件来给病毒应用签名。
此外,需要说明的是,基于特征码的杀毒方式,是在已知病毒特征码的情况下。如果在未知病毒特征码的情况下
进行杀毒,那就是通过监控高危的API权限的调用,进行主动防御啦!
程序举例:
<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----病毒查杀原理及应用相关推荐
- Android病毒查杀原理
1.常规本地查杀 特征码: 在手机系统中,每个应用都有它特有的特征信息,他是该应用所特有的,每个应用都是不同的,这就是手机的特征码. 应用的特征码包括:包名和应用签名 Android中,同一个包名的程 ...
- Android病毒查杀原理,Android编程之杀毒的实现原理及具体实例
本文实例讲述了Android杀毒的实现原理.分享给大家供大家参考,具体如下: 一个杀毒软甲最核心的部分一个是病毒库一个是杀毒引擎,病毒库从服务器中获得,杀毒引擎实际上是判断程序中的包名和签名是否匹配病 ...
- android病毒下载地址,LINE病毒查杀
LINE病毒查杀是免费通话.免费传讯「LINE」的周边应用程序之一.它能保护智能手机上个人信息的安全,使其免于病毒或恶意程序的侵害.您只要执行几个简单的步骤就能确认手机状态或完成病毒扫描. LINE病 ...
- Android进阶之路 - 病毒查杀
那段时间公司app陆续被应用平台下架,后面发现主要被腾讯管家报的木马病毒,针对于此病毒,官方并未进行说明,对应病毒资料也很少,所以我们需要自己逐步去排毒,解决病毒最重要的一步应该是定位病毒,然后根据病 ...
- android146 360 病毒查杀
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...
- 彻底分析ARP病毒查杀防范全攻略
彻底分析ARP病毒查杀防范全攻略 近期在全国范围内大规模爆发arp病毒及其各种变种.如果局域网中发现许多台电脑中毒,电脑中毒后会向同网段内所有计 ...
- W32.Downedup.B顽固病毒——查杀记
W32.Downedup.B顽固病毒--查杀记:前因后果 Dec 20.2011 这几天的我,埋头忙碌于处理这么一件事--近来被一个名为W32.Downedup.B顽固病毒折腾了一段时间,弄得新上线的 ...
- 文件夹exe病毒查杀方法(图解)
文件夹exe病毒查杀方法(图解) http://www.antidu.cn/html/200901/wenjianjiabingdu-exe.html ------------------------ ...
- U盘病毒查杀并打补丁
一个查杀U盘病毒并给每个磁盘打补丁的批处理,打过补丁后的磁盘(包括U盘.移动硬盘)可以避免感染绝大部分U盘病毒.下面给出程序代码: @echo off cls color 0D echo. echo ...
最新文章
- c#,Winform同一系统中只运行一个实例。
- 23种设计模式(11):责任链模式
- 【图文并茂】RNN、LSTM、GRU、ConvLSTM、ConvGRU、ST-LSTM的总结
- code3289 花匠
- python 数据结构与算法
- 持有1000枚比特币及以上的地址数量创历史新高
- 如何在SQL Server VARCHAR / NVARCHAR字符串中插入换行符
- EventBus全面讲解和案例
- 修改Ubuntu系统的用户名和主机名、创建和删除用户
- heartbeat如何监控程序_一文看懂MyCAT 命令行监控命令,监控调优必备
- 5. OpenCV图像分割-watershed
- python:生成器
- fluidsim元件库下载_FluidSIM5|FluidSIM(液压气动仿真软件)下载 v5.0中文免费版 附安装教程 - 121下载站...
- 当前版本与卡刷包android_Android p系统下载-MIUI 10 Android p线刷包卡刷包最新版 - 极光下载站...
- Android 百度导航SDK
- Qt设置鼠标光标样式
- 应用程序“Parallels Desktop“无法打开MAC电脑打不开
- 手把手教你用深度学习做物体检测(四):模型使用
- 中国小微企业调查数据CMES:小型微型家庭作坊式企业收支工商税收营商情况
- window系统下安装VS(Microsoft Visual Studio),及Visual Studio使用教程