前言

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

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. Kubernetes使用GlusterFS实现数据持久化

    k8s中部署有状态应用等需要持久化数据的应用,必不可少得用存储,k8s支持很多中存储方案,我司目前使用的存储有glusterfs(分为容器化和裸机方式).nfs供应用选用,本次就简单实战下gluste ...

  2. EJB3 EntityBean中EntityManager的管理类型

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

  3. Java之集合(二十)LinkedBlockingQueue

    转载请注明源出处:http://www.cnblogs.com/lighten/p/7503678.html 1.前言 本章介绍阻塞队列LinkedBlockingQueue,这是一个基于链表的可选长 ...

  4. 解析ASP.NET WebForm和Mvc开发的区别 分类: ASP.NET 2013-12-29 01:59 11738人阅读 评论(5) 收藏

    因为以前主要是做WebFrom开发,对MVC开发并没有太深入的了解.自从来到创新工场的新团队后,用的技术都是自己以前没有接触过的,比如:MVC 和EF还有就是WCF,压力一直很大.在很多问题都是不清楚 ...

  5. visual studio 2008 快捷键

    Ctrl+m+Crtr+o折叠所有大纲Ctrl+M+Crtr+P: 停止大纲显示Ctrl+K+Crtr+C: 注释选定内容Ctrl+K+Crtr+U: 取消选定注释内容Ctrl+J : 列出成员 智能 ...

  6. Inno Setup设置在安装Finished页面,点击finish后打开网页

    在安装的最后一个页面FinishPage中点击Finished然后打开一个网页 这个功能貌似很简单,不就是在点击finish按钮给它绑定事件,问题立马解决. 在普通的桌面应用程序开发中的确是这样做的, ...

  7. Android应用博客目录

    应用有很多,开个博客都放进来方便查找,也方便修改 1 语言类: 1.1 JAVA 基础语言知识JAVA Collection与Collections,Array与Arrays的区别 JAVA练手--S ...

  8. OpenDigg前端开源项目月报201704

    由OpenDigg 出品的前端开源项目月报第一期来啦.我们的前端开源月报集合了OpenDigg一个月来新收录的优质前端开源项目,方便前端开发人员便捷的找到自己需要的项目工具. reactide Rea ...

  9. [转]Creating a custom ribbon for Outlook 2013, 2010 and toolbar for Outlook 2007, 2003 – C# sample

    本文转自:https://www.add-in-express.com/creating-addins-blog/2013/05/21/outlook-ui-customization-ribbons ...

  10. 关于phonegap-plugin-contentsync插件

    插件介绍: 作用:下载并缓存远程托管的内容. 地址:https://github.com/phonegap/phonegap-plugin-contentsync 插件支持的平台:Android.IO ...