首页
社区
课程
招聘
[求助]能看懂这段android源码的算法吗?
发表于: 2012-6-4 20:20 12449

[求助]能看懂这段android源码的算法吗?

2012-6-4 20:20
12449
能看懂这段android源码的算法吗?哪里有教程,谢谢前辈们了

public final class c
{
  static b a = new b();

  public static boolean a(String paramString1, String paramString2)
  {
    int i = 0;
    String str1 = a.a(paramString1);
    String str2 = "";
    int l;
    if (str1.length() > 0)
    {
      l = 0;
      label24: if (l < str1.length())
        break label186;
    }
    if (str2.length() >= 12)
      str2 = str2.substring(6, 12) + str2.substring(0, 6);
    String str3 = "";
    int j = 0;
    if (j >= str2.length())
    {
      if (str3.length() <= 11)
        label85: str3 = String.valueOf(123456789012L + Long.parseLong(str3));
      String str4 = str3.substring(3, 9) + str3.substring(0, 3) + str3.substring(9, 12);
      a.n = str4;
      if (!str4.equals(paramString2))
        break label279;
      a.o = true;
      i = 1;
    }
    while (true)
    {
      return i;
      label186: char c = str1.charAt(l);
      if (Character.isDigit(c))
        str2 = str2 + c;
      ++l;
      break label24:
      int k = 0x5 ^ Integer.parseInt(str2.substring(j, j + 1));
      str3 = str3 + String.valueOf(k);
      ++j;
      break label85:
      label279: a.o = false;
    }
  }
}

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (14)
雪    币: 5
活跃值: (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
看来,现在破解android的高手太少了,呜呜
2012-6-5 21:50
0
雪    币: 5
活跃值: (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
顶起,希望高人看见
2012-6-7 20:54
0
雪    币: 5
活跃值: (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
顶起,希望高人看见
2012-6-9 20:52
0
雪    币: 5
活跃值: (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
希望有高人进行算法分析
2012-6-13 21:27
0
雪    币: 5
活跃值: (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
String str1 = a.a(paramString1)里面才是算法吗?请高人回答
2012-6-13 22:43
0
雪    币: 5
活跃值: (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
package Jiajufsh.a;

public final class b
{
  static final char[] a;
  static final byte[] b;
  public String c;
  private long[] d = new long[4];
  private long[] e = new long[2];
  private byte[] f = new byte[64];
  private byte[] g = new byte[16];

  static
  {
    char[] arrayOfChar = new char[16];
    arrayOfChar[0] = 48;
    arrayOfChar[1] = 49;
    arrayOfChar[2] = 50;
    arrayOfChar[3] = 51;
    arrayOfChar[4] = 52;
    arrayOfChar[5] = 53;
    arrayOfChar[6] = 54;
    arrayOfChar[7] = 55;
    arrayOfChar[8] = 56;
    arrayOfChar[9] = 57;
    arrayOfChar[10] = 65;
    arrayOfChar[11] = 66;
    arrayOfChar[12] = 67;
    arrayOfChar[13] = 68;
    arrayOfChar[14] = 69;
    arrayOfChar[15] = 70;
    a = arrayOfChar;
    byte[] arrayOfByte = new byte[64];
    arrayOfByte[0] = -128;
    b = arrayOfByte;
  }

  public b()
  {
    a();
  }

  private static long a(byte paramByte)
  {
    if (paramByte >= 0);
    while (true)
    {
      return paramByte;
      paramByte &= 255;
    }
  }

  private static long a(long paramLong1, long paramLong2, long paramLong3, long paramLong4, long paramLong5, long paramLong6, long paramLong7)
  {
    long l = paramLong1 + (paramLong7 + (paramLong5 + (paramLong2 & paramLong3 | paramLong4 & (0xFFFFFFFF ^ paramLong2))));
    return paramLong2 + ((int)l << (int)paramLong6 | (int)l >>> (int)(32L - paramLong6));
  }

  private void a()
  {
    this.e[0] = 0L;
    this.e[1] = 0L;
    this.d[0] = 1732584193L;
    this.d[1] = 4023233417L;
    this.d[2] = 2562383102L;
    this.d[3] = 271733878L;
  }

  private void a(byte[] paramArrayOfByte)
  {
    long l1 = this.d[0];
    long l2 = this.d[1];
    long l3 = this.d[2];
    long l4 = this.d[3];
    long[] arrayOfLong1 = new long[16];
    int i = 0;
    for (int j = 0; ; j += 4)
    {
      if (j >= 64)
      {
        long l5 = a(l1, l2, l3, l4, arrayOfLong1[0], 7L, 3614090360L);
        long l6 = a(l4, l5, l2, l3, arrayOfLong1[1], 12L, 3905402710L);
        long l7 = a(l3, l6, l5, l2, arrayOfLong1[2], 17L, 606105819L);
        long l8 = a(l2, l7, l6, l5, arrayOfLong1[3], 22L, 3250441966L);
        long l9 = a(l5, l8, l7, l6, arrayOfLong1[4], 7L, 4118548399L);
        long l10 = a(l6, l9, l8, l7, arrayOfLong1[5], 12L, 1200080426L);
        long l11 = a(l7, l10, l9, l8, arrayOfLong1[6], 17L, 2821735955L);
        long l12 = a(l8, l11, l10, l9, arrayOfLong1[7], 22L, 4249261313L);
        long l13 = a(l9, l12, l11, l10, arrayOfLong1[8], 7L, 1770035416L);
        long l14 = a(l10, l13, l12, l11, arrayOfLong1[9], 12L, 2336552879L);
        long l15 = a(l11, l14, l13, l12, arrayOfLong1[10], 17L, 4294925233L);
        long l16 = a(l12, l15, l14, l13, arrayOfLong1[11], 22L, 2304563134L);
        long l17 = a(l13, l16, l15, l14, arrayOfLong1[12], 7L, 1804603682L);
        long l18 = a(l14, l17, l16, l15, arrayOfLong1[13], 12L, 4254626195L);
        long l19 = a(l15, l18, l17, l16, arrayOfLong1[14], 17L, 2792965006L);
        long l20 = a(l16, l19, l18, l17, arrayOfLong1[15], 22L, 1236535329L);
        long l21 = b(l17, l20, l19, l18, arrayOfLong1[1], 5L, 4129170786L);
        long l22 = b(l18, l21, l20, l19, arrayOfLong1[6], 9L, 3225465664L);
        long l23 = b(l19, l22, l21, l20, arrayOfLong1[11], 14L, 643717713L);
        long l24 = b(l20, l23, l22, l21, arrayOfLong1[0], 20L, 3921069994L);
        long l25 = b(l21, l24, l23, l22, arrayOfLong1[5], 5L, 3593408605L);
        long l26 = b(l22, l25, l24, l23, arrayOfLong1[10], 9L, 38016083L);
        long l27 = b(l23, l26, l25, l24, arrayOfLong1[15], 14L, 3634488961L);
        long l28 = b(l24, l27, l26, l25, arrayOfLong1[4], 20L, 3889429448L);
        long l29 = b(l25, l28, l27, l26, arrayOfLong1[9], 5L, 568446438L);
        long l30 = b(l26, l29, l28, l27, arrayOfLong1[14], 9L, 3275163606L);
        long l31 = b(l27, l30, l29, l28, arrayOfLong1[3], 14L, 4107603335L);
        long l32 = b(l28, l31, l30, l29, arrayOfLong1[8], 20L, 1163531501L);
        long l33 = b(l29, l32, l31, l30, arrayOfLong1[13], 5L, 2850285829L);
        long l34 = b(l30, l33, l32, l31, arrayOfLong1[2], 9L, 4243563512L);
        long l35 = b(l31, l34, l33, l32, arrayOfLong1[7], 14L, 1735328473L);
        long l36 = b(l32, l35, l34, l33, arrayOfLong1[12], 20L, 2368359562L);
        long l37 = c(l33, l36, l35, l34, arrayOfLong1[5], 4L, 4294588738L);
        long l38 = c(l34, l37, l36, l35, arrayOfLong1[8], 11L, 2272392833L);
        long l39 = c(l35, l38, l37, l36, arrayOfLong1[11], 16L, 1839030562L);
        long l40 = c(l36, l39, l38, l37, arrayOfLong1[14], 23L, 4259657740L);
        long l41 = c(l37, l40, l39, l38, arrayOfLong1[1], 4L, 2763975236L);
        long l42 = c(l38, l41, l40, l39, arrayOfLong1[4], 11L, 1272893353L);
        long l43 = c(l39, l42, l41, l40, arrayOfLong1[7], 16L, 4139469664L);
        long l44 = c(l40, l43, l42, l41, arrayOfLong1[10], 23L, 3200236656L);
        long l45 = c(l41, l44, l43, l42, arrayOfLong1[13], 4L, 681279174L);
        long l46 = c(l42, l45, l44, l43, arrayOfLong1[0], 11L, 3936430074L);
        long l47 = c(l43, l46, l45, l44, arrayOfLong1[3], 16L, 3572445317L);
        long l48 = c(l44, l47, l46, l45, arrayOfLong1[6], 23L, 76029189L);
        long l49 = c(l45, l48, l47, l46, arrayOfLong1[9], 4L, 3654602809L);
        long l50 = c(l46, l49, l48, l47, arrayOfLong1[12], 11L, 3873151461L);
        long l51 = c(l47, l50, l49, l48, arrayOfLong1[15], 16L, 530742520L);
        long l52 = c(l48, l51, l50, l49, arrayOfLong1[2], 23L, 3299628645L);
        long l53 = d(l49, l52, l51, l50, arrayOfLong1[0], 6L, 4096336452L);
        long l54 = d(l50, l53, l52, l51, arrayOfLong1[7], 10L, 1126891415L);
        long l55 = d(l51, l54, l53, l52, arrayOfLong1[14], 15L, 2878612391L);
        long l56 = d(l52, l55, l54, l53, arrayOfLong1[5], 21L, 4237533241L);
        long l57 = d(l53, l56, l55, l54, arrayOfLong1[12], 6L, 1700485571L);
        long l58 = d(l54, l57, l56, l55, arrayOfLong1[3], 10L, 2399980690L);
        long l59 = d(l55, l58, l57, l56, arrayOfLong1[10], 15L, 4293915773L);
        long l60 = d(l56, l59, l58, l57, arrayOfLong1[1], 21L, 2240044497L);
        long l61 = d(l57, l60, l59, l58, arrayOfLong1[8], 6L, 1873313359L);
        long l62 = d(l58, l61, l60, l59, arrayOfLong1[15], 10L, 4264355552L);
        long l63 = d(l59, l62, l61, l60, arrayOfLong1[6], 15L, 2734768916L);
        long l64 = d(l60, l63, l62, l61, arrayOfLong1[13], 21L, 1309151649L);
        long l65 = d(l61, l64, l63, l62, arrayOfLong1[4], 6L, 4149444226L);
        long l66 = d(l62, l65, l64, l63, arrayOfLong1[11], 10L, 3174756917L);
        long l67 = d(l63, l66, l65, l64, arrayOfLong1[2], 15L, 718787259L);
        long l68 = d(l64, l67, l66, l65, arrayOfLong1[9], 21L, 3951481745L);
        long[] arrayOfLong2 = this.d;
        arrayOfLong2[0] = (l65 + arrayOfLong2[0]);
        long[] arrayOfLong3 = this.d;
        arrayOfLong3[1] = (l68 + arrayOfLong3[1]);
        long[] arrayOfLong4 = this.d;
        arrayOfLong4[2] = (l67 + arrayOfLong4[2]);
        long[] arrayOfLong5 = this.d;
        arrayOfLong5[3] = (l66 + arrayOfLong5[3]);
        return;
      }
      arrayOfLong1[i] = (a(paramArrayOfByte[j]) | a(paramArrayOfByte[(j + 1)]) << 8 | a(paramArrayOfByte[(j + 2)]) << 16 | a(paramArrayOfByte[(j + 3)]) << 24);
      ++i;
    }
  }

  private void a(byte[] paramArrayOfByte, int paramInt)
  {
    int i = 0;
    byte[] arrayOfByte = new byte[64];
    int j = 0x3F & (int)(this.e[0] >>> 3);
    long[] arrayOfLong1 = this.e;
    long l = arrayOfLong1[0] + (paramInt << 3);
    arrayOfLong1[i] = l;
    if (l < paramInt << 3)
    {
      long[] arrayOfLong3 = this.e;
      arrayOfLong3[1] = (1L + arrayOfLong3[1]);
    }
    long[] arrayOfLong2 = this.e;
    arrayOfLong2[1] += (paramInt >>> 29);
    int k = 64 - j;
    int i1;
    if (paramInt >= k)
    {
      a(this.f, paramArrayOfByte, j, 0, k);
      a(this.f);
      i1 = k;
      label129: if (i1 + 63 < paramInt);
    }
    while (true)
    {
      a(this.f, paramArrayOfByte, i, i1, paramInt - i1);
      return;
      a(arrayOfByte, paramArrayOfByte, 0, i1, 64);
      a(arrayOfByte);
      i1 += 64;
      break label129:
      i = j;
      int i2 = 0;
    }
  }

  private static void a(byte[] paramArrayOfByte1, byte[] paramArrayOfByte2, int paramInt1, int paramInt2, int paramInt3)
  {
    for (int i = 0; ; ++i)
    {
      if (i >= paramInt3)
        return;
      paramArrayOfByte1[(paramInt1 + i)] = paramArrayOfByte2[(paramInt2 + i)];
    }
  }

  private static void a(byte[] paramArrayOfByte, long[] paramArrayOfLong, int paramInt)
  {
    int i = 0;
    int j = 0;
    while (true)
    {
      if (i >= paramInt)
        return;
      paramArrayOfByte[i] = (byte)(int)(0xFF & paramArrayOfLong[j]);
      paramArrayOfByte[(i + 1)] = (byte)(int)(0xFF & paramArrayOfLong[j] >>> 8);
      paramArrayOfByte[(i + 2)] = (byte)(int)(0xFF & paramArrayOfLong[j] >>> 16);
      paramArrayOfByte[(i + 3)] = (byte)(int)(0xFF & paramArrayOfLong[j] >>> 24);
      ++j;
      i += 4;
    }
  }

  private static long b(long paramLong1, long paramLong2, long paramLong3, long paramLong4, long paramLong5, long paramLong6, long paramLong7)
  {
    long l = paramLong1 + (paramLong7 + (paramLong5 + (paramLong2 & paramLong4 | paramLong3 & (0xFFFFFFFF ^ paramLong4))));
    return paramLong2 + ((int)l << (int)paramLong6 | (int)l >>> (int)(32L - paramLong6));
  }

  private static long c(long paramLong1, long paramLong2, long paramLong3, long paramLong4, long paramLong5, long paramLong6, long paramLong7)
  {
    long l = paramLong1 + (paramLong7 + (paramLong5 + (paramLong4 ^ (paramLong2 ^ paramLong3))));
    return paramLong2 + ((int)l << (int)paramLong6 | (int)l >>> (int)(32L - paramLong6));
  }

  private static long d(long paramLong1, long paramLong2, long paramLong3, long paramLong4, long paramLong5, long paramLong6, long paramLong7)
  {
    long l = paramLong1 + (paramLong7 + (paramLong5 + (paramLong3 ^ (paramLong2 | 0xFFFFFFFF ^ paramLong4))));
    return paramLong2 + ((int)l << (int)paramLong6 | (int)l >>> (int)(32L - paramLong6));
  }

  public final String a(String paramString)
  {
    a();
    a(paramString.getBytes(), paramString.length());
    byte[] arrayOfByte = new byte[8];
    a(arrayOfByte, this.e, 8);
    int i = 0x3F & (int)(this.e[0] >>> 3);
    int j;
    if (i >= 56)
    {
      j = 120 - i;
      a(b, j);
      a(arrayOfByte, 8);
      a(this.g, this.d, 16);
      this.c = "";
    }
    for (int k = 0; ; ++k)
    {
      if (k >= 16)
      {
        return this.c;
        j = 56 - i;
      }
      StringBuilder localStringBuilder = new StringBuilder(String.valueOf(this.c));
      int l = this.g[k];
      char[] arrayOfChar1 = new char[16];
      arrayOfChar1[0] = 48;
      arrayOfChar1[1] = 49;
      arrayOfChar1[2] = 50;
      arrayOfChar1[3] = 51;
      arrayOfChar1[4] = 52;
      arrayOfChar1[5] = 53;
      arrayOfChar1[6] = 54;
      arrayOfChar1[7] = 55;
      arrayOfChar1[8] = 56;
      arrayOfChar1[9] = 57;
      arrayOfChar1[10] = 65;
      arrayOfChar1[11] = 66;
      arrayOfChar1[12] = 67;
      arrayOfChar1[13] = 68;
      arrayOfChar1[14] = 69;
      arrayOfChar1[15] = 70;
      char[] arrayOfChar2 = new char[2];
      arrayOfChar2[0] = arrayOfChar1[(0xF & l >>> 4)];
      arrayOfChar2[1] = arrayOfChar1[(l & 0xF)];
      this.c = new String(arrayOfChar2);
    }
  }
}
2012-6-13 22:45
0
雪    币: 5
活跃值: (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
请 iltgcl 大侠看看,谢谢
2012-6-18 22:09
0
雪    币: 317
活跃值: (72)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
9
这些代码被混淆了,造成流程控制不好理解,应该是流程控制混淆吧?
如:
while (true) {
return paramByte;
paramByte &= 255;
}


while (true) {
a(this.f, paramArrayOfByte, i, i1, paramInt - i1);
return;
a(arrayOfByte, paramArrayOfByte, 0, i1, 64);
a(arrayOfByte);
i1 += 64;
break label129:
i = j;
int i2 = 0;

}


if (k >= 16)
{
return this.c;
j = 56 - i;
}


你使用什么工具得到反汇编代码的呢?我这里没有什么好办法,你可以查看汇编代码,将这几处代码整理一下,该删除就删除,整理好了之后再使用反汇编工具来看看。
2012-6-19 21:00
0
雪    币: 5
活跃值: (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
iltgcl 大侠,我的QQ407938277,谢谢
2012-6-23 17:02
0
雪    币: 5
活跃值: (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
下面的是不是算法?请高热年指点
package com.nfbazi.Pibazi.a;

import android.content.Context;
import android.os.Environment;
import android.telephony.TelephonyManager;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Random;

public class a
{
  public static boolean A;
  public static boolean B;
  public static boolean C;
  public static boolean D;
  public static String E;
  public static boolean F;
  public static boolean G;
  public static boolean H;
  public static boolean I;
  public static boolean J;
  public static boolean K;
  public static boolean L;
  public static boolean M;
  public static boolean N;
  public static boolean O;
  public static boolean P;
  public static boolean Q;
  public static boolean R;
  public static boolean S;
  public static boolean T;
  public static boolean U;
  public static boolean V;
  public static boolean W;
  public static boolean X;
  public static boolean Y;
  public static boolean Z;
  public static int a;
  public static boolean aa;
  public static boolean ab;
  public static boolean ac;
  public static boolean ad;
  public static boolean ae;
  public static boolean af;
  public static boolean ag;
  public static boolean ah;
  public static boolean ai;
  public static boolean aj;
  public static boolean ak;
  public static boolean al;
  public static boolean am;
  public static boolean an;
  public static boolean ao;
  public static boolean ap;
  public static boolean aq;
  public static boolean ar;
  public static boolean as;
  public static boolean at;
  public static int b = 1;
  public static String c = "12pt";
  public static String d = "15pt";
  public static String e = "3";
  public static String f = "4";
  public static String g = "";
  public static String h = "/.nanfangsoft/";
  public static String i = "/.nanfangsoft/Pibazi/";
  public static String j = "/.nanfangsoft/Pibazi/progdata/";
  public static String k = "/data/data/com.nfbazi.Pibazi/shared_prefs/";
  public static String l = "";
  public static int m = 0;
  public static int n = 0;
  public static String o = "";
  public static String p = "";
  public static boolean q = false;
  public static int r = 0;
  public static String[] s = new String[1000];
  public static final String[] t;
  public static String u;
  public static boolean v;
  public static boolean w;
  public static boolean x;
  public static boolean y;
  public static boolean z;
  private Context au;

  static
  {
    String[] arrayOfString = new String[5];
    arrayOfString[0] = "区分夜子时、早子时";
    arrayOfString[1] = "是否由中气起命宫";
    arrayOfString[2] = "是否简批流年";
    arrayOfString[3] = "大字体1";
    arrayOfString[4] = "大字体2:适合平板电脑";
    t = arrayOfString;
    u = "#FFFFFF";
    v = true;
    w = false;
    x = false;
    y = true;
    z = false;
    A = false;
    B = false;
    C = false;
    D = false;
    E = "";
    F = false;
    G = false;
    H = false;
    I = true;
    J = true;
    K = true;
    L = true;
    M = true;
    N = true;
    O = true;
    P = true;
    Q = true;
    R = true;
    S = true;
    T = true;
    U = true;
    V = true;
    W = true;
    X = true;
    Y = true;
    Z = true;
    aa = true;
    ab = true;
    ac = true;
    ad = true;
    ae = true;
    af = true;
    ag = true;
    ah = true;
    ai = true;
    aj = true;
    ak = true;
    al = true;
    am = true;
    an = true;
    ao = true;
    ap = true;
    aq = true;
    ar = true;
    as = true;
    at = true;
  }

  public a()
  {
  }

  public a(Context paramContext)
  {
    this.au = paramContext;
  }

  public static void a()
  {
    F = false;
    G = false;
    H = false;
    J = false;
  }

  public static void a(String paramString1, String paramString2)
  {
    FileInputStream localFileInputStream = new FileInputStream(paramString1);
    File localFile = new File(paramString2);
    if (!localFile.exists())
      localFile.createNewFile();
    FileOutputStream localFileOutputStream = new FileOutputStream(localFile);
    byte[] arrayOfByte = new byte[1024];
    while (true)
    {
      int i1 = localFileInputStream.read(arrayOfByte);
      if (i1 == -1)
      {
        localFileInputStream.close();
        localFileOutputStream.close();
        return;
      }
      localFileOutputStream.write(arrayOfByte, 0, i1);
    }
  }

  public static void b(String paramString1, String paramString2)
  {
    File localFile = new File(paramString1);
    if (!localFile.exists())
      localFile.createNewFile();
    FileOutputStream localFileOutputStream = new FileOutputStream(localFile, true);
    for (int i1 = 0; ; ++i1)
    {
      if (i1 >= paramString2.length())
      {
        localFileOutputStream.close();
        return;
      }
      StringBuffer localStringBuffer = new StringBuffer();
      localStringBuffer.append(paramString2.substring(i1, i1 + 1));
      localFileOutputStream.write(localStringBuffer.toString().getBytes("utf-8"));
    }
  }

  public static void c(String paramString)
  {
    String str;
    if (e())
    {
      str = g + j;
      File localFile1 = new File(str);
      File localFile2 = new File(g + h);
      File localFile3 = new File(g + i);
      if (!localFile1.exists())
      {
        localFile2.mkdir();
        localFile3.mkdir();
        localFile1.mkdir();
      }
      File localFile4 = new File(str + paramString + ".xml");
      if (localFile4.exists())
        localFile4.delete();
      if (!new File(k + paramString + ".xml").exists());
    }
    try
    {
      a(k + paramString + ".xml", str + paramString + ".xml");
      return;
    }
    catch (IOException localIOException)
    {
    }
  }

  public static String d()
  {
    return "<table style='border-collapse: collapse; font-size: " + c + ";'  borderColor='#666666' border='0' id='table1' cellspacing='0' cellpadding='4'>" + "\t<tr>" + "\t\t<td style='width: 300pt; ' height='40'>" + "<font color='#FF3300' style='font-size: " + d + ";'>  手机批八字程序</font> V1.4</td>" + "\t</tr>" + "\t<tr>" + "\t\t<td>" + "  本软件是手机批八字程序android版,android系统V2.1及以上版本手机和平板电脑,都可以安装使用。<br>" + "  软件内容有:排出八字、大运,找出神煞、胎元、命宫、岁运并临等信息。评出八字旺衰,找出用神。" + "还有:小运、终身卦、后天补救、穷通宝鉴、流年变化、称骨论命、流年神煞、重大关口、大运流年干支、" + "串宫压运、性格、婚姻、兄弟姐妹、子女、财运、功名事业、健康状况、祖业父母、80年流年运程等内容。<br>" + "  金木水火土五行选择,是手工定喜用神;如果一个都不选择,则程序自动分析喜用神。<br>" + "  输入和选择好各个数据后,点击“排八字”按钮,会排出八字大运等内容。<br>" + "  每次点击“排八字”按钮后,程序会自动保存八字内容到Pibazi.html文件,此文件位于您手机存储卡nfdata文件夹里。" + "您可以重命名此文件。这是浏览器格式文件,您可将此文件拷贝到电脑里,用IE等浏览器打开," + "然后可将内容拷贝到WORD等编辑器里编辑。<br>" + "  本程序浏览器显示内容字体大小有三种选择,背景颜色也有三种选择,您可选择设定喜欢的字体和背景色。<br>" + "  出生年份介于1882-2031。<br>" + "  串宫流年,要求输入大于出生年份的流年数。<br>" + "  点击“保存命例”按钮,可保存当前输入的命主出生信息,最多可保存1000条八字命例。<br>" + "  点击“显示命例”按钮,可列出保存过的命主信息。点击选择要排出八字的命主信息," + "再按此页面里“排出八字”按钮,可排出此条八字。按“删除命例”可删除此条八字命例。</td>" + "\t</tr>" + "\t<tr>" + "\t\t<td height='40'><font color='#FF3300'>本软件注册费:六年期1000元,三年期600元。</font></td>" + "\t</tr>" + "\t<tr>" + "\t\t<td height='40'>  以下付款方式,任选一种。付款后用手机短信或邮件,发来您的:" + "<font color='#0033FF'>购买人姓名、软件名称、" + "软件机器码,并注明付款到哪个帐号</font>。几分钟内可收到注册码。手机号和邮箱在本页最下面。</td>" + "\t</tr>" + "\t<tr>" + "\t\t<td height='30'><font color='#FF3300'>付款方式:</font></td>" + "\t</tr>" + "\t<tr>" + "\t\t<td>支付宝账号:nfbazi@21cn.com<br>" + "\t\t户名:肖小英<br>" + "\t\t<br>" + "\t\t农行卡帐号:6228 4800 8426 2606 514<br>" + "\t\t户名:肖小英<br>" + "\t\t开户行:农行广州市番禺祈福新村支行<br>" + "\t\t<br>" + "\t\t建行龙卡:4367 4233 2456 0226 260<br>" + "\t\t户名:肖小英<br>" + "\t\t开户行:建行广州五羊新城支行<br>" + "\t\t<br>" + "\t\t工商牡丹卡:6222 0036 0211 1193 599<br>" + "\t\t户名:肖小英<br>" + "\t\t开户行:工行广州兴华支行<br>" + "\t\t<br>" + "\t\t邮政储蓄卡:6215 9958 1400 0595 255<br>" + "\t\t户名:肖小英<br>" + "\t\t开户行:邮政银行广州市番禺钟村锦绣营业所</td>" + "\t</tr>" + "\t<tr>" + "\t\t<td> </td>" + "\t</tr>" + "\t<tr>" + "\t\t<td>南方周易程序:<a href='http://www.nfbazi.com/'>http://www.nfbazi.com</a><br>" + "\t\t邮箱:416532971@qq.com<br>" + "\t\t电话:020-34771385<br>" + "\t\t手机:13925096102</td>" + "\t</tr>" + "</table>";
  }

  private boolean d(String paramString)
  {
    int i1 = 0;
    char[] arrayOfChar = new char[21];
    arrayOfChar[0] = 97;
    arrayOfChar[1] = 97;
    arrayOfChar[2] = 97;
    arrayOfChar[3] = 97;
    arrayOfChar[4] = 97;
    arrayOfChar[5] = 97;
    arrayOfChar[6] = 97;
    arrayOfChar[7] = 97;
    arrayOfChar[8] = 97;
    arrayOfChar[9] = 97;
    arrayOfChar[10] = 97;
    arrayOfChar[11] = 97;
    arrayOfChar[12] = 97;
    arrayOfChar[13] = 97;
    arrayOfChar[14] = 97;
    arrayOfChar[15] = 97;
    arrayOfChar[16] = 97;
    arrayOfChar[17] = 97;
    arrayOfChar[18] = 97;
    arrayOfChar[19] = 97;
    arrayOfChar[20] = 97;
    int[] arrayOfInt = new int[10];
    if ((paramString.length() >= 7) && (paramString.length() <= 21));
    for (int i2 = 0; ; ++i2)
    {
      if (i2 >= paramString.length())
      {
        if ((arrayOfInt[0] >= 6) || (arrayOfInt[1] >= 6) || (arrayOfInt[2] >= 6) || (arrayOfInt[3] >= 6) || (arrayOfInt[4] >= 6) || (arrayOfInt[5] >= 6) || (arrayOfInt[6] >= 6) || (arrayOfInt[7] >= 6) || (arrayOfInt[8] >= 6) || (arrayOfInt[9] >= 6))
          i1 = 1;
        return i1;
      }
      arrayOfChar[i2] = paramString.charAt(i2);
      if (arrayOfChar[i2] == '0')
        arrayOfInt[i1] = (1 + arrayOfInt[0]);
      if (arrayOfChar[i2] == '1')
        arrayOfInt[1] = (1 + arrayOfInt[1]);
      if (arrayOfChar[i2] == '2')
        arrayOfInt[2] = (1 + arrayOfInt[2]);
      if (arrayOfChar[i2] == '3')
        arrayOfInt[3] = (1 + arrayOfInt[3]);
      if (arrayOfChar[i2] == '4')
        arrayOfInt[4] = (1 + arrayOfInt[4]);
      if (arrayOfChar[i2] == '5')
        arrayOfInt[5] = (1 + arrayOfInt[5]);
      if (arrayOfChar[i2] == '6')
        arrayOfInt[6] = (1 + arrayOfInt[6]);
      if (arrayOfChar[i2] == '7')
        arrayOfInt[7] = (1 + arrayOfInt[7]);
      if (arrayOfChar[i2] == '8')
        arrayOfInt[8] = (1 + arrayOfInt[8]);
      if (arrayOfChar[i2] != '9')
        continue;
      arrayOfInt[9] = (1 + arrayOfInt[9]);
    }
  }

  public static boolean e()
  {
    if (Environment.getExternalStorageState().equals("mounted"))
      g = Environment.getExternalStorageDirectory().getPath();
    for (int i1 = 1; ; i1 = 0)
      return i1;
  }

  public String a(String paramString)
  {
    if ((paramString == null) || (paramString.equals("")));
    for (String str = ""; ; str = "")
    {
      return str;
      str = "";
      if (paramString.length() < 1)
        continue;
      for (int i1 = 0; ; ++i1)
      {
        if (i1 < paramString.length());
        char c1 = (char)(30 + (byte)paramString.charAt(i1));
        str = str + String.valueOf(c1);
      }
    }
  }

  public String b(String paramString)
  {
    if ((paramString == null) || (paramString.equals("")));
    for (String str = ""; ; str = "")
    {
      return str;
      str = "";
      if (paramString.length() < 1)
        continue;
      for (int i1 = 0; ; ++i1)
      {
        if (i1 < paramString.length());
        char c1 = (char)(-30 + (byte)paramString.charAt(i1));
        str = str + String.valueOf(c1);
      }
    }
  }

  public boolean b()
  {
    TelephonyManager localTelephonyManager = (TelephonyManager)this.au.getSystemService("phone");
    String str1 = localTelephonyManager.getDeviceId();
    String str2 = localTelephonyManager.getSubscriberId();
    String str3 = localTelephonyManager.getSimSerialNumber();
    if (str1 == null)
      str1 = "";
    if (str2 == null)
      str2 = "";
    if (str3 == null)
      str3 = "";
    if (l == null)
      l = "";
    if (!str1.equals(""))
      str1 = str1.toUpperCase();
    if (!str2.equals(""))
      str2 = str2.toUpperCase();
    if (!str3.equals(""))
      str3 = str3.toUpperCase();
    if (!l.equals(""))
      l = l.toUpperCase();
    if (str1.length() >= 8)
      str1 = str1.substring(-7 + str1.length());
    if (str2.length() >= 8)
      str2 = str2.substring(-7 + str2.length());
    if (str3.length() >= 8)
      str3 = str3.substring(-7 + str3.length());
    if (l.length() >= 8)
      l = l.substring(-7 + l.length());
    String str4;
    if ((str1.length() == 7) && (!d(str1)))
    {
      str4 = str1 + "A";
      label264: o = str4 + "-0114";
      if (str4.length() <= 0)
        break label446;
    }
    for (int i1 = 1; ; i1 = 0)
    {
      return i1;
      if ((str2.length() == 7) && (!d(str2)))
        str4 = str2 + "B";
      if ((str3.length() == 7) && (!d(str3)))
        str4 = str3 + "C";
      if ((l.length() == 7) && (!d(l)))
        str4 = l + "E";
      str4 = c();
      label446: break label264:
    }
  }

  public String c()
  {
    return Integer.toString(Math.abs(new Random().nextInt())).substring(0, 7) + "D";
  }
}

/* Location:           C:\Documents and Settings\Thomas chen\桌面\123\
* Qualified Name:     com.nfbazi.Pibazi.a.a
* JD-Core Version:    0.5.4
*/
2012-7-8 16:03
0
雪    币: 230
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
smali的代码啊。需要重新整理下才可以看懂原来的东西。
2012-7-14 20:34
0
雪    币: 3686
活跃值: (1036)
能力值: (RANK:760 )
在线值:
发帖
回帖
粉丝
13
7楼帖的算法应该是MD5吧,可以验证一下看看是不是
2012-7-17 13:04
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
有些人到处求别人分析代码,
破解了又在各个论坛叫卖破解版,
大家留意一下。
2012-7-17 15:57
0
雪    币: 3253
活跃值: (3296)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
15
这就是国内的悲哀,导致现在老外也都不对中国开源了~
2012-7-17 16:00
0
游客
登录 | 注册 方可回帖
返回
//