¨t²Î¡G
Linux Mandrake 8.0

¦WºÙ¡G
doexec

¦ì¸m¡G
/bin/doexec

¥D­n¥Î³~¡G
°õ¦æ¤@­Ó°õ¦æÀÉ¡A¨Ã«ü©w¥ô·Nªºargv[0]·í§@°Ñ¼Æ¡C

¨Ï¥Î»¡©ú¡G
doexec /path/to/executable argv[0] [argv[1-n]]

´y­z¡G
doexec¥u¬O°õ¦æ¤@­Ó°õ¦æÀÉ¡A¨Ã¥BÀHµÛ°Ñ¼Æ¡C¥LÅý§A¥i¥H«ü©wargv[0] ·í§@°Ñ¼Æ¡A¦Ó¤£¥u¬O³æ³æ¤@­Ó°õ¦æÀɦWºÙ¦Ó¤w¡C

¥\¯à¿ï¶µ¡G
¦bµ{¦¡¦WºÙ¤Îargv[0]«áªº©Ò¦³°Ñ¼Æ³£·|¶Çµ¹µ{¦¡°õ¦æ¡C

shared library¡G

/lib/libc.so.6 (0x4001c000)
/lib/ld-linux.so.2 (0x40000000)

¨Ï¥Î½d¨Ò¡G

¥H¤U¬O¤@­Óshell script
#!/bin/bash
echo $*

$doexec ./passargv.sh 1 2 3 4 5
2 3 4 5


¨t²Î¡G
Linux Mandrake 8.0

¦WºÙ¡G
ping

¦ì¸m¡G
/bin/ping

¥D­n¥Î³~¡G
¶Ç°eICMP ECHO_REQUEST«Ê¥]µ¹ºô¸ô¤Wªº¥D¾÷

¨Ï¥Î»¡©ú¡G
ping [-LRUbdfnqrvV] [-c count] [-i interval] [-l preload] [-p pattern] [-s packetsize] [-t ttl] [-w deadline] [-I interface address] [-Ttimestamp option] [-Q tos] [-M hint] host

´y­z¡G
ping¨Ï¥ÎICMP¨ó©w¤¤ªºECHO_REQUEST«Ê¥]¥hIJµoºô¸ô¤Wªº¤@¥x¥D¾÷¡A¨Ï¨ä¦^°eECHO_RESPONSE«Ê¥]¡C ECHO_REQUEST«Ê¥]¦³IP©MICMPªº¼ÐÀY¡Aºò±µµÛ¬Ostruct timeval(¤@¬q®É¶¡¶¡®æ)¡A³Ñ¤U«h¥Ñpad (¶ñ¶ë«Ê¥]¥Î)¨Ó±N«Ê¥]¶ñº¡¡C

¥\¯à¿ï¶µ¡G

-b ¤¹³\¥hpinging¤@­Ó¼s¼½¦ì§}¡C

-c count

¶Ç°e"count"­ÓECHO_REQUEST«Ê¥]¤§«á°±¤î¶Ç°e¡C©M"-w deadline"¥\¯à¤@°_¥Îªº¸Ü¡Aping·|µ¥«Ý"count"­Ó ECHO_REPLY«Ê¥]ª½¨ì®É¶¡¨ì¬°¤î¡C

-d ³]©wSO_DEBUG¥\¯à¦b¤@­Ó¨Ï¥Îªºsocket¡C

-f ¦p²r¤ô¯ëºÆ¨gªºping¡C¶Ç°e«Ê¥]ªº³t«×¥i¹F±µ¦¬«Ê¥] ªº³t«×ªº¦Ê­¿¬Æ¦Ü§ó¦h¡C¹ï¨C¤@­Ó°e¥X¥hªºECHO_REQUEST

·|¦b¿Ã¹õ¤W¦L¥X"."¡A¦Ó¹ï¨C¤@­Ó¦¬¨ìªºECHO_REPLY«h·|¦L¥Xbackspace¡C³o¥i¥H´£¨Ñ¤@­Ó¹ï¦³¦h¤Ö«Ê ¥]¥á±¼ªº §Ö³tªí¹F¤è¦¡¡C

-i wait

