Modifier un .class ???

Modifier un .class ??? - Java - Programmation

Marsh Posté le 20-01-2003 à 18:45:57    

Avec kel logiciel peut on modifier un .class ?? (si C possible)
 
                                      Merci :jap:

Reply

Marsh Posté le 20-01-2003 à 18:45:57   

Reply

Marsh Posté le 20-01-2003 à 18:51:52    

Blackangel a écrit :

Avec kel logiciel peut on modifier un .class ?? (si C possible)
 
                                      Merci :jap:


 
pq tu ne modifies pas la source? ... Et si tu ne l'as pas, ban :o


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 20-01-2003 à 20:43:07    

:sweat:  :cry:  :sweat:

Reply

Marsh Posté le 20-01-2003 à 21:33:41    

C'est assez difficile, parait-il, mais bon, comme le suggère DarkLord, vois plutôt avec les sources.


---------------
Le site de ma maman
Reply

Marsh Posté le 20-01-2003 à 21:50:14    

Mai sinon C possible ?????

Reply

Marsh Posté le 20-01-2003 à 21:56:36    

Blackangel a écrit :

Mai sinon C possible ?????

Lorsque je faisais de la recherche, j'ai lu des papiers similaires faisant état de ce genre de pratiques... Mais très franchement, tente la décompilation du class en cherchant un freeware sur google, si ça marche pas, lâche l'affaire.
 
En revanche, je t'avertis que tu n'as pas le droit de décompiler à la sauvage. C'est interdit.


---------------
Le site de ma maman
Reply

Marsh Posté le 20-01-2003 à 22:09:00    

Cherrytree a écrit :

Lorsque je faisais de la recherche, j'ai lu des papiers similaires faisant état de ce genre de pratiques... Mais très franchement, tente la décompilation du class en cherchant un freeware sur google, si ça marche pas, lâche l'affaire.
 
En revanche, je t'avertis que tu n'as pas le droit de décompiler à la sauvage. C'est interdit.

:sarcastic:


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 21-01-2003 à 10:09:45    

Blackangel a écrit :

Avec kel logiciel peut on modifier un .class ?? (si C possible)
 
                                      Merci :jap:


 
Je recherche aussi une solution et il existe un package completely gratos qui s'appelle BCEL. tu tapes BCEL dans google et le tour est joué (BCEL.JAR)
 
Par contre pour l'utiliser c'est assez hard, je suis dessus depuis 3 heures et j'ai juste réussi à inclure une nouvelle méthode ds une classe. Bon courage

Reply

Marsh Posté le 21-01-2003 à 10:12:03    

tomlameche a écrit :


Par contre pour l'utiliser c'est assez hard, je suis dessus depuis 3 heures et j'ai juste réussi à inclure une nouvelle méthode ds une classe. Bon courage


Mmh ca peut m'interesser ca... Depuis le temps que je veux ajouter des méthodes a l'execution... Ca se passe comment ? ca modifie le .class, ou ca rajoute la méthode a l'exécution ?

Reply

Marsh Posté le 21-01-2003 à 10:17:21    

lorill a écrit :


Mmh ca peut m'interesser ca... Depuis le temps que je veux ajouter des méthodes a l'execution... Ca se passe comment ? ca modifie le .class, ou ca rajoute la méthode a l'exécution ?  


 
Ca rajoute les méthodes à l'éxécution.
 
Il existe aussi 2 autres sources de ce type SERP et (je ne me souviens plus)

Reply

Marsh Posté le 21-01-2003 à 10:17:21   

Reply

Marsh Posté le 21-01-2003 à 13:50:10    

lorill a écrit :


Mmh ca peut m'interesser ca... Depuis le temps que je veux ajouter des méthodes a l'execution... Ca se passe comment ? ca modifie le .class, ou ca rajoute la méthode a l'exécution ?  


 
Tu peux aussi réécrire la classe. Je viens de tester et ca marche à merveille.

Reply

Marsh Posté le 21-01-2003 à 14:00:37    

jode
j'ai déjà eu l'occasion d'utiliser (un malheureux 'rm -fr * ' au lieu de 'rm -fr *~' et voilà que ...
De plus, une interface graphique c'est cool

Reply

Marsh Posté le 21-01-2003 à 14:59:09    

tomlameche a écrit :


Tu peux aussi réécrire la classe. Je viens de tester et ca marche à merveille.


oui mais ca je veux pas faire... Pour rajouter une méthode a String par exemple, je préfère le faire au chargement de l'appli que de modifier une classe du jdk

Reply

Marsh Posté le 21-01-2003 à 15:06:47    

Attention, c'est différent et la meilleure solution est écrire une class myString qui hérite de la String de jdk Et donc dans tous tes prog. tu utilise ta classe ... sinon, impossible (mais en plus stupide, très limitée et inutile)

Reply

Marsh Posté le 21-01-2003 à 15:15:33    

western a écrit :

Attention, c'est différent et la meilleure solution est écrire une class myString qui hérite de la String de jdk Et donc dans tous tes prog. tu utilise ta classe ... sinon, impossible (mais en plus stupide, très limitée et inutile)


