美文网首页
2020-11-15某电话apk逆向思路

2020-11-15某电话apk逆向思路

作者: 217760757146 | 来源:发表于2020-11-15 19:29 被阅读0次

    过程

    抓包分析api =》简化api参数=》找到并分析加密参数位置(首先对java包进行一些排除) =》分析构建加密函数

    过程突破点

    (先尽可能的缩小范围 然后整体判断 找到一个吻合所有条件的才深入分析代码 **读代码的时间成本很高) 搞清楚是否需要登录才能调用 从而分析出一部分信息=》无 =》api关键词最优 特征搜索(前两个是重点) 上下文方法次优 前端反推下下策 总之还是要结合判断 =》观察必须参数 找到之间关系

    遇到的小问题

    charles抓包结果乱码

    解决办法:https://www.jianshu.com/p/2712e53bb761

    反编译随机性

    解决办法:多次反编译 注意关键文件的关键函数是否未被编译出来

    最后贴一下复现的解密java代码 可直接粘贴运行

    package com.example.lib;
    
    import java.security.MessageDigest;
    import java.security.NoSuchAlgorithmException;
    
    public class test {
       public static void main(String[] args) {
           System.out.println("Hello World");
           StringBuffer localObject6 = new StringBuffer();
           String Mq = "kq49MtFgDyNwuWtBxeyQqzfJhqOyW92k";
           String Mr = "d5BaQm0Pi0hK5bgLYyxj2utLGXQb8prcxfYJn97auhorpfdhymvXt2SbUzlk0llrukboftjPm5V3ayq9x3nguwwP0v8Eipsn6TrqqfhqVllgvpWYn9njbYmqgcUfqJcPtAb05sduGz5qggZQa1RphEugceNs6Au7nL4zt";
           String tel = "16605555183";
           String uid = "351564439514019";//localObject1
           String localObject1 = uid;
           String localObject2 = tel;
    
           Object localObject5 = Mr.substring(0, 27);
           ((StringBuffer)localObject6).append((String)localObject5);
           ((StringBuffer)localObject6).insert(6, (String)localObject1).insert(13 + ((String)localObject1).length(), (String)localObject2).insert(17 + ((String)localObject1).length() + ((String)localObject2).length(), (String)localObject1).insert(21 + ((String)localObject1).length() * 2 + ((String)localObject2).length(), Mq).insert(((StringBuffer)localObject6).toString().length(), (String)localObject2);
           System.out.println(((StringBuffer)localObject6).toString());
           localObject5 = bx(((StringBuffer)localObject6).toString());
    
           String sig = ((String)localObject5).substring(5, 37);
           System.out.println(sig);
       }
    
       public static String bx(String paramString)
       {
           try
           {
               Object localObject = MessageDigest.getInstance("SHA-1");
               ((MessageDigest)localObject).update(paramString.getBytes());
               byte[] paramString1;
               paramString1 = ((MessageDigest)localObject).digest();
               localObject = new StringBuffer();
               int i = 0;
               while (i < paramString1.length)
               {
                   String str = Integer.toHexString(paramString1[i] & 0xFF);
                   if (str.length() < 2) {
                       ((StringBuffer)localObject).append(0);
                   }
                   ((StringBuffer)localObject).append(str);
                   i += 1;
               }
               paramString = ((StringBuffer)localObject).toString();
               return paramString;
           }
           catch (NoSuchAlgorithmException paramString1)
           {
               paramString1.printStackTrace();
           }
           return "";
       }
    }
    
    

    经验积累在于可以提早的判断出可行或不可行的方向

    相关文章

      网友评论

          本文标题:2020-11-15某电话apk逆向思路

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