¦b¶Ç°e¨C¤@­Ó«Ê¥]¤§¶¡µ¥"wait"ªº®É¶¡¡C¹w³]­È¬O¤@¬í¡C³o¥\¯à¿ï¶µ©M¥\¯à¿ï¶µ" -f "¤£¬Û®e¡C

-I interface address

«ü©w¤@­Óinterface address¨Ó·í¨Ó·½¦ì§}¡C

-l preload ¥H³Ì§Öªº³t«×°e¥X"preload"­ÓECHO_REQUEST«Ê¥] ¤§«á¡A«K¦^´_¨ìping¤@¯ëªº¹B§@¼Ò¦¡¡C¥u¦³¶W¯Å¨Ï¥ÎªÌ¯à¨Ï

¥Î³o­Ó¥\¯à¿ï¶µ¡C

-L À£§ímulticast«Ê¥]ªºloopback¡C³o¿ï¶µ¥u¯à¥Î¦b³Qpingªº¥Ø¼Ð¬Omulticast¦ì§}¡C

-p pattern

¥i¥HÅý§A³Ì¦h«ü©w16­Ópad¦ì¤¸²Õ¥h¶ñº¡°e¥Xªº«Ê¥] ¡C³o¦b¤@­Óºô¸ô¸Ì¶EÂ_¸ò"¸ê®Æ¬Û¨Ì"ªº°ÝÃD¬O«D±`¦³¥Îªº ¡C¨Ò¦p¡G"-p ff"±N·|¥H"1"¶ñº¡­n°e¥Xªº«Ê¥]¡C

-Q tos

¦bICMP¼Æ¾Ú¤º³]©wQoS(ªA°È«~½è)¬ÛÃöªº¦ì¤¸¡C"tos"¥i¥H¬O¤Q¶i¦ì©Î¤Q¤»¶i¦ì¡C¶Ç²Î¤W(RFC1394) ¡A¥i¥H¤À¦¨ ¦p¤U¡G
¦ì¤¸0¡G «O¯d¥Î(¥Ø«e¤w¸g³Q­«·s©w¸q¨Ó·í¾Ö¶ë±±¨î(congestion control)¥Î)¡C ¦ì¤¸1-4¡G ªA°ÈªººØÃþ¡C
¥i¯àªº³]©w¦³¡G0x22 ³Ì§C¦¨¥»; 0x04 ¥i¾a©Ê; 0x08 ³B²z¶q; 0x10 §C©µ¿ð¡C ¦ì¤¸5-7¡G Àu¥ýÅv¥ý«á¡C
¥i¯àªºÀu¥ýÅv½d³ò±q °ªÀu¥ýÅv0x20 ¨ì ºô¸ô±±¨î0xe0¡C§A¥²¶·¬O¶W¯Å¨Ï¥ÎªÌ (¬Û®eCAP_NET_ADMIN)¤~¯à¨Ï¥ÎÃöÁä©Ê©ÎªÌ¸û°ªªº¼Æ­È¡C §A¤£¯à³]¬°0x01(«O¯d)¡A°£«D¦bkernel¸Ì¦³¶}±Ò"ECN"¡C ¦bRFC2474¸Ì¡A³oÄæ¦ìªº­È¤w¸g³Q­«·s©w¸q¦¨¤@­Ó8¦ì¤¸ªº®t§OªA°È(Differentiated Services (DS))¡A¥Ñ¥H¤U ²Õ¦¨¡G
¦ì¤¸0-1¡G ¤À¶}ªº¸ê®Æ("ECN"¦b³o¸Ì³Q¨Ï¥Î) ¦ì¤¸2-7¡G ®t§OªA°È½XÂI(Differentiated Services Codepoint(DSCP))

-q ¦wÀR¿é¥X¡C¦b¿Ã¹õ¤W¤£Åã¥Ü°T®§¡A°£¤F¦b±Ò°Ê©Mµ²§ô®ÉªººK­n°T®§¡C

-R ¬ö¿ý¸ô¥Ñ¡C¦bECHO__REQUEST¸Ì¥]§tRECORD_ROUTE¿ï¶µ¡A¦bªð¦^ªº«Ê¥] ¤¤¨ú±o¸ô¥Ñ½w½Ä¨ÃÅã¥Ü¥X¨Ó¡Cª`·N¡AIP

