Encontrar a localização de um JAR

2 respostas
Samuel_Medeiros

Estou manipulando um jogo online em java, consegui baixar o jar dele que pensei ser o do jogo em si, mas na verdade é apenas um jar com 10 classes que carrega o applet do jogo, pela lógica o caminho para o jogo está dentro desse jar, examinei uma classe chamada loader e penso que o jogo é carregado a partir deste código:

Object localObject4 = new f((unpack)localObject2);

        Object localObject5 = Class.forName("ga");
        ((d)localObject4).a(-16189, (Class)localObject5, ((Class)localObject5).getName());
        localObject5 = ((d)localObject4).loadClass("ArcanistsMulti");
        synchronized (this) {
          if (m)
          {
            return;
          }
          l = ((Applet)((Class)localObject5).newInstance());
          ((Class)localObject5).getMethod("provideLoaderApplet", new Class[] { p == null ? (loader.p = a("java.applet.Applet")) : p }).invoke(null, new Object[] { this });
          l.init();
          if (b) {
            l.start();
          }
          if (n)
          {
            l.stop();
          }
        }
        a(true);
      }

Minha intensão seria acessar a classe loader a partir de outra classe e fazer um método pra retornar o caminho do jar do jogo, é possível fazer isso?
Se isso ajudar,aqui está a classe loader inteira.

2 Respostas

CristianPalmaSola10

Melhore os nomes das variaveis ou troque para pao salame e queijo de uma vez…

Samuel_Medeiros

Eu renomiei todas as classes e suas variaveis com nomes aleatórios para compreender melhor o que acontece na execução dos arquivos, só que agora tá dando um erro durante a execução:

