先说一句,不是我四处转载,是有个兄弟在微博上问能不能来"吾爱破解"直接分享一份,
我没有帐号,他给了一个邀请码。所以我就注册后在这里发一下。其实我也挺奇怪的,
因为我分享的时候一般都是HTTP直接可下,无需Email、无需帐号啥啥的,理论上在不
在这里分享,大家都能直接下载,不懂。
2015-07-25 16:36 scz
关于JEB破解,我在看雪上发过两篇:
发现Guest好像不能在看雪下载附件,又在网盘上放了一份:
有人问我有没有时间破解1.5.201503150(demo),他好像从哪儿下载了一份。我没时
间,也就没找他要这个版本,我不占人便宜的。后来再没有关注过JEB。
前段时间意大利的黑产公司Hacking Team被黑吃黑,听说被人偷出来的包里有正版
VMProtect、ThemIDA,翻拣时无意中发现有1.5.201408040(full)版JEB。
full版的功能代码本身就是全的,只需要完成注册即可。破解demo版时,假设被调函
数的功能代码在binary中,只是被简单屏蔽,这种情况下,可以补充主调代码,使得
demo版变成full版。如果demo版的binary中完全没有被调函数的功能代码,那怎么破
解也不能变成full版。
最近一直在跟可能存在的一群APT程序员对抗,基本没时间看JEB的破解。周末想了想,
明日复明日、明日何其多、我生待明日、万事成蹉跎。一咬牙,花了两小时突击逆向
分析了一下HT的1.5.201408040(full),写keygen的思路切实可行。
JEB的注册机不是我开发的。最初是看雪的quard分享的,然后看雪的wangshy点了一
下要点,最后我跳出来狗尾续貂,提供可用的"1.5.201408040(full) keygen"。
tnttools@pediy的一句话:
献给那些永远充满着好奇心的人们
--------------------------------------------------------------------------
/*
* Copyleft (c) 2014, 2025
* -----------------------------------------------------------------------
* Author : quard@pediy
* : wangshy@pediy
* Maintain : scz
* Version : 1.5.201408040(full)
* Compile : javac -g keygen.java
* Run : java keygen
* :
* Create : 2014-04-23 17:01
* Modify : 2015-07-25 17:00
* -----------------------------------------------------------------------
* The only thing they can't take from us are our minds. !H
*/
--------------------------------------------------------------------------
最简执行方案:
$ java keygen
License key : XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
注册成功后,用Wireshark抓包,得到1.5.201503152(full)版的下载链接,但其只有
4周有效期,现在已经无法下载。
(解压密码: dsfvdbvgummsyxvj)
所以,你们幻想中的1.5.201503152(full),我也没有。不知有没有愿意分享的?
此外,JEB2 DEMO版已出:
http://jebbuilds2.s3.amazonaws.com/jeb2demo/jeb2demo.zip
JEB2 DEMO版限制:
--------------------------------------------------------------------------
1. A 40-day demo trial period
2. Decompile between 80% and 90% of all methods
3. Copy/paste is disabled
4. Saving functionalities are disabled
5. All API access are disabled
6. Running time of a session is limited
--------------------------------------------------------------------------
1. 40天试用期
2. 部分方法(10%~20%)不予反编译
3. 不能复制文字
4. 不能保存结果数据
5. 不懂,是不是跟这句话相关:
Use JEB's API to write Python scripts and plugins
6. 运行一会儿(可能是1小时)后自动关闭
--------------------------------------------------------------------------
有时间了再来破解JEB2 DEMO版,未必可行。
对了,我从未用过JEB去破解Android软件,因为我完全不懂Android开发。
一般情况下,对于不相熟的人来说,我是尽最大可能分享,能分享的、愿分享的就直
接分享了,不搞什么"感兴趣的可以邮件联系我"之类的事。回过头来,没有直接分享
的,那就是不能、不愿分享的呗,这种私下找我也不会给。顺便说一句,破解与我而
言只是个人兴趣,实不擅长,诚不诚的都勿挠。有就赚,无则命。
我只是一名程序员。
/*
* Copyleft (c) 2014, 2025
* -----------------------------------------------------------------------
* Author : quard@pediy
* : wangshy@pediy
* Maintain : scz
* Version : 1.5.201408040(full)
* Compile : javac -g keygen.java
* Run : java keygen
* :
* Create : 2014-04-23 17:01
* Modify : 2015-07-25 17:00
* -----------------------------------------------------------------------
* The only thing they can't take from us are our minds. !H
*/
[Java] 纯文本查看 复制代码 import java.io.*;
import java.lang.Runtime;
import java.util.Scanner;
import java.nio.*;
import java.security.*;
import java.math.*;
class keygen
{
private static String License_GetSerialNumber ()
{
String str1 = null;
Runtime localRuntime = Runtime.getRuntime();
Process localProcess;
try
{
String[] localObject1 = { "wmic", "bios", "get", "serialnumber" };
localProcess = localRuntime.exec( localObject1 );
}
catch ( IOException localIOException1 )
{
return( null );
}
OutputStream localOutputStream = localProcess.getOutputStream();
InputStream localInputStream = localProcess.getInputStream();
try
{
localOutputStream.close();
}
catch ( IOException localIOException2 )
{
return( null );
}
Scanner localObject1 = new Scanner( localInputStream );
try
{
String str2 = "SerialNumber";
while ( localObject1.hasNext() )
{
String str3 = localObject1.next();
if ( str2.equals( str3 ) )
{
str1 = localObject1.next().trim();
break;
}
} /* end of while */
localObject1.close();
}
finally
{
localObject1.close();
}
return( str1 );
} /* end of License_GetSerialNumber */
private static int License_sum ( int paramInt )
{
int i = 0;
while ( paramInt > 0 )
{
i += ( paramInt & 0xF );
paramInt >>= 4;
} /* end of while */
return( i % 10 );
} /* end of License_sum */
private static long License_GetMachineId ( String SerialNumber )
{
try
{
MessageDigest localMessageDigest = MessageDigest.getInstance( "MD5" );
localMessageDigest.update( SerialNumber.getBytes() );
byte[] arrayOfByte = localMessageDigest.digest();
ByteBuffer localByteBuffer = ByteBuffer.wrap( arrayOfByte );
localByteBuffer.order( ByteOrder.LITTLE_ENDIAN );
return( localByteBuffer.getLong() & 0xFFFFFFFF );
}
catch ( NoSuchAlgorithmException localNoSuchAlgorithmException )
{
throw new RuntimeException( localNoSuchAlgorithmException );
}
} /* end of License_GetMachineId */
private static long License_GetMachineId_2 ( long MachineId )
{
int i = ( int )( MachineId & 0xFFFFFFFF );
int j = ( int )( MachineId >> 32 & 0xFFFFFFFF );
int n = i + 376273029 + 287454020 & 0xFFFFFFFF;
int i1 = j - 52416167 + 1432778632 & 0x7FFFFFFF;
ByteBuffer buf = ByteBuffer.allocateDirect( 8 );
buf.putInt( i1 );
buf.putInt( n );
buf.rewind();
return( buf.getLong() );
} /* end of License_GetMachineId_2 */
private static String License_GenerateKey ( long MachineId, long time )
{
long l = License_GetMachineId_2( MachineId );
int t = ( int )time ^ 0x56739ACD;
return String.format( "%dZ%d%d", l, t, License_sum( t ) );
} /* end of License_GenerateKey */
public static void main ( String[] args )
{
String SerialNumber = License_GetSerialNumber();
long MachineId = License_GetMachineId( SerialNumber );
long time = System.currentTimeMillis() / 1000L + 86400 * 365 * 3 - 86400 * 13;
System.out.println("License key : " + License_GenerateKey( MachineId, time ) );
return;
} /* end of main */
} /* end of class keygen */
我提供的JEB Keygen是Windows版的,如果你在Linux或Mac OS X上,请自行修改License_GetSerialNumber()
这个函数。此时,关于如何找到SerialNumber,请参看我写的这篇:
用Javassis分析jeb.jar
http://scz.617.cn/misc/201407301745.txt
话说我曾经授人以渔过。
|