吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 7450|回复: 17
收起左侧

[Android 分享] 一个安卓程序反编译后的部分代码,关键是序列号(Guid),没事你试试!

[复制链接]
无敌小儿 发表于 2015-1-8 22:05
import java.util.Date;

public class SerialNumber
{
  private Date mAuthExpireDate;
  private Date mBeginDate;
  private String mGuid;
  private Date mUseExpireDate;

  public Date getAuthExpireDate()
  {
    return this.mAuthExpireDate;
  }

  public Date getBeginDate()
  {
    return this.mBeginDate;
  }

  public String getGuid()
  {
    return this.mGuid;
  }

  public Date getUseExpireDate()
  {
    return this.mUseExpireDate;
  }

  public void setAuthExpireDate(Date paramDate)
  {
    this.mAuthExpireDate = paramDate;
  }

  public void setBeginDate(Date paramDate)
  {
    this.mBeginDate = paramDate;
  }

  public void setGuid(String paramString)
  {
    this.mGuid = paramString;
  }

  public void setUseExpireDate(Date paramDate)
  {
    this.mUseExpireDate = paramDate;
  }
}


import com.hw.smart.core.DateUtil;
import com.hw.smart.core.xml.XmlParser;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;

public class SerialNumberXmlParser extends XmlParser
{
  private SerialNumber mItem = null;
  private List<SerialNumber> mItems = null;
  private String mTagName;

  public SerialNumberXmlParser(InputStream paramInputStream)
  {
    super(paramInputStream);
  }

  public SerialNumberXmlParser(String paramString)
  {
    super(paramString);
  }

  protected void endTag()
  {
    this.mTagName = this.mParser.getName();
    if (this.mTagName.equals("SerialNumber"))
    {
      this.mItems.add(this.mItem);
      this.mItem = null;
    }
    this.mTagName = "";
  }

  public List<SerialNumber> getItems()
  {
    if (this.mItems == null);
    try
    {
      parser();
      return this.mItems;
    }
    catch (XmlPullParserException localXmlPullParserException)
    {
      while (true)
        localXmlPullParserException.printStackTrace();
    }
    catch (IOException localIOException)
    {
      while (true)
        localIOException.printStackTrace();
    }
  }

  protected void startDocument()
  {
    this.mItems = new ArrayList();
  }

  protected void startTag()
  {
    this.mTagName = this.mParser.getName();
    if (this.mTagName.equals("SerialNumber"))
      this.mItem = new SerialNumber();
  }

  protected void text()
  {
    String str = this.mParser.getText();
    if (this.mTagName.equals("Guid"))
      this.mItem.setGuid(str);
    do
    {
      return;
      if (this.mTagName.equals("BeginDate"))
      {
        this.mItem.setBeginDate(DateUtil.parseDate(str, DateUtil.YMD));
        return;
      }
      if (this.mTagName.equals("AuthExpireDate"))
      {
        this.mItem.setAuthExpireDate(DateUtil.parseDate(str, DateUtil.YMD));
        return;
      }
    }
    while (!this.mTagName.equals("UseExpireDate"));
    this.mItem.setUseExpireDate(DateUtil.parseDate(str, DateUtil.YMD));
  }
}
重点是要生成一个可用的序列号,已知可用的有两组如下:
Guid                                                          BeginDate                 AuthExpireDate      UseExpireDate
1330-1779-4488-2101                              2014-7-11                 2014-12-31             2014-12-31
SA12-EB54-4561-Y121                             2015-1-1                  2015-7-10               2015-7-10


有能根据以上算法,自定义时间生成序列号的,可以的来试试?




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

 楼主| 无敌小儿 发表于 2015-1-9 15:59
package org.jsoup.helper;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.ByteBuffer;
import java.nio.CharBuffer;
import java.nio.charset.Charset;
import java.util.Locale;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Document.OutputSettings;
import org.jsoup.nodes.Element;
import org.jsoup.parser.Parser;
import org.jsoup.select.Elements;

public class DataUtil
{
  private static final int bufferSize = 131072;
  private static final Pattern charsetPattern = Pattern.compile("(?i)\\bcharset=\\s*\"?([^\\s;\"]*)");
  static final String defaultCharset = "UTF-8";

  static String getCharsetFromContentType(String paramString)
  {
    String str;
    if (paramString == null)
      str = null;
    do
    {
      do
      {
        return str;
        Matcher localMatcher = charsetPattern.matcher(paramString);
        if (!localMatcher.find())
          break;
        str = localMatcher.group(1).trim();
      }
      while (Charset.isSupported(str));
      str = str.toUpperCase(Locale.ENGLISH);
    }
    while (Charset.isSupported(str));
    return null;
  }

