CrackMe.apk
Download file
package androidx.emoji2.text.flatbuffer;
import java.nio.ByteBuffer;
import java.nio.CharBuffer;
import java.nio.charset.CharacterCodingException;
import java.nio.charset.CharsetDecoder;
import java.nio.charset.CharsetEncoder;
import java.nio.charset.CoderResult;
import java.nio.charset.StandardCharsets;
public class Utf8Old extends Utf8 {
private static final ThreadLocal<Cache> CACHE = ThreadLocal.withInitial(Utf8Old$$ExternalSyntheticLambda0.INSTANCE);
private static class Cache {
final CharsetDecoder decoder = StandardCharsets.UTF_8.newDecoder();
final CharsetEncoder encoder = StandardCharsets.UTF_8.newEncoder();
CharSequence lastInput = null;
ByteBuffer lastOutput = null;
Cache() {
}
}
static /* synthetic */ Cache lambda$static$0() {
return new Cache();
}
public int encodedLength(CharSequence charSequence) {
CharBuffer charBuffer;
Cache cache = CACHE.get();
int length = (int) (((float) charSequence.length()) * cache.encoder.maxBytesPerChar());
if (cache.lastOutput == null || cache.lastOutput.capacity() < length) {
cache.lastOutput = ByteBuffer.allocate(Math.max(128, length));
}
cache.lastOutput.clear();
cache.lastInput = charSequence;
if (charSequence instanceof CharBuffer) {
charBuffer = (CharBuffer) charSequence;
} else {
charBuffer = CharBuffer.wrap(charSequence);
}
CoderResult encode = cache.encoder.encode(charBuffer, cache.lastOutput, true);
if (encode.isError()) {
try {
encode.throwException();
} catch (CharacterCodingException e) {
throw new IllegalArgumentException("bad character encoding", e);
}
}
cache.lastOutput.flip();
return cache.lastOutput.remaining();
}
public void encodeUtf8(CharSequence charSequence, ByteBuffer byteBuffer) {
Cache cache = CACHE.get();
if (cache.lastInput != charSequence) {
encodedLength(charSequence);
}
byteBuffer.put(cache.lastOutput);
}
public String decodeUtf8(ByteBuffer byteBuffer, int i, int i2) {
CharsetDecoder charsetDecoder = CACHE.get().decoder;
charsetDecoder.reset();
ByteBuffer duplicate = byteBuffer.duplicate();
duplicate.position(i);
duplicate.limit(i + i2);
try {
return charsetDecoder.decode(duplicate).toString();
} catch (CharacterCodingException e) {
throw new IllegalArgumentException("Bad encoding", e);
}
}
}
Download file