字符串解密算法还愿

jeb.jar为核心功能,所以主要分析这个
1. jar转dex在使用jeb分析
Android\sdk\build-tools\23.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[] enStrBytes, int decFlag, int 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脚本去批量修改


十一. 一步步破解JEB 2.0demo版一的更多相关文章

  1. 十二. 一步步破解JEB 2.0demo版二

    编写脚本批量还愿JEB 加密字符串 解密完后效果如下: 脚本源码: https://github.com/bingghost/JebPlugins 思路: 下面的该封装的基本都封装了,过程如下: 1. ...

  2. java应用破解之破解 jeb mips 2.3.3

    前言 jeb 的新版支持 mips的反编译 ,于是去官网申请一个试用版,试用版的限制还是比较多的,比如 使用时间验证,没法复制粘贴 等,于是想尝试看看能否破解,同时填了 java破解 这个坑. 修改版 ...

  3. FusionChart 水印破解方法(代码版)

    网上一直找不到有关去除水印的方法! 正好做项目要用到这个鬼东西,折腾了一天,总算破解成功,把方法告诉大家. 先看下破解前的效果. 这是个很烦人的东西,而且有一个更加让人烦人的地方, 就是根本无法买!为 ...

  4. VC2010的破解方法(针对旗舰版)

    VS2010 正式版破解方法详解 全球开发者最为瞩目的Visual Studio 2010开发工具在4月12日正式发布,现为大家制作一个简单的破解教程有两种方法,操作不一样,原都一样(针对旗舰版,其他 ...

  5. 破解 jeb 2.3.7 demo

    前言 使用的技术和上文的一样. mips 版本的修改版 修改版: https://gitee.com/hac425/jeb-mips 正文 安卓版 jeb-2.3.7.201710262129-JEB ...

  6. CENTOS6 下MATLAB2014b的安装和破解(Matlab_R2014b linux版 安装笔记)

    参考:http://www.jianshu.com/p/f0cefc737dda ①在下载matlab linux版.iso, ②在windows下用ULTRAISO软件提取 ③用crack中的ins ...

  7. Web攻防之暴力破解(何足道版)

    原创文章 原文首发我实验室公众号 猎户安全实验室 然后发在先知平台备份了一份 1 @序 攻防之初,大多为绕过既有逻辑和认证,以Getshell为节点,不管是SQL注入获得管理员数据还是XSS 获得后台 ...

  8. 小组冲刺第十一天站立会议(发布Alpha版+网站链接)

    注: “助成”招聘网站链接:http://58.87.74.131:8080/zhucheng 欢迎大家进行评测. 一.任务看板: 二.燃尽图: 三.团队成员合照: 四.任务总结: 今天我们发布网站B ...

  9. Linux Linux程序练习十一(网络编程大文件发送UDP版)

    //网络编程发送端--大文件传输(UDP) #include <stdio.h> #include <stdlib.h> #include <string.h> # ...

随机推荐

  1. Intellij Idea中的Jetty报出Web application not found src/main/webapp错误的解决方案

    今天在Intellij Idea中编译项目的时候,运行起来一直会报出如下的错误: Web application not found src/main/webapp 当时感觉应该是什么文件缺少了.所以 ...

  2. Charles 从入门到精通

    特别说明:原文来自唐巧大神的博客 http://blog.devtang.com/2015/11/14/charles-introduction/ Charles 从入门到精通 文章目录 1. 目录及 ...

  3. 虚拟机VMware 12 Pro 永久许可证激活密钥

    热门虚拟机软件VMware Workstation Pro现已更新至v12.5.2.12.0属于大型更新,专门为Win10的安装和使用做了优化,支持DX10.4K高分辨率显示屏.OpenGL 3.3. ...

  4. jquery 离开页面提示信息

    <script> $(window).bind('beforeunload', function () { return '您输入的内容尚未保存,确定离开此页面吗?'; });</s ...

  5. java集合学生管理系统

    //student.java package com.sran.www; import java.util.Arrays; import java.util.Scanner; public class ...

  6. [HAOI2009]求回文串

    神奇到爆炸的贪心,策略很简单.但是实现上好像比较恶心.换了一种思路.先保存所有点应该转移到的位置,BIT搞个逆序对就好了. 如何找到每个点应该转移到的位置?这个处理方式也是比较玄学.看代码吧. //O ...

  7. Hibernate的session缓存和对象的四种状态

    一.session缓存 说session缓存就得说到JAVA对象的生命周期,当没有任何引用指向一个对象时,对象则可以被gc回收,也就是生命周期结束了 而hibernate获取一个对象后,会将对象存入s ...

  8. MYSQL开启慢查询日志实施

    查看当前服务器是否开启慢查询:1.快速办法,运行sql语句show VARIABLES like "%slow%" 2.直接去my.conf中查看.my.conf中的配置(放在[m ...

  9. C#设置textBox只能输入数字(正数,负数,小数)简单实现

    /* *设置textBox只能输入数字(正数,负数,小数) */ public static bool NumberDotTextbox_KeyPress(object sender, KeyPres ...

  10. %我的 tex 模版

    %我的 tex 模版 \documentclass[UTF8,a1paper,landscape]{ctexart}%UTF8 中文支持,a1paper 纸张大小,landscape 横向版面,cte ...