Error: br.viewer.arcabot.renamed.Loader.run java.lang.Thread.run | br.viewer.arcabot.renamed.Loader.run java.lang.Thread.run
Creio que seja no void run xD
public final void run()
    {
        boolean bool = Cenoura.macaco;
        try { try { hino = getParameter("unsignedurl");
            if (hino != null)
            {
                try
                {
                    SecurityManager localSecurityManager = System.getSecurityManager();
                    if (null != localSecurityManager)
                    {
                        localSecurityManager.checkExec("echo");
                    }
                }
                catch (SecurityException localSecurityException) {
                    ovo = true;
                    try {
                        getAppletContext().showDocument(new URL(hino), "_parent");
                    }
                    catch (Exception localException2)
                    {
                    }
                    return;
                }
            }

            kratos = getParameter("crashurl");

            int i1 = 0;
            String localObject1 = getParameter("cachesubdirid");
            if (null != localObject1)
            {
                i1 = Integer.parseInt((String)localObject1);
                if ((-1 < (i1 ^ 0xFFFFFFFF)) || (Beterraba.graviola.length <= i1))
                {
                    i1 = 0;
                }

            }

            String str1 = getParameter("colourid");
            if (null != str1)
            {
                apolo = Integer.parseInt(str1);
                if ((0 > apolo) || ((apolo ^ 0xFFFFFFFF) <= (Beterraba.dante.length ^ 0xFFFFFFFF))) {
                    apolo = 0;
                }
            }

            lambada = Beterraba.horta[apolo];
            cachorro = getSize().width;

            iguana = getSize().height;
            int i2 = 32;
            try
            {
                int i3 = Integer.parseInt(getParameter("modewhat"));
                i2 += i3;
            }
            catch (Exception localException3)
            {
            }
            try
            {
                String str2 = getParameter("lang");
                if (null != str2)
                {
                    enredo = Integer.parseInt(str2);
                }
            }
            catch (Exception localException4)
            {
            }
            Gazela.abestado(0, Beterraba.graviola[i1], i2);
            Object localObject3;
            if (null != lambada) {
                try
                {
                    bf = new Font(lambada.granoloa, 0, lambada.harpa);
                    bfm = getFontMetrics(bf);
                    colourtext = new Color(lambada.leitoa);
                    bar = adestrado(lambada.decagono, 3000);
                    background = adestrado(lambada.bosta, 3000);
                    left = adestrado(lambada.citronela, 3000);
                    right = adestrado(lambada.kibe, 3000);
                    top = adestrado(lambada.jaca, 3000);
                    bottom = adestrado(lambada.iguana, 3000);
                    bodyLeft = adestrado(lambada.firula, 3000);
                    bodyRight = adestrado(lambada.alcachofra, 3000);
                    bodyFill = adestrado(lambada.estomago, 3000);

                    Image[] arrayOfImage = { bar, background, left, right, top, bottom, bodyLeft, bodyRight, bodyFill };

                    localObject3 = new MediaTracker(this);

                    int i4 = 0;
                    do { if ((i4 ^ 0xFFFFFFFF) <= (arrayOfImage.length ^ 0xFFFFFFFF)) break;
                        ((MediaTracker)localObject3).addImage(arrayOfImage[i4], i4);

                        i4++; } while (!bool);
                    do
                    {
                        try
                        {
                            ((MediaTracker)localObject3).waitForAll();
                        }
                        catch (InterruptedException localInterruptedException) {
                        }
                    }
                    while (!bool);
                }
                catch (Throwable localThrowable1)
                {
                    adotado(0);
                }

            }

            Object localObject2 = null;
            try
            {
                Class.forName("java.util.jar.Pack200");

                localObject3 = azucrinado(Beterraba.berinjela, true);
                if (localObject3 == null)
                {
                    return;
                }
                localObject2 = new Harlem((byte[])localObject3);
            }
            catch (Throwable localThrowable2)
            {
            }

            if (localObject2 == null)
            {
                byte[] localObject4 = azucrinado(Beterraba.agriao, true);
                if (localObject4 == null) {
                    return;
                }

                Unpack localObject5 = new Unpack(localObject4);

                Fedido localf = new Fedido(localObject5);

                Class localClass = Class.forName("br.viewer.arcabot.renamed.Unpack");
                localf.anta(-16189, localClass, localClass.getName());
                localClass = localf.loadClass("unpackclass");

                byte[] arrayOfByte = azucrinado(Beterraba.carne, true);
                if (arrayOfByte == null) {
                    return;
                }
                localObject2 = localClass.getConstructor(new Class[] { Class.forName("[B"), Boolean.TYPE }).newInstance(new Object[] { arrayOfByte, Boolean.TRUE });
            }

            Object localObject4 = new Fedido((Unpack)localObject2);

            Object localObject5 = Class.forName("br.viewer.arcabot.renamed.Gazela");
            ((Dado)localObject4).anta(-16189, (Class)localObject5, ((Class)localObject5).getName());
            localObject5 = ((Dado)localObject4).loadClass("ArcanistsMulti");
            synchronized (this) {
                if (macarrao)
                {
                    return;
                }
                luneta = ((Applet)((Class)localObject5).newInstance());
                ((Class)localObject5).getMethod("provideLoaderApplet", new Class[] { pipoca == null ? (Loader.pipoca = amenizado("java.applet.Applet")) : pipoca}).invoke(null, new Object[]{this});
                luneta.init();
                if (balinha) {
                    luneta.start();
                }
                if (nariz)
                {
                    luneta.stop();
                }
            }
            agitado(true);
        }
        catch (Exception localException1)
        {
            Object localObject1;
            Esfinge.biribinha = [telefone removido];
            if (!(localException1 instanceof InvocationTargetException))
            {
                Esfinge.arretado(null, this, localException1, false); if (!bool);
            }
            else
            {
                localObject1 = ((InvocationTargetException)localException1).getTargetException();
                if ((localObject1 instanceof ThreadDeath)) {
                    return;
                }
                Esfinge.arretado(localException1.toString(), this, (Throwable) localObject1, false);
            }

            abanado((byte)-119, "crash");
        }
        } catch (RuntimeException localRuntimeException) {
            throw Esfinge.assado(localRuntimeException, "loader.run()");
        }
    }
Criado 6 de abril de 2013
Ultima resposta 13 de abr. de 2013
Respostas 2
Participantes 2