zoukankan      html  css  js  c++  java
  • 使用Cydia Substrate实现Android Hook

    使用Cydia Substrate来实现Android hook,文章参考官方教程,有修改。

    1、安装Cydia Substrate框架apk,手机必须root。

    2、代码编写;

    在manifest文件中声明如下:

    <application
            android:allowBackup="true"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/AppTheme" >
            <meta-data
                android:name="com.saurik.substrate.main"
                android:value=".Main" />
    </application>
    
    <uses-permission android:name="cydia.permission.SUBSTRATE" />

    Main类的代码如下:

    public class Main {
        
        public static void initialize(){
            hookSaygoer() ;
        }
        
        static void hookResColor() {
            MS.hookClassLoad("android.content.res.Resources",
                    new MS.ClassLoadHook() {
    
                        @Override
                        public void classLoaded(Class<?> resources) {
                            Method getColor = null;
                            try {
                                getColor = resources.getDeclaredMethod("getColor",Integer.TYPE);
                            } catch (NoSuchMethodException e) {
                                e.printStackTrace();
                            }
                            if (getColor != null) {
                                MS.hookMethod(resources,getColor,
                                        new MS.MethodAlteration<Resources, Integer>() {
                                            public Integer invoked(Resources resources,
                                                    Object... args)
                                                    throws Throwable {
                                                return invoke(resources, args)& ~0x0000ff00 | 0x00ff0000;
                                            }
                                        });
                            }
                        }
                    });
        }
        
    }

    其中initialize()相当于入口函数,代码实现的效果图如下:

    个人感觉Cydia Substrate是基于类加载,方法调用,关键还是依赖于Java反射,Android系统源码可读的当然可以进行修改,如果是第三方程序进行了代码混淆或者加密的,那么Java反射失效,此框架还有用吗?

  • 相关阅读:
    solr 使用
    深入理解java虚拟机(二)HotSpot Java对象创建,内存布局以及访问方式
    深入理解java虚拟机(一)
    获取请求体数据 POST
    获取请求头数据
    Servlet之Request和Response 解析
    Servlet 之 Http协议
    Servlet 体系结构
    如何修改servlet的创建时机?
    Java Web servlet 详解
  • 原文地址:https://www.cnblogs.com/alexthecoder/p/4203217.html
Copyright © 2011-2022 走看看