¼ÐÀY¥u¯à¸Ë¤U¤E­Ó¸ô¥Ñ°T®§¡C«Ü¦h¥D¾÷©¿²¤©ÎªÌÃö³¬³o¿ï¶µ¡C

-r ¸õ¹L¤@¯ë¸ô¥Ñªí®æ¡Aª½±µ°eµ¹¦b¤@­Óªþ¥[ºô¸ôªº¥D¾÷¡C°²¦p³o¥D¾÷¤£¦bªþ¥ [ªººô¸ô¤¤¡A«h·|¦³¿ù»~ªº°T®§²£¥Í

¡C³o¥\¯à¿ï¶µ¥i¥H³Q¨Ï¥Î¦bping¤@­Ó¤£¥Î¸g¹L¸ô¥Ñªº¥D¾÷¤W¡C

-s packetsize

«ü©w­n¶Ç°e«Ê¥]ªº¤j¤p¡C¹w³]­È¬O56¦ì¤¸²Õ¡A¥[¤W8¦ì¤¸²ÕICMP¼ÐÀY¡A¦¨¬°64¦ì¤¸²ÕªºICMP«Ê¥] ¡C

-t ttl

³]©wIPªº"Time to Live"®É¶¡¡A³o­Ó¥\¯à¥u¹ï¥Ø¼Ð¥D¾÷¬O¤@­Ómulticast¦ì§}¡C

-T timestamp option

³]©w¯S§OªºIP®É¶¡ÂW°O¿ï¶µ¡Ctimestamp option¥i¥H¬O"tsonly"©ÎªÌ"tsandaddr©ÎªÌ"tsprespec [host1 [host2 [host3 [host 4]]]¡C

-M hint

¿ï¾ÜPATH MTU Discovery ¤è¦¡¡C"hint"¥i¥H¬O"do"(¸T¤î¤À³Î«Ê¥])©Î"want"(°µPATH MTU Discovery¡A ·í«Ê¥]¤Ó¤j®É¶i¦æ¤À³Î)©ÎªÌ"dont"(¤£³]©wDFºX¼Ð)¡^¡C

-U ¦L¥X¯u¥¿ªº¨Ï¥ÎªÌ¹ï¨Ï¥ÎªÌ©µ¿ð®É¶¡(¤èªk)¡C

-v ¸Ô²Óªº¿é¥X¡C

-V ¨q¥Xpingªºª©¥»¡C

-w deadline

«ü©w¤@­Ó¨ì´Á®É¶¡¡C¥H¬í­pºâ¡A¤£ºÞ¦b®É¶¡¨ì¤§«e°e¥X©Î¦¬¨ì¦h¤Ö«Ê¥]¡A®É¶¡¤@¨ì´N°±¤î¡C


