前言

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

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. 【xsy1230】 树(tree) 点分治+线段树

    题目大意:有一棵$n$个节点的树,点的标号为$1$到$n$.树中的边有边权.给你$m$个询问,每个询问包含三个参数$l,r,pos$,你要求出标号在$l$到$r$之间的所有点中,到节点$pos$距离最 ...

  2. Etcd安全配置之Basic Auth认证

    <中小团队落地配置中心详解>文章中我们介绍了如何基于Etcd+Confd构建配置中心,最后提到Etcd的安全问题时说了可以使用账号密码认证以达到安全访问的目的,究竟该如何开启认证以及怎么设 ...

  3. onsubmit解惑

    1.onsubmit的位置: onsubmit只存在于html <form>中,js的form中 2.submit与onsubmit的区别 发生顺序:onsubmit -> subm ...

  4. win8.1弹框

    在winform或者wp8中用MessageBox.Show()弹框,但是wp8.1中已经不存在了 private async void btn_Click(object sender, Routed ...

  5. Flume - 快速入门

    关于Flume,官方定义如下: Apache Flume is a distributed, reliable, and available system for efficiently collec ...

  6. FOR XML PATH做为数据表中单列或者多列的字符串拼接的方法,放到一列中去,很好用。

    先看看自己弄得例子,SELECT sName+',',hoppy+','  FROM student2 where hoppy='游泳' FOR XML PATH('')--PATH后面跟的是行标题, ...

  7. C# list的合并

    转自:https://www.cnblogs.com/liguanghui/archive/2011/11/09/2242309.html List<int> listA = new Li ...

  8. swagger 集成asp.net Core2.1

    首先通过nuget 安装   Swashbuckle.AspNetCore 1.在startup.cs 的configureService services.AddAutoMapper(); serv ...

  9. C# Mysql Dapper和原生sql 插入和查询速度比较

    1.表中有三个字段,已经有100多万条数据,每次插入10万条数据 时间单位:秒 秒 Dapper批量Model插入时间:40.6165513,Dapper单条Model插入时间:95.9492972, ...

  10. [日常] PHP设置 include_path 配置选项

    动态设置php.ini中的include_path 配置选项: 两种方式set_include_path($new_include_path)ini_set('include_path',$new_i ...