linux϶¯Ì¬Á´½Ó¿âµÄ¼ÓÔØ¼°½âÎö¹ý³Ì
http://hi.baidu.com/hust_chen/blog/item/54a8c516231d0c0ec93d6d3e.html
linux϶¯Ì¬Á´½Ó¿âµÄ¼ÓÔØ¼°½âÎö¹ý³Ì£¨ZZ£©
2008-12-18 15:19
±íÃæÉÏ¿´£¬¶¯Ì¬Á´½Ó¿â£¨dll£©µÄ¼ÓÔØ¼°½âÎöÊÇÒ»¸öÊ®·Ö·±¸´µÄ¹ý³Ì£¬ÆäÖÐÇ£Éæµ½µÄÊý¾Ý½á¹¹¼°ÆäÖ®¼äµÄ¹ØÏµÒ²ÈÃÈËÍû¶øÉúη¡£Whatever£¬Ñ§Ï°Õâ ÊÂÇ飬˵µ½µ×ÊÇûÓнݾ¶¿É×ߵ쬳ýÁËËÀ¿Ð½öÓеÄһЩ×ÊÁÏ£¬ÈçELF format¡¢Loaders and Linkers£¬½èÓÃobjdump¼°gdbÀ´¸ú×Ù³ÌÐòµÄÖ´ÐÐÁ÷³Ì£¬¶ÔÓÚÀí½â¹ý³ÌÒ²ÊÇÆÄÓаïÖúµÄ£¬anyway£¬²»ÏÓ·³¾ÍºÃÁË¡£
ÔÚ²»Í¬µÄÌåϵÏ£¬dllµÄ¼ÓÔØ¼°½âÎö¹ý³ÌÊÇÓвî±ðµÄ£¬ÕâÊÇÒòΪ²»Í¬ÌåϵÏÂÉú³ÉµÄELFÎļþ²»¾¡Ïàͬ£¬Æ©Èç˵£¬ÔÚIA32Ï£¬»áÉú³É.pltÕâ¸ödynamic section£¬µ«µ½ÁËMIPSÏ£¬±ã³ÉÁË.MIPS.stubs¡£
¾¡¹ÜÈç´Ë£¬Åųý±íÃæÉϵIJîÒ죬Æä±¾ÖÊÈ´ÊÇÒ»Öµġ£ÏÈ˵˵ELFÎļþµÄformat£¬ELFʵÖÊÊÇ¿ÉÖ´ÐÐÎļþµÄÒ»ÖÖ¸ñʽ£¬¶ÔÓÚ»úÆ÷¶øÑÔ£¬ËùÓеĿÉÖ´ÐÐÎļþ²» ¹ýÊǶþ½øÖÆ´úÂëµÄÁ÷Ë®°ÕÁË£¬µ«ÎªÁË·½±ã¹ÜÀíÕâЩ¶þ½øÖÆ´úÂ룬±àÒëÆ÷±ã½«ÕâЩ»úÆ÷Âë·ÖΪ¼¸¸ö¶Î£¬²¢Í³¼Æ³öÏà¹ØµÄÐÅÏ¢£¬Í¨Ë×µØËµ£¬Ò²¾ÍÊǶԻúÆ÷Âë°ü×°°ü×°¶ø ÒÑ¡£Technically speaking, ÿ¸öELFÎļþ¶¼ÓÐÒ»¸öELF header£¬±£´æµÄÊÇprogram headerÓësection headerµÄÆ«ÒÆÁ¿¡£¹ØÓÚprogram headerÓësection header£¬ÒÔºóÔÙ˵ß¡£
Èç¹ûij¸öÎļþÊǶ¯Ì¬±àÒëµÄ£¬ÄÇôÆä¶ÔÓ¦µÄELFÎļþÖп϶¨»áÓÐÒ»¸ö.dynamic section£¬Õâ¸ösection°üº¬ÁËdllµÄ¼ÓÔØÓë½âÎöËùÐèÒªµÄÐÅÏ¢¡£.dynamicÖеÄentryÒòÀàÐͲ»Í¬¶ø±»¸³Ó費ͬµÄº¬Ò壬×îΪ³£ÓõÄÊÇÏÂÃæ¼¸ÖÖÀàÐ͵Äentry£º
·DT_NEEDED£ºd_tag=1£¬d_valÖеÄֵΪneeded libraryµÄnameÔÚstring tableÖÐÆ«ÒÆÁ¿¡£Èç¹ûËùÐèÒª¶¯Ì¬¿âµÄÊýÁ¿Îªn¸ö£¬ÔòÏàÓ¦ÀàÐÍΪDT_NEEDEDµÄentryÒ²Ó¦¸ÃÓÐnÌõ£»
·DT_PLTGOT£ºd_tag=3£¬d_ptrÖеÄֵΪ.plt£¨procedure linkage table£©»ò.got£¨global offset table£©µÄÆðʼµØÖ·£¬ÔÚMIPSÌåϵÏ£¬Õâ¸öÖµÊÇÖ¸Ïò.gotµÄÆðʼµØÖ·£»
·DT_HASH£ºd_tab=4£¬d_ptrÖеÄֵΪhash tableµÄÆðʼµØÖ·£»
·DT_STRTAB£ºd_tab=5£¬d_ptrÖеÄֵΪstring tableµÄÆðʼµØÖ·£»
·DT_SYMTAB£ºd_tab=6£¬d_ptrÖеÄֵΪsymbol tableµÄÆðʼµØÖ·£»
·DT_RPATH£ºd_tab=15£¬d_valÖеÄֵΪneeded libraryËùÔڵķ¾¶Ãû³Æ£¨×¢£ºneeded library²»Ò»¶¨¾Í»áÔÚÕâ¸ö·¾¶Ï£¬detail²Î¼ûdllµÄ¼ÓÔØ¹ý³Ì£©ÔÚstring tableÖÐµÄÆðʼµØÖ·¡£
ÕâÀïÃæÇ£Éæµ½ÁËÒ»Ð©ÖØÒªµÄÊý¾Ý½á¹¹£º
(1) hash table£ºÆä×÷ÓÃÊǸù¾Ýsymbol nameÕ
Ïà¹ØÎĵµ£º
linuxÃüÁîÐÐÏÂÖÐÎÄÎļþÃûÂÒÂëµÄ½â¾ö·½·¨
Ê×ÏȲéѯ֧³ÖµÄ±àÂë:
locale -a
Èç¹ûûÓÐÄãÐèÒªµÄ±àÂ룬ÀýÈçzh_CN.utf8
rootÔËÐÐ: #dpkg-reconfigure locales
Ñ¡ÔñÄãÐèÒªµÄ±àÂ룬ÓÿոñÑ¡ÖУ¬¿É¶àÑ¡¡£tabÑ¡Ôñ“OK”£¬»Ø³µ¡£
ĬÈϱàÂëÑ¡Ôñzh_CN.utf8
°²×°ÄãËùÐèÒªµÄ±àÂë¡£
ÐÞ¸Ä/etc/profile,
×¢Ê͵ô
export LC ......
˵ÊÇexecϵͳµ÷Óã¬Êµ¼ÊÉÏÔÚLinuxÖУ¬²¢²»´æÔÚÒ»¸öexec()µÄº¯ÊýÐÎʽ£¬execÖ¸µÄÊÇÒ»×麯Êý£¬Ò»¹²ÓÐ6¸ö£¬·Ö±ðÊÇ£º
#include <unistd.h>
int execl(const char *path, const char *arg, ...);
int execlp(const char *file, const char *arg, ...);
int execle(const char *path, const c ......
1.¿ÉÖ´ÐгÌÐò
os.system('pgrep %s > %s' % (process, output))
pidfile = open("output", 'r')
totalpid = len(pidfile.readlines())
pidfile.close()
if totalpid == 0 :
&nbs ......
linuxÏÂÓÐרÃŵÄÎļþϵͳÓÃÀ´¶ÔÉ豸½øÐйÜÀí£¬devfsºÍsysfs¾ÍÊÇÆäÖÐÁ½ÖÖ¡£
1£¬devfs£ºdevfsÊÇÔÚ2.4Äں˾ͳöÏÖÁË£¬ËüÊÇÓÃÀ´½â¾ölinuxÖÐÉ豸¹ÜÀí»ìÂÒµÄÎÊÌ⣬linuxÄں˿ª·¢ÈËÔ±¿ª·¢ÁËdevfs¡£
2£¬sysfs£ºÊÇLinux ÄÚºËÖÐÉè¼Æ½ÏеÄÒ»ÖÖÐéÄâµÄ»ùÓÚÄÚ´æµÄÎļþϵͳ£¬ËüµÄ×÷ÓÃÓëproc ÓÐЩÀàËÆ£¬µ« ......
xxxx.tar.gzÎļþʹÓÃtar´øzxvf²ÎÊý£¬¿ÉÒÔÒ»´Î½âѹ¿ª¡£XXXXΪÎļþÃû¡£ ÀýÈ磺
$tar zxvf xxxx.tar.gz
gzip -d
Óï ·¨£ºgzip [-acdfhlLnNqrtvV][-S <ѹËõ×Öβ×Ö·û´®>][-<ѹËõЧÂÊ>][--best/fast][Îļþ...] »ò gzip [-acdfhlLnNqrtvV][-S <ѹËõ×Öβ×Ö·û´®>][-<ѹËõЧÂÊ>][--best/fast][Ŀ¼]
²¹³äË ......