前言

使用的技术和上文的一样。

mips 版本的修改版

修改版:

https://gitee.com/hac425/jeb-mips

正文

安卓版

jeb-2.3.7.201710262129-JEBDecompilerDemo-121820464987384338

重新编译一个 com.pnfsoftware.jeb.client.Licensing

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
// package com.pnfsoftware.jeb.client; import com.pnfsoftware.jeb.AssetManager;
import com.pnfsoftware.jeb.util.format.Strings;
import com.pnfsoftware.jeb.util.logging.GlobalLog;
import com.pnfsoftware.jeb.util.logging.ILogger;
import com.pnfsoftware.jebglobal.GN;
import com.pnfsoftware.jebglobal.mW; public final class Licensing {
private static final ILogger logger = GlobalLog.getLogger(Licensing.class);
public static final String user_email = "love_lh@hac425.com";
public static final String user_group = "hacker";
public static final int user_id = 2116188757;
public static final String user_name = "hac425";
public static final int user_count = 20;
public static final int license_ts = 0;
public static final int license_validity = 40000;
public static int real_license_ts = 0;
public static int build_type = 0;
public static final int FLAG_AIRGAP = 8;
public static final int FLAG_ANYCLIENT = 16;
public static final int FLAG_COREAPI = 32;
public static final int FLAG_DEBUG = 1;
public static final int FLAG_FLOATING = 4;
public static final int FLAG_FULL = 2;
public static final int FLAG_JEB2 = 128; static {
int v0 = Licensing.build_type | 2;
Licensing.build_type = v0;
v0 |= 4;
Licensing.build_type = v0;
v0 |= 8;
Licensing.build_type = v0;
v0 |= 16;
Licensing.build_type = v0;
v0 |= 32;
Licensing.build_type = v0;
Licensing.build_type = v0 | 128;
} public Licensing() {
} public static final void setLicenseTimestamp(int var0) {
real_license_ts = 1505267330;
} public static final int getExpirationTimestamp() {
return real_license_ts + 345600000;
} public static final int getBuildType() {
return build_type;
} public static final boolean isDebugBuild() {
return true;
} public static final boolean isReleaseBuild() {
return !isDebugBuild();
} public static final boolean isFullBuild() {
return true;
} public static final boolean isDemoBuild() {
return !isFullBuild();
} public static final boolean isFloatingBuild() {
return (build_type & 4) != 0;
} public static final boolean isIndividualBuild() {
return !isFloatingBuild();
} public static final boolean isAirgapBuild() {
return (build_type & 8) != 0;
} public static final boolean isInternetRequired() {
return false;
} public static final boolean allowAnyClient() {
return (build_type & 16) != 0;
} public static final boolean canUseCoreAPI() {
return true;
} public static final String getBuildTypeString() {
StringBuilder var0 = new StringBuilder();
if (isReleaseBuild()) {
var0.append(mW.UU(new byte[]{-119, 23, 9, 9, 4, 18, 22, 74}, 1, 251));
} else {
var0.append(mW.UU(new byte[]{35, 1, 7, 23, 18, 72}, 1, 71));
} if (isFullBuild()) {
var0.append(mW.UU(new byte[]{37, 26, 28, 21, 93}, 2, 39));
} else {
var0.append(mW.UU(new byte[]{39, 10, 29, 22, 93}, 2, 200));
} if (isFloatingBuild()) {
var0.append(mW.UU(new byte[]{-114, 10, 3, 14, 21, 29, 7, 9, 72}, 1, 232));
} else {
var0.append(mW.UU(new byte[]{42, 1, 20, 16, 4, 0, 3, 29, 21, 76, 7}, 2, 150));
} if (isAirgapBuild()) {
var0.append(mW.UU(new byte[]{34, 6, 2, 84, 21, 8, 23, 71}, 2, 100));
} else {
var0.append(mW.UU(new byte[]{8, 23, 20, 92, 68, 7, 26, 17, 23, 28, 11, 17, 91}, 1, 122));
} if (allowAnyClient()) {
var0.append(mW.UU(new byte[]{82, 15, 23, 84, 78, 15, 5, 12, 11, 26, 91}, 1, 51));
} else {
var0.append(mW.UU(new byte[]{-85, 9, 0, 15, 10, 10, 8, 13, 65, 78, 15, 5, 12, 11, 26, 91}, 1, 196));
} if (canUseCoreAPI()) {
var0.append(mW.UU(new byte[]{32, 0, 2, 28, 95, 8, 23, 1}, 2, 169));
} else {
var0.append(mW.UU(new byte[]{-27, 1, 66, 78, 12, 29, 23, 72, 76, 17, 25}, 1, 139));
} return var0.toString();
} public static String getLicense() {
byte[] var0 = AssetManager.UU("LICENSE.TXT");
return var0 == null ? null : Strings.decodeUTF8(var0);
} public static String getChangeList() {
byte[] var0 = AssetManager.UU("CHANGELIST.TXT");
return var0 == null ? null : Strings.decodeUTF8(var0);
} }

然后patch掉退出函数和更新检测

package me.hacklh;

