通过cydia substrate 对 framework AP

作者: ahking17 | 来源:发表于2017-01-19 14:54 被阅读96次

    这篇文章没有什么自己的内容, 主要是对别人文章的一个总结和代码实践.

    技术知识点

    参考资料:
    http://www.cnblogs.com/goodhacker/p/4014617.html
    //主要参考的这篇文章, 讲的很清晰.
    http://blog.csdn.net/yzzst/article/details/47318751

    实践demo
    1. http://www.cydiasubstrate.com/ 下载安装cydia_substrate.apk
    2. 用eclipse导入demo工程, 这个demo工程用于演示更改背景色.
      /home/wangxin/src/github/substrate/cydia-android-hook-master
    核心代码
    import com.saurik.substrate.MS;
    
    public class Main {
    
        static void initialize() {
    
            // getExternalStorageState hook to return true, will cause boot issue
            // so hook it after boot
            //if (!MainActivity.isManualTrigger) return;
    
              MS.hookClassLoad("android.content.res.Resources",
                    new MS.ClassLoadHook() {
                       public void classLoaded(Class<?> resources) {
         
                          Method getColor;
                          try {
                             getColor = resources.getMethod("getColor",
                                Integer.TYPE);
                          } catch (NoSuchMethodException e) {
                             getColor = null;
                          }
         
                          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;
                                    }
                                });
                            }
                       }
                    });
    
           }
    }
    
    
    通过Hook API 可以实现的一些特殊功能

    现在能想到的起码有下面几点:

    1. 修改任意Activity的背景颜色, 实现对微信的夜间模式
    2. 修改SplashView的getSplashTime()返回值, 去除自己及其他app的闪屏广告.
    3. 通过修改传感器的值, 刷微信计步值.
    4. 一些app, 有一些购买积分的功能点, 通过反编译, 也许能找到设置积分值的代码, 这样也许能设置个无限量的积分值.
    5. 比较典型的像ximalaya这样的应用, 如果访问积分这块逻辑没有anti-hook的机制保证的话, 很容易出现安全漏洞.
    6. 有些特殊情况下,有助于调试app, 比如确定某个framework API在app层的调用位置, 就可以通过hook这个api, 打印出stacktrace来确定.
    Anti-Hooking 技术

    http://wps2015.org/drops/drops/Android%20Java%E5%B1%82%E7%9A%84anti-hooking%E6%8A%80%E5%B7%A7.html
    这里提供了几种方法用于anti-hook Cydia Substrate和Xposed框架
    0x01 检测安装的应用
    0x02 检查调用栈里的可疑方法
    0x03 检测并不应该native的native方法
    0x04 通过/proc/[pid]/maps检测可疑的共享对象或者JAR

    写的非常精彩, 对于正经开发app是很有价值的.

    原文地址:
    http://d3adend.org/blog/?p=589 <<Android Anti-Hooking Techniques in Java>>

    总结: 了解使用 hook的技术还算比较的重要, 但更重要的是如何anti-hook, 这个技术点其实是更加的重要.
    ----------------------DONE.--------------

    相关文章

      网友评论

        本文标题:通过cydia substrate 对 framework AP

        本文链接:https://www.haomeiwen.com/subject/teeibttx.html