字符串解密算法还愿

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. JS数组去重比较

    数组去重复是一个常见的需求,我们暂时考虑同类型的数组去重复.主要是理清思路和考虑执行性能. for循环删除后面重复的 var uniqueFor = function(arr) { for (var ...

  2. 【笔记6】用pandas实现条目数据格式的推荐算法 (基于物品的协同)

    ''' 基于物品的协同推荐 矩阵数据 说明: 1.修正的余弦相似度是一种基于模型的协同过滤算法.我们前面提过,这种算法的优势之 一是扩展性好,对于大数据量而言,运算速度快.占用内存少. 2.用户的评价 ...

  3. AVA数据库连接池.

    package db_pool; //// 一个效果非常不错的JAVA数据库连接池.// from:http://www.jxer.com/home/?uid-195-action-viewspace ...

  4. Jsoup开发网站客户端第二篇,图片轮播,ScrollView兼容ListView

    最近一段日子忙的焦头烂额,代码重构,新项目编码,导致jsoup开发网站客户端也没时间继续下去,只能利用晚上时间去研究了.今天实现美食网首页图片轮播效果,网站效果图跟Android客户端实现如图: 从浏 ...

  5. npm+node+cordova+ionic 版本匹配

    npm 2.15.8 node 4.4.7 cordova 6.1.0 ionic 1.7.16

  6. VMware网络设置详解

    标签: 网络vmware虚拟机web服务network 2009-05-19 22:23 27537人阅读 评论(7) 收藏 举报 分类: 基于类linux的开发(171) 我们知道,VMwareWo ...

  7. [转]struts2处理.do后缀的请求

    原文地址:http://skyuck.iteye.com/blog/545988 默认情况下,struts2是无法处理以.do为后缀的请求url的(默认情况下是.action或者不填,可以参见org. ...

  8. ecliplse高亮显示选中的相同变量

    选择:windows-> preferences->java->Editor->Mark Occurences 选择最上的复选框,下面的就有很多了. 其中的Local vari ...

  9. MyEclipse建立SpringMVC入门HelloWorld项目

    一.首先,建立空的web project项目: 1. 2. 3. 二.其次,导入先关jar包 1.将jar包导入SpringMVCHelloWorld\WebRoot\WEB-INF\lib目录下 三 ...

  10. Google开源库-Volley的使用

    一.什么是Volley? Volley is an HTTP library that makes networking for Android apps easier and most import ...