吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 7373|回复: 8
收起左侧

[Android 原创] AndFTP 3.5 注册算法还原

[复制链接]
mmmmar 发表于 2016-7-20 21:09
本帖最后由 mmmmar 于 2016-7-20 21:11 编辑

昨天看到了
AndFTP 3.5 破解教程
这个帖子,发现里边的软件要输入激活码,今天就尝试了一下,弄了一整天。现在把还原的算法分分享一下,有兴趣的友友可以自己反编译对照一下
[Java] 纯文本查看 复制代码
package com.company;

import javax.crypto.*;
import javax.crypto.spec.PBEKeySpec;
import javax.crypto.spec.PBEParameterSpec;
import java.security.InvalidAlgorithmParameterException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.security.spec.InvalidKeySpecException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Main {

    public static void main(String[] args) {
        //输入的数据只能是数字和字母组合
        String str = "1122aabb1122aabb1122aabb1122aabb1122aabb1122aabb";
        String encodeStr = new Main().util_c_q(str);
        if(new Main().util_c_c(encodeStr)){
            System.out.println("yes");
        }else {
            System.out.println("No");
        }
    }

    String util_c_q(String str){
        str = "{"+str+"}";
        int a = str.length()-1;
        String s = m_c(str.substring(1,a));
        System.out.println(s);
        return s;
    }

    String m_c(String strn){
        try {
            byte[] by = m_b(strn);
            logBytes(by);
            int b = 0;
            byte[] by2 =  m_b(null,by,b,by.length);
            logBytes(by2);
            return new String(by2,"ISO-8859-1");
        } catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println("error");
        return "";
    }


    byte[] m_b(char[] ch,byte[] by,int a,int length) throws NoSuchAlgorithmException, InvalidKeySpecException, NoSuchPaddingException, InvalidAlgorithmParameterException, InvalidKeyException, BadPaddingException, IllegalBlockSizeException {
        if(by == null)
            return null;
        if(ch == null)
            ch = new char[]{'P','B','E','.','c','l','a','s','s'};
        PBEKeySpec spec = new PBEKeySpec(ch);
        SecretKeyFactory factory = SecretKeyFactory.getInstance("PBEWithMD5AndDES");
        SecretKey key = factory.generateSecret(spec);
        Cipher cipher = Cipher.getInstance("PBEWithMD5AndDES");
        //
        byte[] temp = {-57,115,33,-116,126,-56,-18,-103};
        PBEParameterSpec pbeParameterSpec = new PBEParameterSpec(temp,30);
        cipher.init(2,key,pbeParameterSpec);
        return cipher.doFinal(by,a,length);
    }

    boolean util_c_c(String str){
        if(str == null)
            return false;
        if(str.length()<=0)
            return false;
        String cm = "^[\\w\\.-]+@([\\w\\-]+\\.)+[A-Z]{2,4}$";
        Pattern pattern = Pattern.compile(cm,Pattern.CASE_INSENSITIVE);
        Matcher matcher = pattern.matcher(str);
        return matcher.matches();
    }
    byte[] m_b(String str){
        int a = str.length();
        //a必须为偶数
        int b = a/2;
        byte[] by = new byte[b];
        for(int v1 = 0;v1<b;v1++){
            int c = v1*2;
            int d = v1*2+2;
            String v3 = str.substring(c,d);
            int v =Integer.parseInt(v3,16);
            v = v & 0xff;
            byte w = (byte)v;
            by[v1] = w;
        }
        return by;
    }

    public static void logBytes(byte s[]){
        StringBuilder builder = new StringBuilder();
        for (int i=0;i<s.length;++i){
            builder.append(" ").append(s[i]);
        }
        System.out.println("bytes:"+builder.toString());
    }

    public static void logChars(char s[]){
        StringBuilder builder = new StringBuilder();
        for (int i=0;i<s.length;++i){
            builder.append(" ").append(s[i]);
        }
        System.out.println("chars:"+builder.toString());
    }
}

util_c_q 是Llysesoft/transfer/client/util/c;的q方法
m_b是Llysesoft/transfer/client/util/m;的b方法
以此类推。

里边的那些数组和字符串是打log弄出来的。
整体就是把输入的激活码加密,然后和一个邮箱的正则表达式匹配,看能不能匹配上。

弄了一整天,但是tm这个软件本来的注册算法在加密时就会报错,然后就成了只要输入的激活码符合那个正则表达式就行。。。。
不知道是不是上边那个帖子里的样本修改过。。。。激活码输入框里的提示的是只能输字母和数字。。。

免费评分

参与人数 4威望 +1 吾爱币 +1 热心值 +4 收起 理由
dryzh + 1 + 1 用心讨论,共获提升!
liefeng44 + 1 已答复!
wnagzihxain + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
林海山河 + 1 我很赞同!

查看全部评分

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

liefeng44 发表于 2016-7-21 10:01
感谢发表心得,这个垃圾软件
黑狼战神 发表于 2016-7-21 11:04
Javajsc 发表于 2016-7-27 13:11
那个正则表达式是用来匹配输入的是否是邮箱,随便输入一个邮箱就激活了(4.4的版本是这样的,3.5应该也是)
 楼主| mmmmar 发表于 2016-7-27 18:20
Javajsc 发表于 2016-7-27 13:11
那个正则表达式是用来匹配输入的是否是邮箱,随便输入一个邮箱就激活了(4.4的版本是这样的,3.5应该也是)

它有输入加密的,但是加密报错,加密方法返回null,然后就变成了匹配输入了
DK0085 发表于 2016-8-19 09:03
感谢分享
xmanweb 发表于 2017-6-26 20:02
Javajsc 发表于 2016-7-27 13:11
那个正则表达式是用来匹配输入的是否是邮箱,随便输入一个邮箱就激活了(4.4的版本是这样的,3.5应该也是)

真是如您所说,自己随便输个邮箱就激活了。。。
另外打开软件就提示要升级key到4.0的对话框您是怎么解决的?
我是设置为可取消对话框来跳过了,有别的更好的方法么?
dryzh 发表于 2017-7-21 17:34
楼主有空玩玩最新版呗!
http://www.lysesoft.com/products/andftp/index.html
金美珍 发表于 2018-6-17 21:47 来自手机
其实修改一个字符串里破解了没必要这么麻烦
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-24 22:36

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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