Как в minecraft лаунчер внедрить свой код?

193
05 августа 2018, 04:00

У меня есть launcher.jar . И данный лаучнер сверяет хэш-и, и если они не совпадают, он заново перекачивает файлы, но я не хочу, чтобы он сверял хэш-и. Как обойти это? Вот код (декомпилированный). У меня же просто не получится взять java (декомпилированный) код, отредактировать его, а потом скомплировать?

package launcher.hasher;
import java.io.IOException;
import java.nio.file.Path;
import java.util.Arrays;
import launcher.LauncherAPI;
import launcher.helper.IOHelper;
import launcher.helper.SecurityHelper;
import launcher.helper.SecurityHelper.DigestAlgorithm;
import launcher.helper.VerifyHelper;
import launcher.serialize.HInput;
import launcher.serialize.HOutput;
public final class HashedFile extends HashedEntry
{
  public static final SecurityHelper.DigestAlgorithm DIGEST_ALGO = SecurityHelper.DigestAlgorithm.MD5;
  @LauncherAPI
  public final long size;
  private final byte[] digest;
  @LauncherAPI
  public HashedFile(long size, byte[] digest)
  {
    this.size = VerifyHelper.verifyLong(size, VerifyHelper.L_NOT_NEGATIVE, "Illegal size: " + size);
    this.digest = (digest == null ? null : (byte[])DIGEST_ALGO.verify(digest).clone());
  }
  @LauncherAPI
  public HashedFile(Path file, long size, boolean digest) throws IOException {
    this(size, digest ? SecurityHelper.digest(DIGEST_ALGO, file) : null);
  }
  @LauncherAPI
  public HashedFile(HInput input) throws IOException {
    this(input.readVarLong(), input.readBoolean() ? input.readByteArray(-DIGEST_ALGObytes) : null);
  }
  public HashedEntry.Type getType()
  {
    return HashedEntry.Type.FILE;
  }
  public long size()
  {
    return size;
  }
  public void write(HOutput output) throws IOException
  {
    output.writeVarLong(size);
    output.writeBoolean(digest != null);
    if (digest != null) {
      output.writeByteArray(digest, -DIGEST_ALGObytes);
    }
  }
  @LauncherAPI
  public boolean isSame(HashedFile o) {
    return (size == size) && ((digest == null) || (digest == null) || (Arrays.equals(digest, digest)));
  }
  @LauncherAPI
  public boolean isSame(Path file, boolean digest) throws IOException {
    if (size != IOHelper.readAttributes(file).size()) {
      return false;
    }
    if ((!digest) || (this.digest == null)) {
      return true;
    }

    byte[] actualDigest = SecurityHelper.digest(DIGEST_ALGO, file);
    return Arrays.equals(this.digest, actualDigest);
  }
  @LauncherAPI
  public boolean isSameDigest(byte[] digest) {
    return (this.digest == null) || (digest == null) || (Arrays.equals(this.digest, digest));
  }
}
READ ALSO
Сохранение переключений между fragmentами android

Сохранение переключений между fragmentами android

Допустим есть Фрагмент 1, 2 и 3

174
Не могу запустить тест JUnit 5

Не могу запустить тест JUnit 5

Написал простой тест (первый в моей жизни), в результате запуска падает с ошибками

283
Не работает фрагмент

Не работает фрагмент

Main Activity package comhfad

180
Android Picasso. Экономия трафика

Android Picasso. Экономия трафика

В приложении использую Picasso для загрузки картинок с интернетаПримерно так

179