¨Ï¥Îping¹ïºô¸ô°»¿ù®É¡AÀ³¸Ó¥ýÀˬd¦Û¤vªº¥D¾÷¡A¥hÅçÃÒºô¸ô¤¶­±¬O§_¥¿±`¡Cping ¹ï«Ê¥]¨Ó¦^¨âºÝªº®É¶¡©M¿ò¥¢ªº«Ê¥]³£·| ²Î­p°_¨Ó°²¦p¦³¨â­Ó¬Û¦Pªº«Ê¥]³Q±µ¦¬¡A«h«Ê¥]¿ò¥¢ªº²Î­p¤£·|¯Ç¤J³o¨â­Ó«Ê¥]¡A¦ý«Ê¥] ¨Ó¦^¨âºÝªº®É¶¡·|³Q­pºâ¡C·í¨Ï¥Î ping®É¡A¥u­n¦³¶Ç°e©Î±µ¦¬¨ì«Ê¥]¡A´Nºâ¤¤³~³Q¥HSIGINTµ²§ô¡AÁÙ¬O·|¦³Â²µuªººK­n¥X²{¡C

°²¦pping¨S¦³¦¬¨ì¥ô¦ó¦^À³ªº«Ê¥]¡A±N·|¥Hcode 1 Â÷¶}; °²¦p·f°t-c count©M-w deadline¡A¦Ó¥B¦bdeadline¨ì¹F¤§«e¡A¦¬¨ì ªº«Ê¥]¤ñ¶Ç°eªºÁÙ¤Ö¡A«h¤]·|¥Hcode 1 Â÷¶}¡C¦pªG¬O¨ä¥Lªº¿ù»~«h¥Hcode 2 Â÷¶}¡C¨ä¥L«h¥Hcode 0 Â÷¶}¡C³o¨Ï±o¯à°÷§Q¥Î exit code¨Ó§PÂ_¤@­Ó¥D¾÷¬O§_ÁÙ¬¡µÛ¡C

ping³o­Óµ{¦¡¸û¾A¦X¥Î¨Óºô¸ô´ú¸Õ¡B¶q´ú©MºÞ²z¡C¦] ¬°ping·|¹ïºô¸ô³y¦¨¤£¤pªº­t²ü¡A¦b¤@¯ë¨Ï¥Î¤W©ÎªÌ¦b©R¥O½Z¤W¨Ï¥Îping ¨Ã¤£©ú´¼¡C

¨ä¥L°Ñ¦Ò¡G

ICMP PACKET DETAIL
¤@­Ó¨S¦³optionsªºIP¼ÐÀY¬O20¦ì¤¸²Õ¡C¤@­ÓICMP ECHO_REQUEST«Ê¥]ÁÙ¦h¥] §t¤F¤@­Ó8¦ì¤¸²ÕªºICMP¼ÐÀY¡A¤§«á¸òµÛ¥ô·N¼Æ¶q ªº¸ê®Æ¡C·í"packetsize"³Q«ü©w®É¡A´N«ü©w¤F¨º¨Ç¸ê®Æªº¤j¤p¡C¹w³]­È¬O56¦ì¤¸²Õ¡C¦] ¦¹¡A¹ï©ó¤@­ÓECHO_REPLYªºIP«Ê¥]©Ò±µ ¦¬¨ìªº¸ê®Æ¶q·|¤ñICMP¼ÐÀY¦h¦Ü¤Ö8¦ì¤¸²Õ¡C°²¦p¸ê®Æ¤j¤p¦b8¦ì¤¸²Õ¥H¤W¡Aping·|¨Ï¥Î«e8­Ó¦ì¤¸²Õ¥Î¨Ó ¬ö¿ýtimestamp¡A¦n­p ºâ«Ê¥]¨Ó¦^®É¶¡¡C­Õ­Y¸ê®Æ¶q¤p©ó8¦ì¤¸²Õ¡A«h«Ê¥]¨Ó¦^®É¶¡±N¤£·|³Q­pºâ¡C

DUPLICATE AND DAMAGED PACKETS
ping·|¹ï¬Û¦P©M¯}·lªº«Ê¥]°µ³ø§i¡C¬Û¦Pªº«Ê¥] ¤£À³¸Ó·|µo¥Í¡A¦Ó¥BÀ³¸Ó¬O¥Ñ³sµ²¼h­«¶Ç°e©Ò³y¦¨¡C¬Û¦P«Ê¥]ªº±¡ªp¥i¯à·|µo ¥Í¦b«Ü¦h±¡§Î¤U¡A¦ý³£¬O«Ü¨u¨£µo¥Íªº¡A©Ò¥Hping¹ï¬Û¦Pªº«Ê¥]¤£·|¤Þ°_¤@­Óĵ§i¡C¯}·lªº«Ê¥] ¬O«Ü©úÅãÄY­«ªºÄµ§i¡C¦Ó¥B±` ±`«ü¥X¦b«Ê¥]¸g¹Lªº¸ô³~¤W¥i¯à¦³µwÅ骺¯}·l¡A¤ñ¦p¦b¥D¾÷¤W©Îºô¸ô¤W¡C

TRYING DIFFERENT DATA PATTERNS
¦bºô¸ô¼h¸Ì¹ï«Ý«Ê¥]¨Ã¤£·|¨Ì¾Ú¨ä©Ò¥] §tªº¤º®e¦³®t§O¦Ó¤£¦P¡C¦ý¬O¤£©¯ªº¬O¡A¸ê®Æ¬Û¨Ìªº°ÝÃD¤w¸g°½°½ªº¶i¤Jºô¸ô¥Bºû«ù¦n ªø¤@¬q®É¶¡¤F¡C¦b«Ü¦h¯S©wªº±¡ªp¤U·|µo¥Í¶Ç°e¤£¥R¤Àªº°ÝÃD¡A¤ñ¦p¸ê®Æ¥þ³£¬O1©ÎªÌ¥þ³£¬O0¡AÁöµM§Ú­ ̦b©R¦C¦C©Ò¥´¤Jªº©R ¥O¤£¨£±o¬O¤@³s¦êªºo©Î1¡A¦ý¬O¦b³sµ²¼h¤¤©Ò³B²zªº±¡§Î¥i¥H¬O«D±`½ÆÂøªº¡A¯u¥¿¶Ç°e®Éªº¸ê®Æ§Ú­Ì¨Ã¤ £¬O«Ü®e©öÁA¸Ñ¡C ³o·N¦®µÛ°²¨Ï§A¹J¨ì¸ê®Æ¬Û¨Ìªº°ÝÃD¡A¦p¤@­ÓÀÉ®×µLªk¦bºô¸ô¶¡¶Ç°e©ÎªÌ¶Ç°e©Òªáªº®É¶¡¤ñ¬Û¦Pªø«×ÀÉ® רӯS§O¤[¡C§A¥i¥H¨Ï ¥Î¥\¯à¿ï¶µ"-p"¨Ó°»¿ù¡C
TTL DETAILS
IP«Ê¥]ªºTTL­Èªí¥Ü¦b³Q¥á±¼«e¯à¸g¹Lªº³Ì¤j¸ô¥Ñ¾¹¼Æ¥Ø¡C¥Ø«eªº±¡ªp¤U¡A«Ê¥] ¨C¸g¹L¤@­Ó¸ô¥Ñ¾¹¡A¨äTTLªº­È´N·|³Q´î¥h1¡C ¦bTCP/IP³W®æ¤¤«ü¥XTCP«Ê¥]ªºTTL­ÈÀ³¸Ó³Q³]©w¦¨60¡A¦ý¬O«Ü¦h¨t²Î³£³]ªº¤ñ¸û§C¡A¦p4.3BSD³]¦¨30, 4.2BSD³]¦¨15¡C TTL­È³Ì¤j¥i¥H³]¦¨255¡C¦b¤j³¡¤ÀUNIX¨t²Î¤W¡A¹ïICMP ECHO_REQUESTªºTTL­È³]¦¨255¡C³o¤] ´N¬°¤°»ò¦³®É­Ô§A¥i¥Îping§ä¨ì ¥D¾÷¦ý¬O«oµLªkftp©Îtelnet¥L­Ì¡C
·í»·ºÝ¥D¾÷±µ¦¬¨ì¤@­Ópingªº«Ê¥]®É¡A¥L¥i¥H¹ï¨äTTL«Ê¥]°µ¤TºØ¨Æ¡G

  1. ¤£§ïÅÜTTL­È¡C³o¼Ëªº¸Ü¡A¦¬¨ìªº«Ê¥] ¡A¨äTTL­È±N·|¬O255´î¥h¨Ó¦^¸ô³~¤¤ªº¸ô¥Ñ¾¹¼Æ¥Ø¡C¦b4.3BSD-Tahoe release ¤¤´N¬O³o»ò°µ¡C
  2. ±NTTL³]¦¨255¡C³o¼Ëªº¸Ü¡A¦¬¨ìªº«Ê¥]¡A¨äTTL­È±N·|¬O255´î¥h¦^µ {³~¤¤¸g¹Lªº¸ô¥Ñ¾¹¼Æ¥Ø¡C¦b¥Ø«eªºBSDª©¥»¤¤¬O ³o»ò°µ¡C
  3. ³]¦¨¬Y­Ó­È¡C¦³¨Ç¾÷¾¹·|±NICMP«Ê¥]ªºTTL­È³]¦¨©MTCP«Ê¥]¬Û¦P¡A¨Ò¦p30©Î60¡C

