首页
社区
课程
招聘
[旧帖] [求助]什么算法来的? 0.00雪花
发表于: 2014-10-3 23:04 1116

[旧帖] [求助]什么算法来的? 0.00雪花

2014-10-3 23:04
1116
import java.io.ByteArrayInputStream;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.math.BigInteger;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Ver {
        private int _$9 = 0;
        private int _$8 = 0;
        private String _$7 = null;
        private String _$6 = null;
        private int _$5 = 0;
        private int _$4 = 0;
        private long _$3 = 0L;
        private int _$2 = 0;
        private int _$1 = 0;

        public void load(File paramFile) throws FileNotFoundException {
                _$1(paramFile);
        }

        private void _$1(File paramFile)
        throws FileNotFoundException {
                if ((paramFile == null) || (!paramFile.exists())) {
                        throw new FileNotFoundException("Can't find the file.");
                }
                try {
                        File localFile = paramFile;
                        byte[]  localObject1 = new byte[ (int) localFile.length()];//文件长度[9, -31, 9, 49, -3, 12, -113, 7, 101, 20, 25, 42, 59, 117, -48, -117, 25, -59, 106, 36, -42, -76, 56, -78, 59, 113, 114, -105, -98, 85, -77, 82, -16, 78, 86, -86, 30, 28, -2, 39, 83, -21, 0, 32, 86, -71, -124, -114, 122, 64, -95, -79, -89, -17, -71, -35, -95, -10, 34, 103, 56, 95, 17, -70, 89, -1, -107, -22, 61, -86, 77, -31, -73, 112, 9, 44, -49, -125, 53, -9, 76, 61, 115, -94, 90, -21, 65, -59, 122, -76, -36, -91, 88, -1, 51, -90, -90, -118, 99, -128, 17, -109, -49, -41, -28, 111, 98, -19, -127, 86, -37, -87, 76, 88, 45, -93, 5, 95, -38, -111, 16, -49, 30, -72, -54, 3, 105, 101, 55, 19, 11, -29, -115, -41, -19, -69, 111, -27, -64, 96, -43, 71, -1, 82, 106, -116, -45, 51, 87, 17, -12, 118, -111, 125, -108, -112, 56, -36, -117, 113, 120, -115, 127, 1, 106, -49, 9, 48, -12, 38, 81, 20, -69, 44, 37, 81, 104, 30, -89, -71, 69, 63, -121, -12, 17, 108, -52, 37, 57, 125, -117, -84, -121, 19, -43, 73, -100, 99, -5, -17, 100, -84, -121, -69, -3, 19, -69, -101, -25, -127, -84, 124, 21, 113, 27, 48, -76, 76, 13, -19, -127, -103, -1, 17, -85, 46, -76, 114, 30, 40, -78, -62, 86, 59, -34, -89, 110, -58, -58, 14, -71, 21, -80, -33, 98, 4, -50, 121, -83, -21, -121, 50, -89, -51, 89, 117, 12, 119, -87, 88, -84, 19, -65, 51, -40, -61, -29, -51, -35, -82, 54, 51, -39, 126, 82, -70, 62, -128, 109, -121, -38, 116, 115, 71, 115, 74, -74, -96, -95, -48, -1, -92, 28, 36, -50, -47, 20, -115, 116, -20, 80, 75, 74, 27, 14, 97, 99, 102, 86, -51, -55, -38, 127, -20, 10, 52, -5, 126, 6, 0]
                        Object localObject2 = new FileInputStream(localFile);
                        ((FileInputStream) localObject2).read((byte[]) localObject1);//读取文件
                        ((FileInputStream) localObject2).close();
                        byte[] localObject3 = {0, 65, 0, 3, 0, -113, -115, -38, -106, -26, -14, -81, 3, -112, -94, -22, 89, 37, 77, -6, 39, -29, 67, -82, -44, -103, 47, 21, 38, 71, -89, 72, 2, 89, -49, -19, 1, 110, 74, 68, -117, -28, 123, 107, 107, 92, 105, -5, 59, -23, 11, -107, -27, 36, -85, -22, 101, 82, -40, -108, 15, -103, 61, -39, 52, 28, 57, -28, 101, 1, 0, 1};
                        int i = (localObject3[0] & 0xFF) << 8 | localObject3[1] & 0xFF;//65
                        int j = (localObject3[2] & 0xFF) << 8 | localObject3[3] & 0xFF;//3
                        byte[] arrayOfByte2 = new byte[i];
                        //[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
                        byte[] arrayOfByte3 = new byte[j];
                        //[0, 0, 0]
                        System.arraycopy(localObject3, 4, arrayOfByte2, 0, i);
                        System.arraycopy(localObject3, 4 + i, arrayOfByte3, 0, j);
                        Object localObject4 = new BigInteger(1, arrayOfByte2);
                        //7518539155220091912091271151607171597180694736625285327722048871200906719085585230683358494079624676176505503892717301692809619039513418622614148430292069
                        Object localObject5 = new BigInteger(1, arrayOfByte3);
                        //65537
                        int m = (((BigInteger) localObject4).bitLength() + 7) / 8;//64
                        int n = m;//64
                        int i1 = m - 1;//63
                        int i2 = (localObject1.length + n - 1) / n * i1;//315
                        byte[] arrayOfByte1 = new byte[i2];//315
                        int i3 = 0;
                        for (int i4 = 0; i3 < localObject1.length;i4 += i1)
                        {
                                byte[] arrayOfByte4 = new byte[n];
                                int i5 = localObject1.length - i3;
                                if (i5 > n)
                                        System.arraycopy(localObject1, i3, arrayOfByte4, 0, n);
                                else
                                        System.arraycopy(localObject1, i3, arrayOfByte4, 0, i5);
                                    BigInteger localBigInteger1 = new BigInteger(1, arrayOfByte4);
//517407651520686600069155755378994573441292672595621585940102495302888392538492833013031513124330161658548374683634860721799927620216002436239992782000570
                                    BigInteger localBigInteger2 = localBigInteger1.modPow((BigInteger) localObject5, (BigInteger) localObject4);
//9976971778203722047684271002989477961883238883022141389684090131454479278822236304571083126853114419726057531570923733312166778452205013214592459886091                                    
                                    arrayOfByte4 = localBigInteger2.toByteArray();
//[48, -60, 52, 63, 1, -44, -69, -93, 0, -96, -98, -92, 123, 83, -12, 108, 110, -2, 0, 108, -20, 30, -111, -45, 112, -38, -1, -118, -13, -66, -49, 17, -27, 116, -124, -79, 93, 30, 83, -67, 0, 94, 100, 8, 112, 47, 0, -34, 127, -87, 1, -18, 100, -4, 29, -103, -118, 72, 77, -23, 0, 78, 11]
                                if (arrayOfByte4.length <= i1)
                                        System.arraycopy(arrayOfByte4, 0, arrayOfByte1, i4 + i1 - arrayOfByte4.length, arrayOfByte4.length);
                                else
                                        System.arraycopy(arrayOfByte4, arrayOfByte4.length - i1, arrayOfByte1, i4, i1);
                                i3 += n;
                        }
                        i = arrayOfByte1[0] & 0xFF;//65
                        j = arrayOfByte1[1] & 0xFF;//3
                        arrayOfByte2 = new byte[i];
                        for (int k = 0; k < i; k++) {
                                arrayOfByte2[k] = arrayOfByte1[j];
                                j = arrayOfByte1[(j + 1)] & 0xFF;
                        }
                        ByteArrayInputStream localByteArrayInputStream = new ByteArrayInputStream(arrayOfByte2);
                        localObject4 = new DataInputStream(localByteArrayInputStream);
                        this._$8 = ((DataInputStream) localObject4).readShort();//CPU
                        this._$7 = ((DataInputStream) localObject4).readUTF();//注册用户
                        this._$6 = ((DataInputStream) localObject4).readUTF();//版本
                        if (this._$8 >= 3) {
                                this._$5 = ((DataInputStream) localObject4).readInt();//0
                                this._$4 = ((DataInputStream) localObject4).readInt();//用户数
                                this._$3 = ((DataInputStream) localObject4).readLong();//1387728000000
                                this._$2 = ((DataInputStream) localObject4).readInt();//365
                                this._$1 = ((DataInputStream) localObject4).readInt();//-1
                        } else {
                                localObject5 = ((DataInputStream) localObject4).readUTF();
                                if (((String) localObject5).endsWith("CPU")) this._$5 = Integer.parseInt(((String) localObject5).substring(0, ((String) localObject5).length() - 3));
                                else this._$5 = Integer.parseInt((String) localObject5);
                                this._$3 = ((DataInputStream) localObject4).readLong();
                                this._$1 = ((DataInputStream) localObject4).readInt();
                                if (this._$1 == -1) {
                                        this._$4 = 5;
                                        this._$2 = 15;
                                } else {
                                        this._$4 = 0;
                                        this._$2 = 0;
                                }
                        }
                        this._$9 = this._$1;//IP

                        if ((this._$8 == 2) || (this._$8 == 3)) {
                                String localObject13 = (this._$1 >>> 24 & 0xFF) + "." + (this._$1 >>> 16 & 0xFF) + "." + (this._$1 >>> 8 & 0xFF) + "." + (this._$1 >>> 0 & 0xFF);
//255.255.255.255
                                localObject2 = InetAddress.getByName( localObject13);//255.255.255.255
                                ServerSocket localObject31 = new ServerSocket(0, 1, (InetAddress) localObject2);
                                ((ServerSocket) localObject31).close();

                                this._$9 = 0;
                        }
                } catch (Throwable localThrowable) {
                        if (this._$1 == -1) {//365转成MILLIS
                                long l = System.currentTimeMillis() - this._$3;

                                if ((l >= 0L) && (l < this._$2 * 86400L * 1000L)) this._$9 = 0;
                                else if ((this._$4 > 0) && (this._$4 < 6)) {
                                        this._$9 = 0;
                                } else this._$9 = 2130706434;
                        }
                }
        }

        public boolean $_1() {
                return this._$9 == 0;
        }

        public String $_2() {
                if ($_1()) {
                        return "Granted.";
                }
                if (this._$9 == 2130706433) return "A valid file";
                if (this._$9 == 2130706434) {
                        return "Out of date";
                }
                String str = (this._$1 >>> 24 & 0xFF) + "." + (this._$1 >>> 16 & 0xFF) + "." + (this._$1 >>> 8 & 0xFF) + "." + (this._$1 >>> 0 & 0xFF);

                return "Not granted for " + str;
        }

        public int $_3() {
                return this._$8;
        }

        public String $_4() {
                return this._$7;
        }

        public String $_5() {
                return this._$6;
        }

        public int $_6() {
                return this._$5;
        }

        public int $_7() {
                return this._$4;
        }

        public long $_8() {
                return this._$3;
        }

        public int $_9() {
                return this._$2;
        }

        public String $_10() {
                Date localDate1 = new Date(this._$3);//开始时间
                Date localDate2 = new Date(this._$3 + this._$2 * 86400000L);//结束时间
                SimpleDateFormat localSimpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");//转换
                StringBuffer localStringBuffer = new StringBuffer();
                localStringBuffer.append("From ").append(localSimpleDateFormat.format(localDate1)).append(" to ").append(localSimpleDateFormat.format(localDate2)).append(System.getProperty("line.separator"));

                return localStringBuffer.toString();
        }

        public String $_11() {//取得IP
                return (this._$1 >>> 24 & 0xFF) + "." + (this._$1 >>> 16 & 0xFF) + "." + (this._$1 >>> 8 & 0xFF) + "." + (this._$1 >>> 0 & 0xFF);
        }
}

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//