目标:破解jeb-pro-3.19.1.202005071620
版本的时间限制,绕过自身完整性校验。
代码如下:
将生成的class文件替换原来jeb.jar
中的文件即可,并且删除MATA-INF
目录下的JEBKEY.RSA
和JEBKEY.SF
,并修改了MANIFEST.MF
文件,至此我才终于开始步入正轨
MANIFEST.MF
文件内容如下:
关于jeb-demo-4.1.0
版本的破解,最主要的参照就是JEB 3.24 Anti-BLM Edition by DimitarSerg
版本。
经过一定的测试,可以直接使用IDEA来编写java文件 测试了几款反编译工具(JD-GUI、IDEA)效果都不太理想,所以可能还是得手撸代码了。参考文章
这里列举一下简要步骤,感兴趣的师傅可以自行尝试。 1.文件比对 2.重写功能函数 3.测试
下载地址如下:
最近4.2.0版本又更新了,后续在进行更新。
2021.07.02更新
感谢@nevinhappy师傅的提示,CE版和DEMO版本结合起来功能基本上和PRO版本没有差别(虽然没用过PRO-。-)
此版本基于DEMO版,并吸取了CE版的大量代码
如图:
注意:4.x版本所保存的工程文件无法使用3.x版本打开。
官方计划在2021年出RISC-V Decompiler
和Atmel AVR 8-bit Decompiler
,一起期待一下吧。
PS: 话说有师傅知道4.2.0反编译APK的时候,怎么加载python脚本吗?,我按照官方的做法,没法加载,提示no module DOptSamplePython
,可我已经将DOptSamplePython.py
放到coreplugins/scripts
文件夹中了,用CE版本也是如此。
import
javassist.
*
;
import
java.io.IOException;
public
class
Main {
public static final
int
FLAG_DEBUG
=
1
;
public static final
int
FLAG_FULL
=
2
;
public static final
int
FLAG_FLOATING
=
4
;
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_JEB2
=
128
;
public static void main(String[] args) throws NotFoundException, CannotCompileException, IOException {
ClassPool pool
=
ClassPool.getDefault();
String classPatch
=
"/Users/*/IdeaProjects/crack_jeb_pro/lib/jeb-3.19.jar"
;
pool.insertClassPath(classPatch);
/
/
修改许可证时间
CtClass ctClass
=
pool.get(
"com.pnfsoftware.jeb.client.Licensing"
);
CtMethod ctMethod
=
ctClass.getDeclaredMethod(
"getExpirationTimestamp"
);
ctMethod.setBody(
"return 2000000000;"
);
ctClass.writeFile(
"/Users/*/Public/"
);
/
/
修改 prepareCheckLicenseKey 函数
ctClass
=
pool.get(
"com.pnfsoftware.jeb.client.AbstractClientContext"
);
ctMethod
=
ctClass.getDeclaredMethod(
"prepareCheckLicenseKey"
);
ctMethod.setBody(
"return ;"
);
ctClass.writeFile(
"/Users/*/IdeaProjects/crack_jeb_pro/out/"
);
/
/
修改 com.pnfsoftware.jebglobal.r.RF 函数 总共有四处
ctClass
=
pool.get(
"com.pnfsoftware.jebglobal.r"
);
ctMethod
=
ctClass.getDeclaredMethod
(
"RF"
,
new CtClass[]
{
pool.get(
"java.lang.Class"
)
}
);
ctMethod.setBody(
"return true;"
);
ctMethod
=
ctClass.getDeclaredMethod
(
"RF"
,
new CtClass[]
{
pool.get(
"java.lang.Object"
),
pool.get(
"java.lang.Class"
)
}
);
ctMethod.setBody(
"return true;"
);
ctMethod
=
ctClass.getDeclaredMethod
(
"RF"
,
new CtClass[]
{
pool.get(
"java.lang.Class[]"
)
}
);
ctMethod.setBody(
"return true;"
);
ctMethod
=
ctClass.getDeclaredMethod
(
"RF"
,
new CtClass[]
{
pool.get(
"java.lang.Object"
),
pool.get(
"java.lang.Class[]"
)
}
);
ctMethod.setBody(
"return true;"
);
ctClass.writeFile(
"/Users/*/IdeaProjects/crack_jeb_pro/out/"
);
}
}
import
javassist.
*
;
import
java.io.IOException;
public
class
Main {
public static final
int
FLAG_DEBUG
=
1
;
public static final
int
FLAG_FULL
=
2
;
public static final
int
FLAG_FLOATING
=
4
;
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_JEB2
=
128
;
public static void main(String[] args) throws NotFoundException, CannotCompileException, IOException {
ClassPool pool
=
ClassPool.getDefault();
String classPatch
=
"/Users/*/IdeaProjects/crack_jeb_pro/lib/jeb-3.19.jar"
;
pool.insertClassPath(classPatch);
/
/
修改许可证时间
CtClass ctClass
=
pool.get(
"com.pnfsoftware.jeb.client.Licensing"
);
CtMethod ctMethod
=
ctClass.getDeclaredMethod(
"getExpirationTimestamp"
);
ctMethod.setBody(
"return 2000000000;"
);
ctClass.writeFile(
"/Users/*/Public/"
);
/
/
修改 prepareCheckLicenseKey 函数
ctClass
=
pool.get(
"com.pnfsoftware.jeb.client.AbstractClientContext"
);
ctMethod
=
ctClass.getDeclaredMethod(
"prepareCheckLicenseKey"
);
ctMethod.setBody(
"return ;"
);
ctClass.writeFile(
"/Users/*/IdeaProjects/crack_jeb_pro/out/"
);
/
/
修改 com.pnfsoftware.jebglobal.r.RF 函数 总共有四处
ctClass
=
pool.get(
"com.pnfsoftware.jebglobal.r"
);
ctMethod
=
ctClass.getDeclaredMethod
(
"RF"
,
new CtClass[]
{
pool.get(
"java.lang.Class"
)
}
);
ctMethod.setBody(
"return true;"
);
ctMethod
=
ctClass.getDeclaredMethod
(
"RF"
,
new CtClass[]
{
pool.get(
"java.lang.Object"
),
pool.get(
"java.lang.Class"
)
}
);
ctMethod.setBody(
"return true;"
);
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
最后于 2021-7-2 22:50
被cow0o0编辑
,原因: 更新jeb-4.2.0-demo-crack