  // ERROR //
  public static Document load(java.io.File paramFile, String paramString1, String paramString2)
    throws IOException
  {
    // Byte code:
    //   0: aconst_null
    //   1: astore_3
    //   2: new 72        java/io/FileInputStream
    //   5: dup
    //   6: aload_0
    //   7: invokespecial 75        java/io/FileInputStream:<init>        (Ljava/io/File;)V
    //   10: astore 4
    //   12: aload 4
    //   14: invokestatic 79        org/jsoup/helper/DataUtil:readToByteBuffer        (Ljava/io/InputStream;)Ljava/nio/ByteBuffer;
    //   17: aload_1
    //   18: aload_2
    //   19: invokestatic 85        org/jsoup/parser/Parser:htmlParser        ()Lorg/jsoup/parser/Parser;
    //   22: invokestatic 89        org/jsoup/helper/DataUtil:parseByteData        (Ljava/nio/ByteBuffer;Ljava/lang/String;Ljava/lang/String;Lorg/jsoup/parser/Parser;)Lorg/jsoup/nodes/Document;
    //   25: astore 6
    //   27: aload 4
    //   29: ifnull +8 -> 37
    //   32: aload 4
    //   34: invokevirtual 92        java/io/FileInputStream:close        ()V
    //   37: aload 6
    //   39: areturn
    //   40: astore 5
    //   42: aload_3
    //   43: ifnull +7 -> 50
    //   46: aload_3
    //   47: invokevirtual 92        java/io/FileInputStream:close        ()V
    //   50: aload 5
    //   52: athrow
    //   53: astore 5
    //   55: aload 4
    //   57: astore_3
    //   58: goto -16 -> 42
    //
    // Exception table:
    //   from        to        target        type
    //   2        12        40        finally
    //   12        27        53        finally
  }

  public static Document load(InputStream paramInputStream, String paramString1, String paramString2)
    throws IOException
  {
    return parseByteData(readToByteBuffer(paramInputStream), paramString1, paramString2, Parser.htmlParser());
  }

  public static Document load(InputStream paramInputStream, String paramString1, String paramString2, Parser paramParser)
    throws IOException
  {
    return parseByteData(readToByteBuffer(paramInputStream), paramString1, paramString2, paramParser);
  }

  static Document parseByteData(ByteBuffer paramByteBuffer, String paramString1, String paramString2, Parser paramParser)
  {
    String str1;
    Element localElement;
    String str2;
    if (paramString1 == null)
    {
      str1 = Charset.forName("UTF-8").decode(paramByteBuffer).toString();
      localDocument = paramParser.parseInput(str1, paramString2);
      localElement = localDocument.select("meta[http-equiv=content-type], meta[charset]").first();
      if (localElement != null)
      {
        if (!localElement.hasAttr("http-equiv"))
          break label168;
        str2 = getCharsetFromContentType(localElement.attr("content"));
        if ((str2 != null) && (str2.length() != 0) && (!str2.equals("UTF-8")))
        {
          paramString1 = str2;
          paramByteBuffer.rewind();
          str1 = Charset.forName(str2).decode(paramByteBuffer).toString();
        }
      }
    }
    for (Document localDocument = null; ; localDocument = null)
    {
      if (localDocument == null)
      {
        if ((str1.length() > 0) && (str1.charAt(0) == 65279))
          str1 = str1.substring(1);
        localDocument = paramParser.parseInput(str1, paramString2);
        localDocument.outputSettings().charset(paramString1);
      }
      return localDocument;
      label168: str2 = localElement.attr("charset");
      break;
      Validate.notEmpty(paramString1, "Must set charset arg to character set of file to parse. Set to null to attempt to detect from HTML");
      str1 = Charset.forName(paramString1).decode(paramByteBuffer).toString();
    }
  }

  static ByteBuffer readToByteBuffer(InputStream paramInputStream)
    throws IOException
  {
    return readToByteBuffer(paramInputStream, 0);
  }

  static ByteBuffer readToByteBuffer(InputStream paramInputStream, int paramInt)
    throws IOException
  {
    boolean bool;
    int i;
    label18: byte[] arrayOfByte;
    ByteArrayOutputStream localByteArrayOutputStream;
    int j;
    if (paramInt >= 0)
    {
      bool = true;
      Validate.isTrue(bool, "maxSize must be 0 (unlimited) or larger");
      if (paramInt <= 0)
        break label66;
      i = 1;
      arrayOfByte = new byte[131072];
      localByteArrayOutputStream = new ByteArrayOutputStream(131072);
      j = paramInt;
    }
    while (true)
    {
      int k = paramInputStream.read(arrayOfByte);
      if (k == -1);
      while (true)
      {
        return ByteBuffer.wrap(localByteArrayOutputStream.toByteArray());
        bool = false;
        break;
        label66: i = 0;
        break label18;
        if (i == 0)
          break label102;
        if (k <= j)
          break label95;
        localByteArrayOutputStream.write(arrayOfByte, 0, j);
      }
      label95: j -= k;
      label102: localByteArrayOutputStream.write(arrayOfByte, 0, k);
    }
  }
}
 楼主| 无敌小儿 发表于 2015-1-8 22:48
