当前位置:首页 > yabo168亚博娱乐 > 其他 > 正文

谈谈最近很火的android手机病毒

““XXX(机主姓名)看这个,ht://********XXshenqi.apk”最近一种手机病毒爆发,机主收到这样的短信,开头是以发送者手机通讯录存储的名字为开头,然后再让对方点开一个网页链接。?其““XXX(机主姓名)看这个,ht://********XXshenqi.apk”最近一种手机病毒爆发,机主收到这样的短信,开头是以发送者手机通讯录存储的名字为开头,然后再让对方点开一个网页链接。?其实熟悉android的朋友一看就明白这个病毒原理其实很简单。下面就来谈谈这个病毒的原理和防范方法。?病毒的原理有两步:?1、获取通讯录联系人名称和号码。?2、以机主的语气自动发送短信。?一、通讯录联系人的获取。?Android中的联系人都保存在一个SQLite数据库中,有兴趣的可以用re文件管理器查看。?它的路径为:/data/data/com.android.providers.contacts/databases/contacts2.db?一般我们只要关心这几张表?1.contacts?表?_id?:表的ID,主要用于其它表通过contacts?表中的ID可以查到相应的数据。?display_name:??联系人名称?photo_id:头像的ID,如果没有设置联系人头像,这个字段就为空?times_contacted:通话记录的次数?last_time_contacted:?最后的通话时间??lookup?:是一个持久化的储存?因为用户可能会改名子?但是它改不了lookup?2.data表?raw_contact_id:通过raw_contact_id可以找到?raw_contact表中相对的数据。?data1?到?data15??这里保存着联系人的信息?联系人名称?联系人电话号码??电子邮件??备注?等等。?3.raw_contact表?version?:版本号,用于监听变化?deleted?:删除标志,?0为默认?1?表示这行数据已经删除?display_name?:?联系人名称?last_time_contacts?:?最后联系的时间?/**得到手机通讯录联系人信息**/?
? ?private?void?getPhoneContacts()?{?
ContentResolver?resolver?=?mContext.getContentResolver();?
?
//?获取手机联系人?
Cursor?phoneCursor?=?resolver.query(Phone.CONTENT_URI,PHONES_PROJECTION,?null,?null,?null);?
?
?
if?(phoneCursor?!=?null)?{?
? ? while?(phoneCursor.moveToNext())?{?
?
? ? //得到手机号码?
? ? String?phoneNumber?=?phoneCursor.getString(PHONES_NUMBER_INDEX);?
? ? //当手机号码为空的或者为空字段?跳过当前循环?
? ? if?(TextUtils.isEmpty(phoneNumber))?
? ? ? ? continue;?
? ? ?
? ? //得到联系人名称?
? ? String?contactName?=?phoneCursor.getString(PHONES_DISPLAY_NAME_INDEX);?
? ? ?
? ? //得到联系人ID?
? ? Long?contactid?=?phoneCursor.getLong(PHONES_CONTACT_ID_INDEX);?
?
? ? //得到联系人头像ID?
? ? Long?photoid?=?phoneCursor.getLong(PHONES_PHOTO_ID_INDEX);?
? ? ?
? ? //得到联系人头像Bitamp?
? ? Bitmap?contactPhoto?=?null;?
?
? ? //photoid?大于0?表示联系人有头像?如果没有给此人设置头像则给他一个默认的?
? ? if(photoid?>?0?)?{?
? ? ? ? Uri?uri?=ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI,contactid);?
? ? ? ? InputStream?input?=?ContactsContract.Contacts.openContactPhotoInputStream(resolver,?uri);?
? ? ? ? contactPhoto?=?BitmapFactory.decodeStream(input);?
? ? }else?{?
? ? ? ? contactPhoto?=?BitmapFactory.decodeResource(getResources(),?R.drawable.contact_photo);?
? ? }?
? ? ?
? ? mContactsName.add(contactName);?
? ? mContactsNumber.add(phoneNumber);?
? ? mContactsPhonto.add(contactPhoto);?
? ? }?
?
? ? phoneCursor.close();?
}?
? ?}? ?/**得到手机SIM卡联系人人信息**/?
? ?private?void?getSIMContacts()?{?
ContentResolver?resolver?=?mContext.getContentResolver();?
//?获取Sims卡联系人?
Uri?uri?=?Uri.parse("content://icc/adn");?
Cursor?phoneCursor?=?resolver.query(uri,?PHONES_PROJECTION,?null,?null,?
? ? null);?
?
if?(phoneCursor?!=?null)?{?
? ? while?(phoneCursor.moveToNext())?{?
?
? ? //?得到手机号码?
? ? String?phoneNumber?=?phoneCursor.getString(PHONES_NUMBER_INDEX);?
? ? //?当手机号码为空的或者为空字段?跳过当前循环?
? ? if?(TextUtils.isEmpty(phoneNumber))?
? ? ? ? continue;?
? ? //?得到联系人名称?
? ? String?contactName?=?phoneCursor?
? ? ? ? .getString(PHONES_DISPLAY_NAME_INDEX);?
?
? ? //Sim卡中没有联系人头像?
? ? ?
? ? mContactsName.add(contactName);?
? ? mContactsNumber.add(phoneNumber);?
? ? }?
?
? ? phoneCursor.close();?
}?
? ?}?二、自动发送信息?下面是自动发送短信的代码,给了一个EditText框来编辑短信内容,一个发送按钮来用来发送短信,一个清除按钮用来清除刚刚编辑的EditText。当然,实际中病毒不会有这些界面的,它在获取了联系人后就直接用上面得到的姓名号码等信息编辑短信,然后发送出去。?public?class?SMSActivity?extends?Activity?{?
? ? private?EditText?messageEditText;?
? ? private?Button?sendBtn;?
? ? private?Button?clearBtn;?
?
? ? @Override?
? ? protected?void?onCreate(Bundle?savedInstanceState)?{?
? ? ? ? super.onCreate(savedInstanceState);?
? ? ? ? setContentView(R.layout.sms);?
? ? ? ? messageEditText?=?(EditText)?findViewById(R.id.messageedittext);?
? ? ? ? sendBtn?=?(Button)?findViewById(R.id.sendbtn);?
? ? ? ? clearBtn?=?(Button)?findViewById(R.id.clearbtn);?
?
? ? ? ? sendBtn.setOnClickListener(new?OnClickListener()?{?
? ? ? ? ? ? @Override?
? ? ? ? ? ? public?void?onClick(View?v)?{?
? ? ? ? ? ? ? ? //?接收电话号码数据?
? ? ? ? ? ? ? ? Bundle?bundle?=?getIntent().getExtras();?
? ? ? ? ? ? ? ? String?phoneNum?=?bundle.getString("phoneNum");?
? ? ? ? ? ? ? ? //?获取发送的内容?
? ? ? ? ? ? ? ? String?message?=?messageEditText.getText().toString();?
? ? ? ? ? ? ? ? if?(phoneNum?==?null?||?"".equals(phoneNum))?{?
? ? ? ? ? ? ? ? ? ? Toast.makeText(SMSActivity.this,?
? ? ? ? ? ? ? ? ? ? ? ? ? ? "Please?input?SMS?Content!",?Toast.LENGTH_SHORT)?
? ? ? ? ? ? ? ? ? ? ? ? ? ? .show();?
? ? ? ? ? ? ? ? ? ? return;?
? ? ? ? ? ? ? ? }?
? ? ? ? ? ? ? ? //?发送短信?
? ? ? ? ? ? ? ? sendSMS(phoneNum,?message);?
? ? ? ? ? ? }?
? ? ? ? });?
?
? ? ? ? //?置空message输入框?
? ? ? ? clearBtn.setOnClickListener(new?OnClickListener()?{?
? ? ? ? ? ? @Override?
? ? ? ? ? ? public?void?onClick(View?v)?{?
? ? ? ? ? ? ? ? messageEditText.setText("");?
? ? ? ? ? ? }?
? ? ? ? });?
? ? }?
?
? ? private?void?sendSMS(String?phoneNum,?String?message)?{?
? ? ? ? //初始化发短信SmsManager类?
? ? ? ? SmsManager?smsManager?=?SmsManager.getDefault();?
? ? ? ? PendingIntent?pi?=?PendingIntent.getActivity(this,?0,?new?Intent(this,?
? ? ? ? ? ? ? ? VoiceActivity.class),?0);?
? ? ? ? //如果短信内容长度超过70则分为若干条发?
? ? ? ? if?(message.length()?>?70)?{?
? ? ? ? ? ? ArrayList?msgs?=?smsManager.divideMessage(message);?
? ? ? ? ? ? for?(String?msg?:?msgs)?{?
? ? ? ? ? ? ? ? smsManager.sendTextMessage(phoneNum,?null,?msg,?pi,?null);?
? ? ? ? ? ? }?
? ? ? ? }?else?{?
? ? ? ? ? ? smsManager.sendTextMessage(phoneNum,?null,?message,?pi,?null);?
? ? ? ? }?
? ? ? ? Toast.makeText(this,?"Send?Message?Success!",?Toast.LENGTH_SHORT)?
? ? ? ? ? ? ? ? .show();?
? ? }?
}? ?三、病毒防范?看到这里你会发现你的隐私可以随便被人窥探,是的,当你使用智能手机就不存在什么隐私了,现在随便一个app都会获取你的隐私数据。不是你不会被黑,只是你没有被黑的价值····?防范病毒最好的方法就是不要随便装来路不明的软件,不要轻易给软件root权限,这样可以保证你的数据只在正规的大公司手里,然后你只要祈祷你的数据不要哪天被他们泄露了就好····?看下面,我的手机上就有16款软件有权限发短信,30款有权限访问联系人和通话记录数据,甚至有15款可以监听手机通话!!算了,反正我就算被监听了也没什么价值=?=!
友情链接
异常 - Exception - Copyright ? 2014 - 2014 - 亚搏体育app异常网 - 鄂ICP备14001750号 - 网站地图