import com.pnfsoftware.jeb.Launcher;
import javassist.ClassPool;
import javassist.CtClass;
import javassist.CtMethod;
import javassist.CtNewMethod;
import com.pnfsoftware.jeb.client.Licensing; public class JebCracker { public static void main(String[] args) throws Exception { // com.pnfsoftware.jeb.installer.Launcher.main(new String[]{"--di"});
// DES.main(args);
// Launcher.main(new String[]{"--generate-key"});
CtClass.debugDump = "./debugDump/"; System.out.println(Licensing.allowAnyClient()); /**
* 修改getStatus, AbstractContext会起几个线程修改status
*/
ClassPool pool = ClassPool.getDefault();
pool.importPackage("com.pnfsoftware.jeb.client.AbstractContext");
CtClass old_class = pool.get("com.pnfsoftware.jeb.client.AbstractContext");
old_class.detach();
CtMethod old_method = old_class.getDeclaredMethod
(
"getStatus",
new CtClass[]
{
}
);
old_method.setBody("return 0;"); old_method = old_class.getDeclaredMethod
(
"terminate",
new CtClass[]
{
}
);
old_method.setBody(";");
old_class.writeFile(); /**
* patch 掉与网络下载有关的函数,禁止升级
*/
pool = ClassPool.getDefault();
pool.importPackage("com.pnfsoftware.jeb.util.net.Net");
old_class = pool.get("com.pnfsoftware.jeb.util.net.Net");
old_class.detach();
old_method = old_class.getDeclaredMethod (
"downloadBinary",
new CtClass[]
{
pool.get(String.class.getName())
}
);
old_method.setBody("return null;"); old_method = old_class.getDeclaredMethod
(
"httpPost",
new CtClass[]
{
pool.get(String.class.getName()),
pool.get(String.class.getName()),
pool.get(long[].class.getName())
}
);
old_method.setBody("return null;");
old_class.writeFile(); }
}

mips版

类似

最后

可以在jeb的官网下载其他平台的适配包

https://www.pnfsoftware.com/jeb2/support-package

破解 jeb 2.3.7 demo的更多相关文章

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

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

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

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

  3. 十一. 一步步破解JEB 2.0demo版一

    字符串解密算法还愿 jeb.jar为核心功能,所以主要分析这个 1. jar转dex在使用jeb分析 Android\sdk\build-tools\23.0.3 dx.bat --dex --out ...

  4. 一个js破解教程

    很好的一篇文章,先存着以后用到. 为了防止官网更新修复,存一下版本 https://pan.lanzou.com/b220073/ 密码:这是秘密 这篇文章以 JavaScript 为例讲解了破解的一 ...

  5. 十三. JEB破解三

    一.启动环境 JEB 2.0Demo版本启动后出现这样一个界面 当前环境算出的许可证数据 48000000BDEAE192E4CEFC82B34C2AC67F3A85DF5C0E262E421772C ...

  6. 破解Demo

    需要破解的程序界面如下: 需要破解的程序的主要代码如下: void CEasyCrackMeDlg::OnBnClickedButtonOk() { // TODO: 在此添加控件通知处理程序代码 T ...

  7. 微信web开发者工具、破解文件、开发文档和开发Demo下载

    关注,QQ群,微信应用号社区 511389428 下载: Win: https://pan.baidu.com/s/1bHJGEa Mac: https://pan.baidu.com/s/1slhD ...

  8. Java 多线程 破解密码 demo

    功能要求: 具体类: Decrypt  测试类,用来启动破解和日志线程 DecryptThread 破解线程类,用来生成测试的字符串,并暴力破解 LogThread 日志类,将输出每次生成的字符串结果 ...

  9. JEB 无源码调试 以dvm smali字节码方式,Demo尝试

    关于调试器看不到进程,无法attach的问题,网上也有很多教程,基本是修改ro.debugable =1  ,ro.secure = 0 让adbd有root权限 attach到其他进程,涉及到要修改 ...

随机推荐

  1. leetcode-165-比较版本号

    题目描述: 比较两个版本号 version1 和 version2.如果 version1 > version2 返回 1,如果 version1 < version2 返回 -1, 除此 ...

  2. Mac 10.12下iTerm2使用lrzsz上传下载文件

    1.下载脚本: cd /usr/local/bin wget https://raw.githubusercontent.com/mmastrac/iterm2-zmodem/master/iterm ...

  3. OSS和CDN配置使用

    Oss和cdn目的就是: 1 把资源文件和程序分开存储 2 可以通过cdn缓存加速   下面介绍阿里云OSS和CDN如何配制 一  阿里云开通子RAM账户 1  不使用主账号访问OSS,需要创建子RA ...

  4. EJB3 EntityBean中EntityManager的管理类型

    EJB中EntityManager的管理方式有两种:Container-managed EntityManager和Application-managed EntityManager 即容器管理的En ...

  5. Java之IO(一)InputStream和OutputStream

    转载请注明源出处:http://www.cnblogs.com/lighten/p/6964702.html 1.前言 计算机的IO操作一直都是比较重要的一环,IO顾名思义,就是输入输出流.不管是磁盘 ...

  6. spring 接收前台ajax传来的参数的几个方法

    知识补充 JSON.stringify(), 将value(Object,Array,String,Number...)序列化为JSON字符串JSON.parse(), 将JSON数据解析为js原生值 ...

  7. C/C++ -- Gui编程 -- Qt库的使用 -- 使用.ui文件

    1.创建Qt空工程 2.添加Qt设计师界面,无按钮对话框helloqt.ui 3.编辑界面,添加部件,修改对话框对象名为HelloQt <?xml version="1.0" ...

  8. bug、兼容性、适配问题

    1.input   type=“number” 在火狐上限制长度会有问题: 1.maxlength 不管用 2.正则或js匹配限制长度后,给这个input赋值时候末尾三位(有可能是几位,我遇到的是三位 ...

  9. hexo上部署博客到Github失败

    fatal: could not read Username for 'https://github.com': No error 今天在上传博客到搭建到 Github 的个人博客上的时候,已经使用 ...

  10. NoSQL之Redis入门笔记

    Redis 1.Redis介绍 1.1 NoSQL:一类新出现的数据库(not only sql),它的特点 不支持sql语法 存储结构跟传统关系型数据库中的那种关系表完全不同,nosql中存储的数据 ...