¾ú¥v¡G
ping³Ì¥ý¥X²{¦b4.3BSD¡C

shared library¡G

/lib/libresolv.so.2 (0x4001c000) /lib/libc.so.6 (0x4002e000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

¨Ï¥Î½d¨Ò¡G
$ping -c 5 -i 3 140.113.92.114
¶Ç°e5­ÓICMP_REQUEST«Ê¥]¦Ó¥B¨C­Ó«Ê¥]¤§¶¡¶¡®æ3¬í¡A¶Ç°e«á«K·|µ²§ôµ{¦¡¨Ã²Î­pµ²ªG¡C $ping -f -s 1024 140.113.92.114
¨Ï¨C­ÓICMP«Ê¥]¤j¤p¬°1024¦ì¤¸²Õ¡A¨Ã¥B¨Ï¥Î¬x¤ô¥ÆÀݪº¼Ò¦¡¤£Â_ªº°e¥X«Ê¥]¡C $ping -t 5 -w 10 140.113.92.114
±NTTL³]¦¨5¡A¨Ã¥B¦b10¬í«áµ²§ô¨Ã²Î­pµ²ªG¡C $ping -p ff -l 1024 140.113.92.114
¥H0xff¶ñº¡«Ê¥]¡A¨Ã¥B¥H³Ì§Ö³tªº³t«×°e¥X1024­Ó«Ê¥]«á¡A«K¦^¨ì¤@¯ëªº³t«×°e¥X«Ê¥]¡C