import android.text.TextUtils;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;

public class DesCrypt
  implements ICrypt
{
  public static byte[] String2Byte(String paramString)
  {
    boolean bool = TextUtils.isEmpty(paramString);
    byte[] arrayOfByte = null;
    if (bool);
    while (true)
    {
      return arrayOfByte;
      int i = paramString.length() % 2;
      arrayOfByte = null;
      if (i != 1)
      {
        arrayOfByte = new byte[paramString.length() / 2];
        int j = 0;
        try
        {
          while (j < paramString.length())
          {
            arrayOfByte[(j / 2)] = Integer.decode("0x" + paramString.substring(j, j + 2)).byteValue();
            j += 2;
          }
        }
        catch (Exception localException)
        {
          localException.printStackTrace();
        }
      }
    }
    return null;
  }

  public static String byte2HexString(byte[] paramArrayOfByte)
  {
    if (paramArrayOfByte == null)
      return "";
    StringBuffer localStringBuffer = new StringBuffer();
    int i = 0;
    if (i >= paramArrayOfByte.length)
      return localStringBuffer.toString();
    String str = Integer.toHexString(0xFF & paramArrayOfByte[i]);
    if (str.length() == 1)
      localStringBuffer.append("0" + str);
    while (true)
    {
      i++;
      break;
      localStringBuffer.append(str);
    }
  }

  public String decode(String paramString1, String paramString2)
  {
    byte[] arrayOfByte = String2Byte(paramString1);
    if (arrayOfByte == null)
      return "";
    try
    {
      IvParameterSpec localIvParameterSpec = new IvParameterSpec(paramString2.getBytes("UTF-8"));
      SecretKeySpec localSecretKeySpec = new SecretKeySpec(paramString2.getBytes("UTF-8"), "DES");
      Cipher localCipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
      localCipher.init(2, localSecretKeySpec, localIvParameterSpec);
      String str = new String(localCipher.doFinal(arrayOfByte));
      return str;
    }
    catch (Exception localException)
    {
      localException.printStackTrace();
    }
    return paramString1;
  }

  public String encode(String paramString1, String paramString2)
  {
    try
    {
      IvParameterSpec localIvParameterSpec = new IvParameterSpec(paramString2.getBytes("UTF-8"));
      SecretKeySpec localSecretKeySpec = new SecretKeySpec(paramString2.getBytes("UTF-8"), "DES");
      Cipher localCipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
      localCipher.init(1, localSecretKeySpec, localIvParameterSpec);
      String str = byte2HexString(localCipher.doFinal(paramString1.getBytes()));
      return str;
    }
    catch (Exception localException)
    {
      localException.printStackTrace();
    }
    return paramString1;
  }
}
 楼主| 无敌小儿 发表于 2015-1-8 22:49
zchld 发表于 2015-1-8 23:29
这玩意好 等待大牛分析
sssjjj 发表于 2015-1-9 00:41
不懂,太有学问了!
ps122 发表于 2015-1-9 10:02
缺少
import com.hw.smart.core.DateUtil;
import com.hw.smart.core.xml.XmlParser;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
 楼主| 无敌小儿 发表于 2015-1-9 11:22
package com.hw.smart.core.xml;

import android.text.TextUtils;
import android.util.Xml;
import java.io.IOException;
import java.io.InputStream;
import java.io.StringReader;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;

public class XmlParser
{
  public String Encoding = "utf-8";
  protected XmlPullParser mParser = null;
  private InputStream mStream;
  private String mXml;

  public XmlParser(InputStream paramInputStream)
  {
    this.mStream = paramInputStream;
  }

  public XmlParser(String paramString)
  {
    this.mXml = paramString;
  }

  protected void endTag()
  {
  }

  protected void parser()
    throws XmlPullParserException, IOException
  {
    this.mParser = Xml.newPullParser();
    if (this.mStream != null)
      this.mParser.setInput(this.mStream, this.Encoding);
    int i;
    while (true)
    {
      i = this.mParser.getEventType();
      if (i != 1)
        break;
      return;
      if (!TextUtils.isEmpty(this.mXml))
        this.mParser.setInput(new StringReader(this.mXml));
    }
    if (i == 0)
      startDocument();
    while (true)
    {
      i = this.mParser.next();
      break;
      if (i == 2)
        startTag();
      else if (i == 4)
        text();
      else if (i == 3)
        endTag();
    }
  }

  protected void startDocument()
  {
  }

  protected void startTag()
  {
  }

  protected void text()
  {
  }
}
头像被屏蔽
吾爱我世界 发表于 2015-1-9 12:48 来自手机
提示: 作者被禁止或删除 内容自动屏蔽
ps122 发表于 2015-1-9 13:05
public class DesCrypt
  implements ICrypt

缺少ICrypt
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-24 13:42

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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