• Android java层常见加密算法的hook自吐以及栈信息的打印


    • 杂谈:其实原理并没有很难,本质就是hook Android的框架层中的api将我们想要的key和iv(也可以没有,就打个比方),但是目前的话,很多厂家已经不在直接调用java层的这些加密算法的api了,
      很多都是使用自己实现的加密算法,要么就是放在so里面,要么就是java层自己实现一个差不多算法的,这个我主要还是锻炼xposed的使用度,目前感觉挺好上手,甚至对我更友好,毕竟
      java老粉丝了,但是也有缺点,就是每次编译完,就需要重启,这点真没frida方便,同时写这个项目,也让我更多去看安卓的源码以及xposed的源码,感觉也挺有意思的,所以代码本身不需要
      去记忆的,掌握方法论都是可以写出来的。
    • 例子及hook思路
    1. 分析一个aes的加密,下文是我写的一个小demo中复制出来的
      public static String aesEncrypt(String content,String k,String iv)
       {
           try{
               Throwable ex=new Throwable();
               StackTraceElement[] stackTraceElements=ex.getStackTrace();
               IvParameterSpec zeroIv=new IvParameterSpec(iv.getBytes());
               SecretKeySpec key=new SecretKeySpec(k.getBytes(),"AES");
               Cipher cipher=Cipher.getInstance("AES/CBC/PKCS5Padding");
               cipher.init(Cipher.ENCRYPT_MODE,key,zeroIv);
               byte[] encryptedData=cipher.doFinal(content.getBytes(bm));
               return Base64.encodeToString(encryptedData,Base64.DEFAULT);
           }catch (Exception e)
           {
               e.printStackTrace();
           }
           return null;
       }
    

    2.思路分析:
    我们的目的还是为了得到key和iv,以及明文和密文,仔细观察有哪些地方是涉及到了,发现是IvParameterSpec和SecretKeySpec这个构造方法中
    的参数就是我们的key和iv,那么思路不就直接hook他们的构造函数了吗,将参数打印出来不就完事,注意点在于将所有的构造函数都给hook上,
    避免漏了,毕竟从安卓源码中跟进去,发现他们的构造方法都是有重载的,所以为了不漏掉,所以全部hook就好了,xposed同样提供了api,

  • 相关阅读:
    java简单计算器,只能鼠标点击数字
    可以掉落和滑动的星星
    servlet生成数字验证码
    web服务器底层-http请求与相应
    Codeforces 990D Graph And Its Complement 【构造】【性质】
    2018美团CodeM编程大赛 Round A Problem 2 下棋 【贪心】
    Codeforces 988F Rain and Umbrellas 【dp】
    Codeforces 988D Points and Powers of Two 【性质】【卡常】
    Codeforces 981D Bookshelves 【dp】【性质】
    POJ 2104 K-th Number 【主席树】【不带修改】
  • 原文地址:https://www.cnblogs.com/YenKoc/p/14346939.html
Copyright © 2020-2023  润新知