看到鬼哥博客一篇文章,转载一下。~ 今天在群里看到大家发的一个链接,一个病毒的显示方式,挺好玩的,模仿写了下。
http://mt.sohu.com/20150517/n413220620.shtml?qq-pf-to=pcqq.c2c
这个实现的难度不大,主要是思路上面能够理解就非常简单了。
根据截图来看,主要也就是文字方面的更改,那么我们可以直接考虑android中如何给TextView进行赋值的操作。
TextView.setText(CharSequence)
这个方法就可以实现对其显示文字的赋值,所以使用了substrate框架简单编写了下hook脚本。
[java] view plaincopy
- <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的从头教学,大家有兴趣的可以看下。
本文仅供研究而已,请勿进行非法用途。
|