學(xué)習(xí)啦 > 學(xué)習(xí)電腦 > 電腦安全 > 病毒知識(shí) >

Android編程之殺毒的實(shí)現(xiàn)原理及具體實(shí)例

時(shí)間: 加城1195 分享

  電腦病毒看不見(jiàn),卻無(wú)處不在,有時(shí)防護(hù)措施不夠或者不當(dāng)操作都會(huì)導(dǎo)致病毒入侵。這篇文章主要介紹了Android編程之殺毒的實(shí)現(xiàn)原理及具體實(shí)例,結(jié)合實(shí)例形式分析了Android殺毒功能的原理與簡(jiǎn)單實(shí)現(xiàn)技巧,需要的朋友可以參考下

  具體如下:

  一個(gè)殺毒軟甲最核心的部分一個(gè)是病毒庫(kù)一個(gè)是殺毒引擎,病毒庫(kù)從服務(wù)器中獲得,殺毒引擎實(shí)際上是判斷程序中的包名和簽名是否匹配病毒庫(kù)中的包名和簽名,如果匹配則為病毒,界面使用幀動(dòng)畫(huà)來(lái)顯示。

  思路:

  1.從服務(wù)器端把病毒的版本庫(kù)信息下載下來(lái)將解析的數(shù)據(jù)存放到List集合中

  2.獲取到手機(jī)中所有應(yīng)用程序的包名以及程序的簽名

  3.將病毒庫(kù)匹配手機(jī)應(yīng)用程序包名及簽名

  4.用ScrollView標(biāo)簽進(jìn)行自動(dòng)滾動(dòng)顯示

  關(guān)鍵代碼如下:

  特洛伊木馬病毒庫(kù)的信息:

  tory.virus

  cn.itcast.virus

  惡意軟件,讀取用戶(hù)日志

  3082020730820170a00302010202044ea7598f300d06092a864886f70d010105050030483

  10a30080603550406130131310a30080603550408130131310a3008060355040713013131

  0a3008060355040a130131310a3008060355040b130131310a30080603550403130131301

  e170d3131313032363030353132375a170d3231313032333030353132375a3048310a3008

  0603550406130131310a30080603550408130131310a30080603550407130131310a30080

  60355040a130131310a3008060355040b130131310a3008060355040313013130819f300d

  06092a864886f70d010101050003818d0030818902818100d915d7a98cde8bcd69b87ec52

  11012ace847de42129a71bf679a059c2c55e893bc0ea886874432ab8b9097724211df6769

  eacd3381ccac779ab7422d8101320b1e0b14e06ac8ee095b20e52cbe6163e10a87dc410b8

  a91fb73d53c5bdb4a22d1295c61e04b8f8b68c475e69c1754a1dc35745e7c6ae0275c2620

  b863b0d9ea8f0203010001300d06092a864886f70d01010505000381810038e1119fbb710

  4180fddba4bc8b2c275df63f0df418b7480d8eba2891da20d34d3d083cfed7bb3eb546863

  c76bc67cc93f2fa0e9377c470881c9a763c99cc035093184bb50f76e74155592eca3566a3

  10af55e5fec19d6fdc1a74f226aef485f84389126e8e3f4b59fe2797cbfcac660b9f2cc81

  e6f3dcaa7cb2001ecc496a7b

  殺毒引擎:

  /*

  * 殺毒引擎(下載病毒庫(kù)、獲取程序的包名及簽名并進(jìn)行匹配)

  * (non-Javadoc)

  * @see android.app.Activity#onTouchEvent(android.view.MotionEvent)

  */

  @Override

  public boolean onTouchEvent(MotionEvent event) {

  packagenames = new ArrayList();

  virusResult = new ArrayList();

  infos = new ArrayList();

  animationDrawable.start();//播放掃描病毒的動(dòng)畫(huà)

  new Thread(){

  @Override

  public void run() {

  try {

  URL url = new URL("http://192.168.1.168:8080/virus.xml");

  HttpURLConnection conn = (HttpURLConnection) url.openConnection();

  InputStream is = conn.getInputStream();

  //從服務(wù)器解析病毒庫(kù)并獲取到病毒庫(kù)的集合

  virusbeans = VirusInfo.getVirusInfos(is);

  TaskInfo taskInfo = new TaskInfo(KillVirusActivity.this); //實(shí)例化包資源管理器

  //獲取到當(dāng)前手機(jī)里面所有的包名

  infos = pm.getInstalledApplications(0);

  for(ApplicationInfo info : infos ){

  packagenames.add(info.packageName);

  }

  int count=0;

  // 殺毒引擎 根據(jù)病毒庫(kù) 比對(duì)當(dāng)前系統(tǒng)里面的程序包名 簽名進(jìn)行 殺毒

  StringBuilder sb = new StringBuilder();

  for(String packname : packagenames){

  sb.append("正在掃描 "+ packname);

  sb.append("\n");

  Message msg = new Message();

  msg.what = SCANNING;

  msg.obj = sb;

  handler.sendMessage(msg);

  //檢查當(dāng)前的packname 和對(duì)應(yīng)簽名 是不是跟病毒庫(kù)里面的信息一樣

  for(VirusBean virusbean : virusbeans){

  if(packname.equals(virusbean.getPackname())&&

  taskInfo.getAppSignature(packname).equals(virusbean.getSignature()))

  {

  virusResult.add(packname);//添加一個(gè)病毒

  }

  }

  count ++;//記錄病毒的總數(shù)

  }

  Message msg = new Message();

  msg.what = SCANNING_FINISH;

  msg.obj = count;

  handler.sendMessage(msg);

  } catch (Exception e) {

  e.printStackTrace();

  }

  }

  }.start();

  return super.onTouchEvent(event);

  }

  顯示病毒掃描信息:

  Handler handler = new Handler(){

  @Override

  public void handleMessage(Message msg) {

  super.handleMessage(msg);

  switch (msg.what) {

  case SCANNING:

  StringBuilder sb = (StringBuilder) msg.obj;

  tv_killvirus_info.setText(sb.toString());

  sv.scrollBy(0, 25);//每次增加都會(huì)自動(dòng)向下移動(dòng)畫(huà)面

  break;

  case SCANNING_FINISH:

  int i = (Integer) msg.obj;

  StringBuilder sb1 = new StringBuilder();

  sb1.append("掃描完畢 共掃描 "+ i+ " 個(gè)程序");

  if(virusResult.size()>0){

  sb1.append("發(fā)現(xiàn)病毒 \n");

  for(String packname : virusResult){

  sb1.append("病毒名"+ packname);

  sb1.append("\n");

  }

  }

  tv_killvirus_info.setText(sb1.toString());

  animationDrawable.stop();

  break;

  }

  }

  };

  獲取到程序的簽名:

  /*

  * 獲取程序的簽名

  */

  public String getAppSignature(String packname){

  try {

  PackageInfo packinfo =pm.getPackageInfo(packname, PackageManager.GET_SIGNATURES);

  //獲取到所有的權(quán)限

  return packinfo.signatures[0].toCharsString();

  } catch (NameNotFoundException e) {

  e.printStackTrace();

  return null;

  }

  }

  顯示掃描的文件頁(yè)面并自動(dòng)滾動(dòng):

  android:layout_width="wrap_content"

  android:layout_height="wrap_content"

  android:layout_below="@id/iv_killvirus_am"

  android:id="@+id/sv_killvirus"

  >

  android:layout_width="wrap_content"

  android:layout_height="wrap_content"

  android:id="@+id/tv_killvirus_info"

  >

  希望本文所述對(duì)大家Android程序設(shè)計(jì)有所幫助。

  相關(guān)閱讀:2018網(wǎng)絡(luò)安全事件:

  一、英特爾處理器曝“Meltdown”和“Spectre漏洞”

  2018年1月,英特爾處理器中曝“Meltdown”(熔斷)和“Spectre” (幽靈)兩大新型漏洞,包括AMD、ARM、英特爾系統(tǒng)和處理器在內(nèi),幾乎近20年發(fā)售的所有設(shè)備都受到影響,受影響的設(shè)備包括手機(jī)、電腦、服務(wù)器以及云計(jì)算產(chǎn)品。這些漏洞允許惡意程序從其它程序的內(nèi)存空間中竊取信息,這意味著包括密碼、帳戶(hù)信息、加密密鑰乃至其它一切在理論上可存儲(chǔ)于內(nèi)存中的信息均可能因此外泄。

  二、GitHub 遭遇大規(guī)模 Memcached DDoS 攻擊

  2018年2月,知名代碼托管網(wǎng)站 GitHub 遭遇史上大規(guī)模 Memcached DDoS 攻擊,流量峰值高達(dá)1.35 Tbps。然而,事情才過(guò)去五天,DDoS攻擊再次刷新紀(jì)錄,美國(guó)一家服務(wù)提供商遭遇DDoS 攻擊的峰值創(chuàng)新高,達(dá)到1.7 Tbps!攻擊者利用暴露在網(wǎng)上的 Memcached 服務(wù)器進(jìn)行攻擊。網(wǎng)絡(luò)安全公司 Cloudflare 的研究人員發(fā)現(xiàn),截止2018年2月底,中國(guó)有2.5萬(wàn) Memcached 服務(wù)器暴露在網(wǎng)上 。

  三、蘋(píng)果 iOS iBoot源碼泄露

  2018年2月,開(kāi)源代碼分享網(wǎng)站 GitHub(軟件項(xiàng)目托管平臺(tái))上有人共享了 iPhone 操作系統(tǒng)的核心組件源碼,泄露的代碼屬于 iOS 安全系統(tǒng)的重要組成部分——iBoot。iBoot 相當(dāng)于是 Windows 電腦的 BIOS 系統(tǒng)。此次 iBoot 源碼泄露可能讓數(shù)以?xún)|計(jì)的 iOS 設(shè)備面臨安全威脅。iOS 與 MacOS 系統(tǒng)開(kāi)發(fā)者 Jonathan Levin 表示,這是 iOS 歷史上最嚴(yán)重的一次泄漏事件。

  四、韓國(guó)平昌冬季奧運(yùn)會(huì)遭遇黑客攻擊

  2018年2月,韓國(guó)平昌冬季奧運(yùn)會(huì)開(kāi)幕式當(dāng)天遭遇黑客攻擊,此次攻擊造成網(wǎng)絡(luò)中斷,廣播系統(tǒng)(觀(guān)眾不能正常觀(guān)看直播)和奧運(yùn)會(huì)官網(wǎng)均無(wú)法正常運(yùn)作,許多觀(guān)眾無(wú)法打印開(kāi)幕式門(mén)票,最終未能正常入場(chǎng)。

  五、加密貨幣采礦軟件攻擊致歐洲廢水處理設(shè)施癱瘓

  2018年2月中旬,工業(yè)網(wǎng)絡(luò)安全企業(yè) Radiflow 公司表示,發(fā)現(xiàn)四臺(tái)接入歐洲廢水處理設(shè)施運(yùn)營(yíng)技術(shù)網(wǎng)絡(luò)的服務(wù)器遭遇加密貨幣采礦惡意軟件的入侵。該惡意軟件直接拖垮了廢水處理設(shè)備中的 HMI 服務(wù)器 CPU,致歐洲廢水處理服務(wù)器癱瘓 。

  Radiflow 公司稱(chēng),此次事故是加密貨幣惡意軟件首次對(duì)關(guān)鍵基礎(chǔ)設(shè)施運(yùn)營(yíng)商的運(yùn)營(yíng)技術(shù)網(wǎng)絡(luò)展開(kāi)攻擊。由于受感染的服務(wù)器為人機(jī)交互(簡(jiǎn)稱(chēng)HMI)設(shè)備,之所以導(dǎo)致廢水處理系統(tǒng)癱瘓,是因?yàn)檫@種惡意軟件會(huì)嚴(yán)重降低 HMI 的運(yùn)行速度。


編程殺毒相關(guān)文章:

1.計(jì)算機(jī)病毒編寫(xiě)語(yǔ)言是什么

2.電腦病毒編寫(xiě)方法介紹

3.計(jì)算機(jī)病毒平時(shí)潛伏在哪里

4.計(jì)算機(jī)病毒感染代碼

5.計(jì)算機(jī)病毒自我復(fù)制怎么辦

4040543