请教大家一个通过反编译代码的还原方法
此code是通过dex2jar工具从android的classes.dex反编译过来的,然后使用jd打开的:
public Bitmap getBitmap(Context paramContext, byte[] paramArrayOfByte)
{
monitorenter;
try
{
long l = hash(paramArrayOfByte);
int i = getIndex(l);
BitmapDataArray.ByteBufferDescription localByteBufferDescription1 = ((BitmapDataArray)this._dataArray).getByteBuffer(i);
int j = getIndex(l);
Object localObject1;
if (i == j)
{
if (localByteBufferDescription1 != null)
break label73;
_log.error("getBitmap() existingData is null!");
localObject1 = null;
}
while (true)
{
return localObject1;
i = j;
break;
label73: String str1 = new String(paramArrayOfByte);
if (localByteBufferDescription1.len <= 0)
{
_log.error("ByteBuffer is messed up!!!!!!");
Logger localLogger = _log;
StringBuilder localStringBuilder1 = new StringBuilder().append("position after return remaining=");
int k = localByteBufferDescription1.buffer.remaining();
StringBuilder localStringBuilder2 = localStringBuilder1.append(k).append(" startOffset=");
int m = localByteBufferDescription1.startOffset;
StringBuilder localStringBuilder3 = localStringBuilder2.append(m).append(" len=");
int n = localByteBufferDescription1.len;
String str2 = n;
localLogger.error(str2);
int i1 = localByteBufferDescription1.len / 0;
}
DefaultDataStoreHandler localDefaultDataStoreHandler = this._dataHandler;
ByteBuffer localByteBuffer1 = localByteBufferDescription1.buffer;
int i2 = localByteBufferDescription1.startOffset;
int i3 = localByteBufferDescription1.len;
BitmapDataArray.ByteBufferDescription localByteBufferDescription2 = localDefaultDataStoreHandler.movePositionByKey(paramArrayOfByte, localByteBuffer1, i2, i3);
if (localByteBufferDescription2 == null)
{
_log.error("getBitmap() desc buffer description is null after moving for key!!!!!!");
localObject1 = null;
continue;
}
ByteBuffer localByteBuffer2 = localByteBufferDescription2.buffer;
int i4 = localByteBufferDescription2.startOffset;
int i5 = localByteBufferDescription2.len;
Bitmap localBitmap = buildBitmapFromByteBuffer(paramContext, localByteBuffer2, i4, i5);
localObject1 = localBitmap;
}
}
finally
{
monitorexit;
}
throw localObject2;
}
此code是通过dex2jar工具从android的classes.dex反编译过来的,然后使用jd打开的:
public Bitmap getBitmap(Context paramContext, byte[] paramArrayOfByte)
{
monitorenter;
try
{
long l = hash(paramArrayOfByte);
int i = getIndex(l);
BitmapDataArray.ByteBufferDescription localByteBufferDescription1 = ((BitmapDataArray)this._dataArray).getByteBuffer(i);
int j = getIndex(l);
Object localObject1;
if (i == j)
{
if (localByteBufferDescription1 != null)
break label73;
_log.error("getBitmap() existingData is null!");
localObject1 = null;
}
while (true)
{
return localObject1;
i = j;
break;
label73: String str1 = new String(paramArrayOfByte);
if (localByteBufferDescription1.len <= 0)
{
_log.error("ByteBuffer is messed up!!!!!!");
Logger localLogger = _log;
StringBuilder localStringBuilder1 = new StringBuilder().append("position after return remaining=");
int k = localByteBufferDescription1.buffer.remaining();
StringBuilder localStringBuilder2 = localStringBuilder1.append(k).append(" startOffset=");
int m = localByteBufferDescription1.startOffset;
StringBuilder localStringBuilder3 = localStringBuilder2.append(m).append(" len=");
int n = localByteBufferDescription1.len;
String str2 = n;
localLogger.error(str2);
int i1 = localByteBufferDescription1.len / 0;
}
DefaultDataStoreHandler localDefaultDataStoreHandler = this._dataHandler;
ByteBuffer localByteBuffer1 = localByteBufferDescription1.buffer;
int i2 = localByteBufferDescription1.startOffset;
int i3 = localByteBufferDescription1.len;
BitmapDataArray.ByteBufferDescription localByteBufferDescription2 = localDefaultDataStoreHandler.movePositionByKey(paramArrayOfByte, localByteBuffer1, i2, i3);
if (localByteBufferDescription2 == null)
{
_log.error("getBitmap() desc buffer description is null after moving for key!!!!!!");
localObject1 = null;
continue;
}
ByteBuffer localByteBuffer2 = localByteBufferDescription2.buffer;
int i4 = localByteBufferDescription2.startOffset;
int i5 = localByteBufferDescription2.len;
Bitmap localBitmap = buildBitmapFromByteBuffer(paramContext, localByteBuffer2, i4, i5);
localObject1 = localBitmap;
}
}
finally
{
monitorexit;
}
throw localObject2;
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货