Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Linuxのプロセス実行について

 Linuxのプロセス実行について

ひろしま学生IT勉強会第3回(3/9開催)

Yusuke Sugawara

March 09, 2018
Tweet

Transcript

  1. n06'32# " o06+* ≒ 06'32 n(17.3$7  n,/5&4-& netc. n!

    o OS   o! o1)%4 06+*  3
  2. n<B65' -,457>3DA o1D<C# ;/0A.  o3=C8@0C . <B65' o .

    <B65' n(( ! oexecl oexecle oexeclp oexecv oexecvp execve"# )($194?5 7 457>3DA%) 2D:A , API* &+( ()
  3. n "(2I7BIJ4CL=< , FGJ,LN@"(32#!0' oprintf*scanf* ($3/libc) oLN@  A67K-8M?JND7M?, u

    - "-)'(2/ n "(2I7BIJ-  oldd:EM@ o -).3-I7BIJ, LN>&(+5%0 vicco@localhost ~/Scripts/hello $ ldd hello linux-vdso.so.1 (0x00007ffdea521000) libc.so.6 => /lib64/libc.so.6 (0x00007f8fd35df000) /lib64/ld-linux-x86-64.so.2 (0x00007f8fd398e000) 10  I7BIJ. .dynamic.dynstr=9;HM 1
  4. n$* ('  nELF%"!e_entry n_start +#),&+# o/usr/lib64/crt1.o  ()+) o_start()

    → __libc_start_main() → main()   +#),&+# 11 vicco@localhost ~/Scripts/hello $ readelf -h hello|grep Entry Entry point address: 0x4003e0 vicco@localhost ~/Scripts/hello $ objdump -d hello|grep 4003e0 00000000004003e0 <_start>: 4003e0: 31 ed xor %ebp,%ebp
  5. '1  12 0 ('1 )  13! '1.* Linux

    3%0 execve  +,/     13! .&./ +,/)"' 2#/3(2# -33.2$ 3%0 '1.* 
  6. n 0xAX: How the Linux kernel runs a program ·

    Linux Inside, available from <https://0xax.gitbooks.io/linux-insides/SysCall/linux-syscall- 4.html> (accessed 2018-03-03) n M. Jones: Linux E4BEFK/ $, available from <https://www.ibm.com/developerworks/jp/linux/library/l-dynamic- libraries/index.html> (accessed 2018-03-03) n Yabusame: >E4@K,/ !%# CH98 /8:<7, available from <http://softwaretechnique.jp/OS_Development/Supplement/Binary/elf_ stack.html> (accessed 2018-03-03) n *) o JohnR. L.: Linkers & Loaders, Morgan Kaufmann (1999).  ("): Linker L Loaders, 5KD (2001) o  :FI6JHK; &'=7?<7― A34G2+1-0.(/ , CQ (2010)  14