吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 13037|回复: 10
收起左侧

[Android 原创] JEB 2.0.6 52pojie破解方案简评

  [复制链接]
scz 发表于 2016-7-28 13:10
本帖最后由 scz 于 2016-7-28 13:18 编辑

标题: JEB 2.0.6 52pojie破解方案简评

http://scz.617.cn/misc/201607281139.txt

52pojie上JEB 2.0.6的破解方案没有利用注册机制,修改了多处。好处是不用区分类
型,各种版本都可以照此暴破,全覆盖。看雪上的破解方案利用了注册机,只修改
了4字节整型。两种破解方案都不符合我的美学观点,单就这个目标版本而言,推荐
使用后者。

参看:

维护世界和平 [2016-7-22]
http://www.52pojie.cn/thread-518338-1-1.html

currwin(f8left) [2016-07-22]
http://bbs.pediy.com/showthread.php?t=211744

此处就52pojie破解方案简评之,主要是给JEB破解初学者看的。我不给这种破解方案
背书,下面只有事实罗列,没有各种画外音评价;但我建议初次接触JEB破解的人照
此暴破一遍练手。

我是个好人,此处请点一万次赞,谢谢。

PS,凡是过往给DEMO版补过代码的人,请静默地飘远,永远有多远,你就飘多远。

Licensing.class

--------------------------------------------------------------------------
public static final int getExpirationTimestamp ()
{
    if ( real_license_ts <= 0 )
    {
        return 0;
    }
    /*
     * 原来是31536000(365天)
     */
    return real_license_ts + 268435455;
}
--------------------------------------------------------------------------

AbstractContext$1.class
AbstractContext.class

--------------------------------------------------------------------------
ThreadUtil.start
(   new Runnable()
    {
        public void run()
        {
            try
            {
                for (;;)
                {
                    Thread.sleep( 180000L );

                    int i;

                    if ( ( i = AbstractContext.this.getStatus() ) != 0 )
                    {
                        Thread.sleep( 120000L );
                        /*
                         * 删掉这一行
                         */
                        AbstractContext.terminate();
                    }
                }
                return;
            }
            catch ( InterruptedException localInterruptedException )
            {
            }
        }
    }
);
--------------------------------------------------------------------------

AbstractClientContext.class

--------------------------------------------------------------------------
/*
* 去掉这一行。Lx.class负责Controller相关动作,涉及HTTP请求
*/
import com.pnfsoftware.jebglobal.Lx;

private void checkLicenseKey ()
{
    /*
     * 去掉这一行。这里有2分钟后自动退出的限制。
     */
    tM.yK();
    ...
}

/*
* 清空这个函数。这是针对floating版的。
*/
private void startFloatingClient ()
{
    if
    (
        ( this.pm.getString( "ControllerInterface" ).isEmpty() )
        &&
        ( !setupController() )
    )
    {
        logger.info( S.s( 320 ), new Object[0] );
        terminate();
    }
    /*
     * http://%s:%d/probe
     * 23477/TCP
     */
    Lx  localLx = new Lx( net, getControllerInterface(), getControllerPort() );

    this.connector  = new nM( this, localLx );
    this.connector.setDaemon( true );
    this.connector.start();
}
--------------------------------------------------------------------------

HW.class

--------------------------------------------------------------------------
/*
* 与JEBKEY.RSA、JEBKEY.SF、MANIFEST.MF相关,自校验、防窜改
*/
private static boolean yK ( Class<?> paramClass )
{
    ...
    /*
     * 修改此处,固定返回true
     */
    return bool;
}

private static boolean yK ( Object paramObject, Class<?> paramClass )
{
    ...
    /*
     * 修改此处,固定返回true
     */
    return bool;
}

public static boolean yK ( Class<?>[] paramArrayOfClass )
{
    ...
    /*
     * 修改此处,固定返回true
     */
    return bool;
}

private static boolean yK ( Object paramObject, Class<?>[] paramArrayOfClass )
{
    ...
    /*
     * 修改此处,固定返回true
     */
    return bool;
}
--------------------------------------------------------------------------

Yh.class

--------------------------------------------------------------------------
public void run ()
{
    try
    {
        for (;;)
        {
            Yh      localYh = this;
            int     i       = 0;
            String  str     = null;
            VK      localVK;

            if ( ( localVK = localYh.MQ.yK() ) == null )
            {
                if ( Licensing.isInternetRequired() )
                {
                    /*
                     * 改成0
                     */
                    i   = 2;
                    /*
                     * Your license of JEB requires a direct Internet connection
                     */
                    ...
                }
            }
            else if ( localVK.Lx() == 1 )
            {
                /*
                 * 改成0
                 */
                i   = 3;
                /*
                 * Your license of JEB is not allowed to run
                 */
                ...
            }
            else
            {
                long    l1  = localVK.yK() / 1000L;
                long    l2  = Licensing.getExpirationTimestamp();
                if ( ( l1 > 0L ) && ( l2 > 0L ) && ( l1 > l2 ) )
                {
                    /*
                     * 改成0
                     */
                    i   = 4;
                    /*
                     * Your JEB subscription or trial period has expired
                     */
                    ...
                }
            }
            localYh.aG.setStatus( i );
            localYh.aG.notifyListeners( new JebEvent( J.CoreError, str ) );
            if ( ( i == 0 ? 1 : 0 ) == 0 )
            {
                Thread.sleep( 20000L );
                AbstractContext.terminate();
            }
            Thread.sleep( 1800000L );
        }
        return;
    }
    catch ( InterruptedException localInterruptedException )
    {
        AbstractContext.terminate();
    }
}

