• [HS] Patche de binnaires ?

    From ptilou@21:1/5 to All on Tue Sep 19 15:00:01 2023
    Slt,

    Je me demande si il existe des lectures pour savoir comment manipuler des binaires et puis de les patchers ?

    Je sais qu'il y a des personnes qui sont capable de lire le binnaire ( en plus de programmes qui font du reverse et modifie les fichiers encapsules !), et donc j'aimerai apprendre les fondements de la technique a optimiser le binaire, que dois je lire (?)
    , je n'ai pas vue de question a ce sujet, je l'ai vue en action a la St Olivetti (optimiser le binaire) ...

    Je me demande si seulement vous ne savez pas le faire, et que le patche kernel ou autre ce fait par script et comparaison du binaires sortie de compile avec diff ?

    Merci

    --
    Ptilou

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Basile Starynkevitch@21:1/5 to ptilou on Tue Sep 19 15:50:01 2023
    This is a multi-part message in MIME format.
    On 9/19/23 14:40, ptilou wrote:
    Slt,

    Je me demande si il existe des lectures pour savoir comment manipuler des binaires et puis de les patchers ?

    Je sais qu'il y a des personnes qui sont capable de lire le binnaire ( en plus de programmes qui font du reverse et modifie les fichiers encapsules !), et donc j'aimerai apprendre les fondements de la technique a optimiser le binaire, que dois je lire (
    ?) , je n'ai pas vue de question a ce sujet, je l'ai vue en action a la St Olivetti (optimiser le binaire) ...

    Je me demande si seulement vous ne savez pas le faire, et que le patche kernel ou autre ce fait par script et comparaison du binaires sortie de compile avec diff ?


    Je comprends qu'il s'agit de patcher des executables binaires (au format
    ELF).

    Si le binaire est propriétaire, il y a des cas où c'est illégal. A voir
    avec son employeur ou avocat et la licence logicielle du binaire.

    Si modifier un binaire est légal, c'est en pratique très compliqué. Si
    on peut lancer le binaire (sous gdb) c'est mieux. Car en pratique un
    binaire a des dépendances (utiliser /usr/bin/ldd pour les découvrir,
    voir aussi les greffons chargés par https://man7.org/linux/man-pages/man3/dlopen.3.html ...).

    Si on peut arrêter un processus exécutant ce binaire, voir aussi https://man7.org/linux/man-pages/man5/proc.5.html


    Un binaire sous Linux peut aussi et légitimement modifier son propre
    code .... https://asmjit.com/ et https://gcc.gnu.org/onlinedocs/jit/ et https://en.wikipedia.org/wiki/Self-modifying_code etc

    (un exemple réaliste est https://sbcl.org/ ou http://refpersys.org/ ....)

    Des outils comme
    https://sourceware.org/binutils/docs/binutils/readelf.html et https://binsec.github.io/ et https://www.sourceware.org/gdb/ peuvent aider.

    Ma préférence est pour le logiciel libre, et dans ce cas là, il est plus simple de recompiler le code source après l'avoir modifié.

    --
    Basile Starynkevitch<basile@starynkevitch.net>
    (only mine opinions / les opinions sont miennes uniquement)
    92340 Bourg-la-Reine, France
    web page: starynkevitch.net/Basile/

    <!DOCTYPE html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
    <body>
    <p><br>
    </p>
    <div class="moz-cite-prefix">On 9/19/23 14:40, ptilou wrote:<br>
    </div>
    <blockquote type="cite"
    cite="mid:a9646116-f848-432f-80b7-d7ffe1947430n@googlegroups.com">
    <pre class="moz-quote-pre" wrap="">Slt,

    Je me demande si il existe des lectures pour savoir comment manipuler des binaires et puis de les patchers ?

    Je sais qu'il y a des personnes qui sont capable de lire le binnaire ( en plus de programmes qui font du reverse et modifie les fichiers encapsules !), et donc j'aimerai apprendre les fondements de la technique a optimiser le binaire, que dois je lire (?)
    , je n'ai pas vue de question a ce sujet, je l'ai vue en action a la St Olivetti (optimiser le binaire) ...

    Je me demande si seulement vous ne savez pas le faire, et que le patche kernel ou autre ce fait par script et comparaison du binaires sortie de compile avec diff ?</pre>
    </blockquote>
    <p><br>
    </p>
    <p>Je comprends qu'il s'agit de patcher des executables binaires (au
    format ELF).</p>
    <p>Si le binaire est propriétaire, il y a des cas où c'est illégal.
    A voir avec son employeur ou avocat et la licence logicielle du
    binaire.</p>
    <p>Si modifier un binaire est légal, c'est en pratique très
    compliqué. Si on peut lancer le binaire (sous gdb) c'est mieux.
    Car en pratique un binaire a des dépendances (utiliser
    /usr/bin/ldd pour les découvrir, voir aussi les greffons chargés
    par <a class="moz-txt-link-freetext" href="https://man7.org/linux/man-pages/man3/dlopen.3.html">https://man7.org/linux/man-pages/man3/dlopen.3.html</a> ...).</p>
    <p>Si on peut arrêter un processus exécutant ce binaire, voir aussi
    <a class="moz-txt-link-freetext" href="https://man7.org/linux/man-pages/man5/proc.5.html">https://man7.org/linux/man-pages/man5/proc.5.html</a></p>
    <p><br>
    </p>
    <p>Un binaire sous Linux peut aussi et légitimement modifier son
    propre code .... <a class="moz-txt-link-freetext" href="https://asmjit.com/">https://asmjit.com/</a> et
    <a class="moz-txt-link-freetext" href="https://gcc.gnu.org/onlinedocs/jit/">https://gcc.gnu.org/onlinedocs/jit/</a> et
    <a class="moz-txt-link-freetext" href="https://en.wikipedia.org/wiki/Self-modifying_code">https://en.wikipedia.org/wiki/Self-modifying_code</a> etc</p>
    <p>(un exemple réaliste est <a class="moz-txt-link-freetext" href="https://sbcl.org/">https://sbcl.org/</a> ou
    <a class="moz-txt-link-freetext" href="http://refpersys.org/">http://refpersys.org/</a> ....)<br>
    </p>
    <p>Des outils comme
    <a class="moz-txt-link-freetext" href="https://sourceware.org/binutils/docs/binutils/readelf.html">https://sourceware.org/binutils/docs/binutils/readelf.html</a> et
    <a class="moz-txt-link-freetext" href="https://binsec.github.io/">https://binsec.github.io/</a> et  <a class="moz-txt-link-freetext" href="https://www.sourceware.org/gdb/">https://www.sourceware.org/gdb/</a>
    peuvent aider.</p>
    <p>Ma préférence est pour le logiciel libre, et dans ce cas là, il
    est plus simple de recompiler le code source après l'avoir
    modifié.<span style="white-space: pre-wrap">
    </span></p>
    <pre class="moz-signature" cols="72">--
    Basile Starynkevitch <a class="moz-txt-link-rfc2396E" href="mailto:basile@starynkevitch.net">&lt;basile@starynkevitch.net&gt;</a>
    (only mine opinions / les opinions sont miennes uniquement)
    92340 Bourg-la-Reine, France
    web page: starynkevitch.net/Basile/

    </pre>
    </body>
    </html>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Stephane Bortzmeyer@21:1/5 to ptilou@gmail.com on Fri Sep 22 15:20:01 2023
    On Tue, Sep 19, 2023 at 05:40:55AM -0700,
    ptilou <ptilou@gmail.com> wrote
    a message of 19 lines which said:

    Je me demande si il existe des lectures pour savoir comment
    manipuler des binaires et puis de les patchers ?

    emacs (son hexl-mode est très bien pour ça). Mais, comme l'a noté
    Basile, c'est très compliqué et il y a plein de pièges.

    Je sais qu'il y a des personnes qui sont capable de lire le binnaire
    ( en plus de programmes qui font du reverse

    Si c'est un exécutable, un désassembleur fait ça très bien.

    % objdump --disassemble-all binaire.elf
    ...
    46e548: 48 89 7c 24 78 mov %rdi,0x78(%rsp)
    46e54d: 48 89 74 24 60 mov %rsi,0x60(%rsp)
    46e552: 48 01 fa add %rdi,%rdx
    ...

    je l'ai vue en action a la St Olivetti (optimiser le binaire) ...

    Mais s'agissait-il d'exécutables ? Ou bien de fichiers comme les
    formats png ou pcap ?

    le patche kernel ou autre ce fait par script et comparaison du
    binaires sortie de compile avec diff ?

    Euh, non, on ne fait plus ça depuis au moins 25 ans (je me souviens,
    il y a très longtemps, avoir vu un administrateur système patcher un
    noyau SunOS vivant et en production, avec un débogueur ; c'était
    l'époque où changer les paramètres du noyau nécessitaient ce genre de manipulations, moi, je n'ai jamais osé).

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)