首页
社区
课程
招聘
[旧帖] [求助]求高人反编译下这个函数 0.00雪花
发表于: 2015-4-24 14:44 1661

[旧帖] [求助]求高人反编译下这个函数 0.00雪花

2015-4-24 14:44
1661
.method private static convertToHex([B)Ljava/lang/String;                                                private static String converToHex(byte[] data)
    .locals 6
    .parameter "data"

    .prologue
    .line 63
    new-instance v0, Ljava/lang/StringBuffer;

    invoke-direct {v0}, Ljava/lang/StringBuffer;-><init>()V

    .line 64
    .local v0, buf:Ljava/lang/StringBuffer;                                                                v0 = StringBuffer buf = new StringBuffer;
    const/4 v2, 0x0                                                                                        v2 = int i = 0;

    .local v2, i:I
    :goto_0
    array-length v5, p0                                                                                        v5 = data.length();

    if-ge v2, v5, :cond_1                                                                                if(i<data.length())

    .line 65
    aget-byte v5, p0, v2                                                                                v5 = data[i];

    ushr-int/lit8 v5, v5, 0x4                                                                                v5 = data[i] >>> 4;

    and-int/lit8 v1, v5, 0xf                                                                                v5 = 0xf & (data[i] >>> 4)

    .line 66
    .local v1, halfbyte:I                                                                                v1 = halfbyte = 0xf & (data[i]>>>4);
    const/4 v3, 0x0

    .local v3, two_halfs:I                                                                                two_halfs = 0;
    move v4, v3                                                                                                v4 = v3 = 0;

    .line 68
    .end local v3           #two_halfs:I
    .local v4, two_halfs:I                                                                                v4 = two_halfs;
    :goto_1
    if-ltz v1, :cond_0                                                                                        if(halfbyte >= 0)                                                                               

    const/16 v5, 0x9                                                                                        v5 = 0x9

    if-gt v1, v5, :cond_0                                                                                if(halfbyte <= 9)

    .line 69
    add-int/lit8 v5, v1, 0x30                                                                                halfbyte += 0x30;

    int-to-char v5, v5                                                                                       

    invoke-virtual {v0, v5}, Ljava/lang/StringBuffer;->append(C)Ljava/lang/StringBuffer;                buf += halfbyte;

    .line 72
    :goto_2
    aget-byte v5, p0, v2                                                                                data[i]

    and-int/lit8 v1, v5, 0xf                                                                                data[i] & 0xf

    .line 73
    add-int/lit8 v3, v4, 0x1                                                                                v3 = v4 + 1;

    .end local v4           #two_halfs:I
    .restart local v3       #two_halfs:I
    const/4 v5, 0x1                                                                                        v5 = 1                                                       

    if-lt v4, v5, :cond_2                                                                                if(v4 < 1)                                                                       

    .line 64
    add-int/lit8 v2, v2, 0x1                                                                        i++

    goto :goto_0

    .line 71
    .end local v3           #two_halfs:I
    .restart local v4       #two_halfs:I
    :cond_0
    add-int/lit8 v5, v1, -0xa                                                                                v5 = halfbyte - 10;

    add-int/lit8 v5, v5, 0x61                                                                                v5 = halfbyte + 0x61;

    int-to-char v5, v5

    invoke-virtual {v0, v5}, Ljava/lang/StringBuffer;->append(C)Ljava/lang/StringBuffer;

    goto :goto_2

    .line 75
    .end local v1           #halfbyte:I
    .end local v4           #two_halfs:I
    :cond_1
    invoke-virtual {v0}, Ljava/lang/StringBuffer;->toString()Ljava/lang/String;

    move-result-object v5

    return-object v5

    .restart local v1       #halfbyte:I
    .restart local v3       #two_halfs:I
    :cond_2
    move v4, v3

    .end local v3           #two_halfs:I
    .restart local v4       #two_halfs:I
    goto :goto_1
.end method

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

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
看看 帖子
2015-4-24 15:23
0
雪    币: 4
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
这是一个把byte数组转成十六进制字符串的程序
比如byte数组为 34 1 5 64四个值转成十六进制字符串就是22010540
转换的算法也很简单,网上应该都有
就是取数组中的每一个Byte,然后取高四位,转成十六进制字符,再取第四位转成十六进制字符
4位转十六进制字符,0-9映射为assic码的48(0x30)-57(ox39),10-15映射为assic码的97(0x61)-102(0x66)
2015-4-30 09:52
0
游客
登录 | 注册 方可回帖
返回
//