今天在群里看到大家发的一个链接,一个病毒的显示方式,挺好玩的,模仿写了下。
http://mt.sohu.com/20150517/n413220620.shtml?qq-pf-to=pcqq.c2c
这个实现的难度不大,主要是思路上面能够理解就非常简单了。
根据截图来看,主要也就是文字方面的更改,那么我们可以直接考虑android中如何给TextView进行赋值的操作。
TextView.setText(CharSequence)
这个方法就可以实现对其显示文字的赋值,所以使用了substrate框架简单编写了下hook脚本。
<span style="font-size:18px;">public class Main { public static void initialize() { MS.hookClassLoad("android.widget.TextView", new MS.ClassLoadHook() { @Override public void classLoaded(Class<?> arg0) { // TODO Auto-generated method stub Method smstest ; try { smstest=arg0.getMethod("setText", CharSequence.class); } catch (SecurityException e) { // TODO Auto-generated catch block smstest=null; e.printStackTrace(); } catch (NoSuchMethodException e) { // TODO Auto-generated catch block smstest=null; e.printStackTrace(); } if(smstest!=null){ final MS.MethodPointer old = new MS.MethodPointer(); MS.hookMethod(arg0, smstest, new MS.MethodHook() { @Override public Object invoked(Object arg0, Object... arg1) throws Throwable { // TODO Auto-generated method stub Log.d("ggz","i am hook in------->"); String bb=(String)arg1[0]; Log.d("ggz","string is----->"+bb); bb="爱破解,爱鬼哥"; Log.d("ggz","now string is --->"+bb); return old.invoke(arg0, bb); } }, old); } } }); } } </span>
然后我们运行看下我们定义的Log日志:
日志正常显示了,那么我们就看下手机的效果图:
好了,跟病毒样式一模一样。
如果病毒来做的话,可以直接通过自定义的hook方式来实现,不依靠这些公开的注入框架如Xposed,Cydia Substrate,可以通过自己编写的注入框架也可以很方便的来实现这个原理。
关于hook如何使用,我的博客里面也有简单介绍Cydia Substrate的从头教学,大家有兴趣的可以看下。
本文仅供研究而已,请勿进行非法用途。
原文地址:http://blog.csdn.net/guiguzi1110/article/details/45819169