zoukankan      html  css  js  c++  java
  • 十一. 一步步破解JEB 2.0demo版一

    字符串解密算法还愿

    jeb.jar为核心功能,所以主要分析这个
    1. jar转dex在使用jeb分析
    Androidsdkuild-tools23.0.3
    dx.bat --dex --output=输出目录 jeb.jar(路径)


    2. 载入分析发现很多字符串加密之后的字节数组



    3.解密字符串代码在这里,把代码拷贝出来,直接解密发现乱码


    4.仔细分析Smali代码发现问题出在寄存器解析上


    这是因为v1寄存器重用了, 把v1_1修改成v1 即可成功解密字符串


    5.算法也不难可以直接还原,还原后代码如下
    private static String setString(byte[] bytes_str) {
        String new_str;
        
        try {
            new_str = new String(bytes_str"UTF-8");
        }
        catch(Exception e) {
            new_str = new String(bytes_str);
        }
        return new_str;
    }
    public static String decStr(byte[] enStrBytesint decFlagint encode) {
        byte[] decstrArray;
        int enstrLen;
        if(enStrBytes == null) {
            return "decode error";
        }
        
        if (decFlag == 0 || enStrBytes.length == 0) {
            return setString(enStrBytes);
        }
        
        if(decFlag == 1) {
            enstrLen = enStrBytes.length;
            decstrArray = new byte[enstrLen];
            byte bEncode = ((byte)encode);
            
            for (int i = 0;i < enstrLen;i++) {
                decstrArray[i] = ((byte)(bEncode ^ enStrBytes[i]));
                bEncode = decstrArray[i];
            }
            return setString(decstrArray);
        }
        
        if(decFlag == 2) {
            enstrLen = enStrBytes.length;
            decstrArray = new byte[enstrLen];
            String coprightString = "Copyright (c) 1993, 2015, Oracle and/or its affiliates. All rights reserved. ";
            int index = 0;
            for (int i = 0;i < enstrLen;i++) {
                decstrArray[i] = ((byte)(enStrBytes[i] ^ (((byte)coprightString.charAt(index)))));
                index = (index + 1) % coprightString.length();
            }
            return setString(decstrArray);
        }
        
        return "decode error";
    }  


    算法比较简单:
    当Flag为0时,直接转换成字符串即可
    当Flag为1时,简单的异或加密
    当Flag为2时,和一个Copyright字符串声明做异或运算


    最后解密的效果如下:



    但是这样的代码实在是太多,我们只好上核武器JEB脚本
    在下个章节介绍如何写JEB脚本去批量修改






  • 相关阅读:
    conn
    快速指数算法+Python代码
    扩展欧几里得算法+Python代码
    最速下降法+Matlab代码
    第二类生日攻击算法
    遗传算法+Python代码
    模糊聚类+Matlab代码
    数据库检索
    Spring Data Jpa依赖和配置
    上传Typora到博客园(解决图片缩放问题)
  • 原文地址:https://www.cnblogs.com/bingghost/p/5819716.html
Copyright © 2011-2022 走看看