我反编译了apk
文件,并得到了java
代码:
private long compressAndFormat(byte[] tokenData) {
long result = 0;
int i = 0;
while (true) {
try {
if (i >= this.ipb.length) {
return result >> 1;
}
int bit;
while (bit >= 0) {
byte mask = (byte) (1 << bit);
if ((this.ipb[i] & mask) != 0) {
if ((tokenData[i] & mask) != 0) {
result |= 1;
}
result <<= 1;
}
bit--;
}
i++;
} finally {
result = 0;
}
}
}
您可以看到bit
尚未初始化。无论我如何初始化,它都会给我错误的结果。我也试图猜测那是什么意思。我试图计算写tokenData[i]
号所需的位数。这些想法都没有。
我找到了另一个解决方案-我将apk
反编译为smali
代码,剪切了该方法,然后粘贴到另一个apk
应用程序中。那工作正常。从apk
到java
的反编译似乎出错了,并且使用像smali
这样的低级编程语言解决了我的问题。
现在,我想使用该方法创建java
控制台应用程序。到目前为止,我一直在使用apk
该怎么做?看来smali
与apk
文件有关。我该怎么办?
这是方法smali
的{{1}}代码。也许你们中的一些人看到了为什么它被严重反编译了?
compressAndFormat