Java and android 的反编译问题
import java.security.MessageDigest;
public class h
{
public static final String a(String paramString)
{
int i = 0;
char[] arrayOfChar1 = { 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 65, 66, 67, 68, 69, 70 };
try
{
byte[] arrayOfByte1 = paramString.getBytes();
MessageDigest localMessageDigest = MessageDigest.getInstance("MD5");
localMessageDigest.update(arrayOfByte1);
byte[] arrayOfByte2 = localMessageDigest.digest();
int j = arrayOfByte2.length;
char[] arrayOfChar2 = new char[j * 2];
int k = 0;
while (true)
{
if (i >= j)
return new String(arrayOfChar2);
int m = arrayOfByte2[i];
int n = k + 1;
arrayOfChar2[k] = arrayOfChar1[(0xF & m >>> 4)];
k = n + 1;
arrayOfChar2[n] = arrayOfChar1[(m & 0xF)];
i++;
}
}
catch (Exception localException)
{
localException.printStackTrace();
}
return null;
}
}
猜测 应该是 MD5加密 然后和 固定数组 异或 所得的 加密字符串,但里面 出现了一个乱码“>>>”("arrayOfChar2[k] = arrayOfChar1[(0xF & m >>> 4)];"),“>>>” 这个实在是不知道是什么意思,望哪位大侠给指点一下
下面是 对应的smali 代码:
.class public Lcom/sing/client/k/h;
.super Ljava/lang/Object;
# direct methods
.method public static final a(Ljava/lang/String;)Ljava/lang/String;
.registers 10
.prologue
const/4 v0, 0x0
.line 7
const/16 v1, 0x10
new-array v2, v1, [C
fill-array-data v2, :array_44
.line 9
:try_start_8
invoke-virtual {p0}, Ljava/lang/String;->getBytes()[B
move-result-object v1
.line 11
const-string v3, "MD5"
invoke-static {v3}, Ljava/security/MessageDigest;->getInstance(Ljava/lang/String;)Ljava/security/MessageDigest;
move-result-object v3
.line 13
invoke-virtual {v3, v1}, Ljava/security/MessageDigest;->update([B)V
.line 15
invoke-virtual {v3}, Ljava/security/MessageDigest;->digest()[B
move-result-object v3
.line 17
array-length v4, v3
.line 18
mul-int/lit8 v1, v4, 0x2
new-array v5, v1, [C
move v1, v0
.line 20
:goto_1f
if-lt v0, v4, :cond_27
.line 25
new-instance v0, Ljava/lang/String;
invoke-direct {v0, v5}, Ljava/lang/String;-><init>([C)V
.line 28
:goto_26
return-object v0
.line 21
:cond_27
aget-byte v6, v3, v0
.line 22
add-int/lit8 v7, v1, 0x1
ushr-int/lit8 v8, v6, 0x4
and-int/lit8 v8, v8, 0xf
aget-char v8, v2, v8
aput-char v8, v5, v1
.line 23
add-int/lit8 v1, v7, 0x1
and-int/lit8 v6, v6, 0xf
aget-char v6, v2, v6
aput-char v6, v5, v7
:try_end_3b
.catch Ljava/lang/Exception; {:try_start_8 .. :try_end_3b} :catch_3e
.line 20
add-int/lit8 v0, v0, 0x1
goto :goto_1f
.line 26
:catch_3e
move-exception v0
.line 27
invoke-virtual {v0}, Ljava/lang/Exception;->printStackTrace()V
.line 28
const/4 v0, 0x0
goto :goto_26
.line 7
:array_44
.array-data 2
0x30s
0x31s
0x32s
0x33s
0x34s
0x35s
0x36s
0x37s
0x38s
0x39s
0x41s
0x42s
0x43s
0x44s
0x45s
0x46s
.end array-data
.end method
哪位大侠 帮我解释一下 那一句中的“>>>”应该是什么运算符,万分感谢!
相关推荐
Android反编译工具
**JEB (Java Bytecode Emulator and Decompiler)**:这是一个高级的反编译和调试工具,可以生成高质量的Java源代码,并且支持多种Android调试功能。
安卓与Java逆向反编译神器实战指南
本文还有配套的精品资源,点击获取 简介:逆向工程在软件安全、代码分析和二次开发中具有重要作用。本文介绍的“安卓与Java反编译神器”是一类高效工具,能够将Android APK中的Dalvik字节码还原为可读的Java源代码,帮助开发者深入理解应用内部逻辑。内容涵盖Android应用结构、主流反编译工具(如dex2jar、JD-GUI、Apktool、FernFlower、CFR)的使用方法、反编译原理、混淆代码处理及典型应用场景,如安全分析、调试、二次开发和学习研究。
反编译jar文件,导出java源码 jd-gui 0.3.5 and dex2jar 0.0.9.15 and jar2dex.zip
标题提到的"反编译jar文件,导出java源码 jd-gui 0.3.5 and dex2jar 0.0.9.15 and jar2dex.zip"就是一个这样的场景,它涉及到两个主要的反编译工具:JD-GUI
Android超强反编译工具JEB
而JEB(Java Enhanced Bytecode)就是这样一款强大的Android反编译神器,它以其近乎源码级的语法解析能力,深受开发者和安全研究人员的喜爱。1.
Android and Java bytecode viewer.zip
【标题】"Android and Java bytecode viewer.zip" 涉及的主要知识点是Android应用程序开发和Java字节码。