private boolean yK ()
{
    int     i   = 0;
    String  str = null;
    VK      localVK;

    if ( ( localVK = this.MQ.yK() ) == null )
    {
        if ( Licensing.isInternetRequired() )
        {
            /*
             * 改成0
             */
            i   = 2;
            /*
             * Your license of JEB requires a direct Internet connection
             */
            ...
        }
    }
    else if ( localVK.Lx() == 1 )
    {
        /*
         * 改成0
         */
        i   = 3;
        /*
         * Your license of JEB is not allowed to run
         */
        ...
    }
    else
    {
        long    l1  = localVK.yK() / 1000L;
        long    l2  = Licensing.getExpirationTimestamp();
        if ( ( l1 > 0L ) && ( l2 > 0L ) && ( l1 > l2 ) )
        {
            /*
             * 改成0
             */
            i   = 4;
            /*
             * Your JEB subscription or trial period has expired
             */
            ...
        }
    }
    if ( i == 0 )
    {
        return true;
    }
    this.aG.setStatus( i );
    this.aG.notifyListeners( new JebEvent( J.CoreError, str ) );
    return false;
}
--------------------------------------------------------------------------

vX.class

--------------------------------------------------------------------------
/*
* 在检查"License key"。将所有返回false的地方改成返回true。
*/
public final boolean yK ( String paramString, int[] paramArrayOfInt )
{
    ...
}
--------------------------------------------------------------------------

nA.class

--------------------------------------------------------------------------
/*
* sleep()以毫秒为单位指定时长,如无异常抛出就调exit(0)结束当前进程。
*/
public void run ()
{
    try
    {
        /*
         * 120秒、2分钟
         *
         * 他把1000改成-21528
         */
        Thread.sleep( this.yK * 1000 );
    }
    catch ( InterruptedException localInterruptedException )
    {
        /*
         * 他删掉了return
         */
        return;
    }
    /*
     * 他删掉了exit()
     */
    System.exit( 0 );
}
--------------------------------------------------------------------------

Ka.class

--------------------------------------------------------------------------
/*
* 这是针对floating版的。
*/
public void start () throws JebException
{
    super.start();

    /*
     * 把中间这一段全删了
     */

    /*
    yK.info( S.s( 480 ), new Object[0] );
    if ( Zw.yK().Lx() )
    {
        yK.info( S.s( 473 ), new Object[0] );
        terminate();
    }

    String  str = getControllerInterface();
    int     i   = getControllerPort();

    Zw.yK().yK( i );
    yK( str, i );
    */

    super.stop();
}

/*
* 清空这个函数
*/
private void Lx ()
{
    int i;

    if ( ( i = ping( true ) ) == -2 )
    {
        yK.info( S.s( 79 ), new Object[] { "software@pnfsoftware.com" } );
        return;
    }
    if ( i == 2 )
    {
        yK.info( S.s( 80 ), new Object[0] );
    }
}
--------------------------------------------------------------------------


免费评分

参与人数 10威望 +2 吾爱币 +1 热心值 +10 收起 理由
simonliyu + 1 + 1 谢谢@Thanks!
shujia2112 + 1 用心讨论,共获提升!
lawlier + 1 谢谢@Thanks!
独行风云 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
miracles + 1 用心讨论,共获提升!
oriwqz + 1 谢谢@Thanks!
卷卷de小白 + 1 热心回复!
2crack + 1 谢谢@Thanks!
qtfreet00 + 2 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
jaffa + 1 热心回复!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

KaQqi 发表于 2016-7-28 13:31
这么直接复制代码太难看,你可以用论坛插入代码功能。
924410377 发表于 2016-7-28 16:34 来自手机
52pojieyoo 发表于 2016-7-28 17:26
fireworld 发表于 2016-7-29 08:21
哈哈 txt 模式看着略累
独行风云 发表于 2016-7-31 11:03
楼主您辛苦了,感谢分享.
孤独的光头强 发表于 2016-8-3 12:38
谢谢楼主分享!!!
java_shr 发表于 2016-8-7 09:27 来自手机
感谢楼主如此详细的好文
runapp 发表于 2016-8-9 16:39
这个厉害,作者很有耐心啊
qindye001 发表于 2016-10-1 09:35 来自手机
真心好,学习了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-16 23:22

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表