Dostal som súbor java dll s aplikáciou, ktorú som stiahol. Tento súbor DLL bol napísaný v jazyku Java a teraz ho chcem dekompilovať.
Tu je spôsob, akým nazývam dll, ktorý obsahuje pohár:
new JarInputStream(getClass().getResourceAsStream("jarjava.dll"));
Existuje spôsob, ako ju dekompilovať?
odpovede:
1 pre odpoveď č. 1Zdrojové súbory Java sú kompilované do súborov .class. Pokiaľ viem, neexistuje žiadny štandardný spôsob kompilácie kódu javy do DLL.
Čo sa tu mohlo stať:
- Toto je C kód napísaný proti API JNI, ktorý sa má použiť na interakciu s (alebo z) Java kódu;
- Toto je kód Java, ktorý bol (automaticky) prevedený na kód C pomocou nejakého nástroja a potom kompilovaný do DLL.
- Toto je súbor JAR, ktorý niekto premenoval na DLL. V takom prípade ju premenujte, rozbaľte JAR a dekompilujte JAR s dekompilátorom Java.
Bez toho, aby ste vedeli niečo o pôvode tejto DLL, nie je veľa čo môžete urobiť. Vyskúšajte dekompilátor C, ale pravdepodobne sa nedostanete ďaleko.
0 pre odpoveď č. 2
Môžete si prečítať kód stroja a preložiť ho späť do C sami. Nie je to jednoduché, pretože celý bod (možno iba bod) zostavovania kódu na natívne je robiť ťažšie dekompilovať.
0 pre odpoveď č. 3
Problém je vyriešený.
Tu som to urobil:
Prečítajte si súbor:
JarInputStream input = new JarInputStream(getClass().getResourceAsStream("/myjar.dll"));
Napíšte nový súbor pre každú položku:
JarEntry entry;
while ((entry = input.getNextJarEntry()) != null)
{
// Write file
}