• [^] # Re: C'est trop compliqué !

    Posté par . En réponse au journal Des langages de haut niveau. Évalué à 1.

    Pas besoin d'étaler ta science,
    Je n'étale pas ma science, mais d'un coté tu dis que les langages de haut niveau sont trop complexes et n'apportent rien et de l'autre tu donnes des exemples de langages de plus haut niveau que le C qui apportent des plus en terme de sécurité, de calreté de code ou de prouvabilité. Choisi ton camps camarade. Tout ce que je dis est que du point de vue de l'OS peut importe que ce soit un programme en C ou un programme tournant sur une JVM, les droits seront les mêmes, les erreurs potentielles aussi.

    Je te mets au défi d'écrire un programme en Java pur (pas d'appel à du code natif hein)
    Je prend ton "pas d'appel à du code natif" comme une interdiction d'utiliser des commandes extérieures à java. Cependant pour aller en dehors de la zone mémoire allouée, il va quand même falloir taper sur des appels systèmes à l'OS.

    La façon la plus simple de faire celà est d'aller modifier le bytecode d'une des classe de base. Ca se fait très bien avec javassist par exemple : http://www.csg.is.titech.ac.jp/~chiba/javassist/
    Cette bibliothèque java permet de changer à la volée les noms, les méthodes et dans une certaine mesure les types des classes chargées.

    Je te laisse jeter un coup d'oeuil à ce qu'il est possible de faire notamment la dernière partie du tutorial :
    http://www.csg.is.titech.ac.jp/~chiba/javassist/tutorial/tut(...)
    Et ici
    http://www.csg.is.titech.ac.jp/~chiba/javassist/tutorial/tut(...)
    Section 5.4 on voit comment il est possible de générer une séquence arbitraire de bytecode.

    Bref on a tout ce qu'il faut pour envoyer la JVM dans le mur (même si la bibliothèque étant bien faite, ilf aut quand même y aller)