Hackeando as classes do MIDP

8 respostas
Bani

Estou precisando de uma ajudinha para debugar uma classe do MIDP 2.

Meu objetivo é rodar um wav no formato ADPCM em um celular, que teoricamente tem suporte a esse formato. Porém, quando vou testar no emulador do WTK, recebo a seguinte Exception:

javax.microedition.media.MediaException: malformed wav media at com.sun.mmedia.WavPlayer.readHeader(+348)

Então fui lá no midpapi20.zip e descompilei a classe WavPlayer para ver que tipo de header ela estava esperando, e descobri que na verdade ela faz throw dessa Exception no caso de IOException, como mostrado a seguir:

catch(IOException e) { throw new MediaException("malformed wav media"); }

Achei isso meio estranho então fui tentar incluir um printStackTrace dentro desse catch, porém ao tentar compilar a classe descobri que ela é totalmente bizarra, portanto não compila.

Por exemplo, um dos métodos dela é assim:

public long doGetMediaTime() { long pos; label0: { pos = 0L; long l; synchronized(waveLock) { if(sampleRate != 0) break label0; l = 0L; } return l; } if(waveOut != null) pos = waveOut.getSamplesPlayed(); else pos = lastPos; obj; JVM INSTR monitorexit ; goto _L1 exception; throw exception; _L1: long nano = ((pos - lastPos) * 0xf4240L) / (long)sampleRate + origin; return nano; }

Então minha dúvida é: como conseguiram colocar essas coisas estranhas no meio do código, especialmente nessa parte final do método?
Eu pensava que para usar coisas “não Java” o método deveria ser declarado como native e ficar vazio.

8 Respostas

cv1

Tem certeza que isso nao eh pau na hora de descompilar? Isso nem codigo Java valido eh! :slight_smile:

Bani

Realmente, deve ter sido pau de descompilação.

Qual descompilador vocês recomendam? Estava usando o jad.

danieldestro

Tenta o Decafé.
http://decafe.hypermart.net

luiz_ross

Tem esse tambem

DJ Java Decompiler

http://members.fortunecity.com/neshkov/dj.html

cv1

“danieldestro”:
Tenta o Decafé.
http://decafe.hypermart.net

404 :?

danieldestro

http://downloads-zdnet.com.com/3000-2417-10227091.html

Caramba, nem o de cima funfa mais…

Acho que descontinuaram o produto.

soaresinfo

Ainda tem um lugar onde conseguir o decafe, entra lá:
ftp://ftp.iis.com.br/pub/.1/simtel/win95/java/

sergio_br

Para que descompilar a classe, se é possível obter O FONTE original…
:shock: :shock: :shock:
Baixe a api, tem os fonte TODOS em java

Criado 26 de março de 2004
Ultima resposta 18 de jun. de 2007
Respostas 8
Participantes 6