¨t²Î¡G
Linux Mandrake 8.0

¦WºÙ¡G
true

¦ì¸m¡G
/bin/true

¥D­n¥Î³~¡G
¤£°µ¤°»ò¡A¦¨¥\¦a¡C

¨Ï¥Î»¡©ú¡G
true [ignored command line arguments]
true OPTION

´y­z¡G
Â÷¶}µ{¦¡¨Ã¦ñÀHµÛ¤@­Ó«ü¥X¦¨¥\ªºª¬ºA½X¡C

¥\¯à¿ï¶µ¡G

--help Åã¥Ü¥X³o­Ó»¡©ú¨ÃÂ÷¶}¡C

--version ¿é¥X³oµ{¦¡ªºª©¥»¨ÃÂ÷¶}¡C

true ¤£°µ¥ô¦ó¨Æ¡A°£¤F¶Ç¦^¤@­Ó¬°0ªºÂ÷¶}ª¬ºA¡A¥Nªí"¦¨¥\"¡C¥L¥i¥H³Q¨Ï¥Î©ñ¦bshell script¤¤¨Ó¥Nªí°õ¦æ¨S°ÝÃDªº«ü¥Oªº ¦a¤è¡AÁöµMshell ¤º«Øªº«ü¥O";"(¤À¸¹)°µ¦P¼Ëªº¨Æ¦Ó¥BÁÙ¤ñ¸û§Ö¡C true ©¿²¤©Ò¦³ªº°Ñ¼Æ¡A°£¤F--help ©M--version¡C ³o¤@­Óª©¥»ªºtrue ¬O¥HC»y¨¥¹ê§@ªº¡A¤ñ¥H©¹¥Hshell scirpt¹ê§@¨Óªº¦w¥þ¦Ó¥B§Ö³t¡C¦Ó¥B¤] ³\¯à°÷¦w¥þªº¨Ï¥Î¦b¥Î¨Ó¨Ï±b¸¹ ¥¢®ÄªºªÅshell¤W­±¡C

shared library¡G

/lib/libpam.so.0 (0x4001c000)
/lib/libpam_misc.so.0 (0x40024000) /lib/libc.so.6 (0x40027000)
/lib/libdl.so.2 (0x40154000)
/lib/ld-linux.so.2 (0x40000000)

¨Ï¥Î½d¨Ò¡G

¥H¤U¬O¤@­Óshell script
#!/bin/bash
#filename: test.sh

less !@#$
echo "'less !@#$' ,return $?"

#¥¦·|¶Ç¦^¤@­Óstatus code 1 ¥Nªí¿ù»~

true
echo "after 'true',return $?"

#¥¦·|¶Ç¦^¤@­Óstatus code 0 ¥Nªí¥¿½T

$./test.sh
!@#$: No such file or directory
'less !@#$' ,return 1
after 'true',return 0