je sais tout ca, merci  :sarcastic:  
 
Mais ce que je veux c'est rajouter des trucs aux types de base. Ce qui est faisable sans problème dans pas mal de langages (ruby, python, smalltalk pour ne citer qu'eux).  
 
L'interet est surement discutable, mais avant le jdk1.4 y'avait pas de split dans String par exemple. Si je veux en faire un, j'ai deux solutions : une méthode de classe qui prends une String en parametre, ou un MyString. Les deux sont moches d'un point de vue objet.
 
C'est justement pour cela qu'ajouter des méthodes au runtime peut m'interesser, mais si ca marche pas tant pis, je me débrouille sans.

Reply

Marsh Posté le 21-01-2003 à 15:42:30    

western a écrit :

Attention, c'est différent et la meilleure solution est écrire une class myString qui hérite de la String de jdk


 
String est final pour ton info ...  :sarcastic:


Message édité par darklord le 21-01-2003 à 15:43:42

---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 21-01-2003 à 15:45:14    

DarkLord a écrit :


String est final pour ton info ...  :sarcastic:


jamais compris pourquoi non plus... on est obligé d'encapsuler tout ca :/

Reply

Marsh Posté le 21-01-2003 à 15:46:23    

western a écrit :

Attention, c'est différent et la meilleure solution est écrire une class myString qui hérite de la String de jdk  


 
Ca va être dur, String est finale
 
[:grillaid]


Message édité par kadreg le 21-01-2003 à 15:46:43

---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 21-01-2003 à 16:16:49    

Effectivement, avec final c'est plus dur mais pas on peut ne pas hériter ...

Reply

Marsh Posté le 21-01-2003 à 16:19:19    

western a écrit :

Effectivement, avec final c'est plus dur mais pas on peut ne pas hériter ...


 
 :heink:


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 21-01-2003 à 16:22:32    


lorill a écrit :


jamais compris pourquoi non plus... on est obligé d'encapsuler tout ca :/

Reply

Marsh Posté le 21-01-2003 à 16:25:16    

un truk bourrin:
 

Code :
  1. public class MyString
  2. {
  3. private String str = new String();
  4. //recopie de tout les fonctions de String ...
  5. public byte [] getBytes(){return str.getBytes();}
  6. public ta_fonction(){}
  7. }


Message édité par western le 21-01-2003 à 16:25:47
Reply

Marsh Posté le 21-01-2003 à 16:27:27    


 
Oui, je sais ;)
 
Le problème, c'est que dans ce cas, une myString, n'est pas une string. C'est un peu pénible de la passer en paramètre à  
 
File.File(String pathname)  
 
par exemple (oui, toString, je sais).
 
Et ça l'est encore plus d'affecter le résultat de File.getName à une MyString (sauf une static MyString.fromString).  
 
Mais je trouve ça un poil lourd à écrire, j'aimerais éviter de "caster" continuellement ;)


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 21-01-2003 à 16:31:54    


tout a fait d'accord, c'est bien pour ca que je préfère rajouter réellement la méthode a la classe  [:sinclaire]  
 
 
<pub>d'ailleurs en Lucane ca se fait (presque) sans probleme</pub>

Reply

Marsh Posté le 21-01-2003 à 16:33:41    

bah oui c'est penible avec MyString ...
Le problème d'ajouter des fonctions aux sources de JDK est que l'appli n'est plus portable ...

Reply

Marsh Posté le 21-01-2003 à 16:35:22    

L'avenir est aux langages ayant des structures de données modifiables dynamiquement à l'éxécution. \o/


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 21-01-2003 à 21:43:13    

kadreg a écrit :

L'avenir est aux langages ayant des structures de données modifiables dynamiquement à l'éxécution. \o/

python \o/
 
 
(euh en fait jsuis meme pas sur de ce que je dis  :ange: )


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 23-01-2003 à 15:33:54    

tomlameche a écrit :


 
Ca rajoute les méthodes à l'éxécution.
 


 
N'importe quoi...  
 
Je m'explique :
 
Hotswap est actuellement une des rares solutions pour modifier des classes a la volee a l'execution (et la seule integree a la VM depuis la JDK 1.4)... Et il se limite au remplacement du bytecode des corps de methodes (donc pas de modifications de signatures, ajouts de methodes)
 
Pour la JDK 1.5 ils prevoient plus mais d'apres ma derniere discussion l'ete dernier avec le responsable de Hotswap, ils n'etaient meme pas sur de continuer a bosser dessus faute de financement (ca a peut etre change depuis).
 
De toute facon le hotswap pose enormement de problemes (c.f. recherche sur le USE.)
 
Sinon BCEL, Javacc, SOOT sont des outils permettant le bytecode rewriting. Apres reecriture tu peux reloader une classe, mais il te faudra enlever toute reference a celle-ci du cache de la VM : c-a-d faire un GC sur le classloader qui a loade la classe. Ca n'a rien d'une modification a l'execution (a chaud).

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed