Понимание вывода Linux objdump - .plt и .plt.sec разделыLinux

Ответить Пред. темаСлед. тема
Anonymous
 Понимание вывода Linux objdump - .plt и .plt.sec разделы

Сообщение Anonymous »

Все, у меня исполняемый файл Linux, работающий на двух разных машинах.
исполняемые ссылки на библиотеку .so для некоторой функции. Раздел. < /p>
Машина #1: < /p>

Код: Выделить всё

cat /proc/3463021/maps
00400000-00401000 r--p 00000000 00:30 190190252                          /mnt/autofs/home/sr026975/linux-inject/impl/test_inject
00401000-00402000 r-xp 00001000 00:30 190190252                          /mnt/autofs/home/sr026975/linux-inject/impl/test_inject
00402000-00403000 r--p 00002000 00:30 190190252                          /mnt/autofs/home/sr026975/linux-inject/impl/test_inject
00403000-00404000 r--p 00002000 00:30 190190252                          /mnt/autofs/home/sr026975/linux-inject/impl/test_inject
00404000-00405000 rw-p 00003000 00:30 190190252                          /mnt/autofs/home/sr026975/linux-inject/impl/test_inject
00940000-00961000 rw-p 00000000 00:00 0                                  [heap]
7fa391200000-7fa391228000 r--p 00000000 fd:00 68452742                   /usr/lib64/libc.so.6
...
...
7fa3913fa000-7fa3913fc000 rw-p 001f9000 fd:00 68452742                   /usr/lib64/libc.so.6
7fa3913fc000-7fa391409000 rw-p 00000000 00:00 0
7fa3915d4000-7fa3915d7000 rw-p 00000000 00:00 0
7fa3915e5000-7fa3915e6000 r--p 00000000 00:30 3876709528                 /mnt/autofs/home/sr026975/linux-inject/impl/libhello.so
7fa3915e6000-7fa3915e7000 r-xp 00001000 00:30 3876709528                 /mnt/autofs/home/sr026975/linux-inject/impl/libhello.so
7fa3915e7000-7fa3915e8000 r--p 00002000 00:30 3876709528                 /mnt/autofs/home/sr026975/linux-inject/impl/libhello.so
7fa3915e8000-7fa3915e9000 r--p 00002000 00:30 3876709528                 /mnt/autofs/home/sr026975/linux-inject/impl/libhello.so
7fa3915e9000-7fa3915ea000 rw-p 00003000 00:30 3876709528                 /mnt/autofs/home/sr026975/linux-inject/impl/libhello.so
7fa3915ea000-7fa3915ec000 rw-p 00000000 00:00 0
....
...
7ffd86ca1000-7ffd86cc3000 rw-p 00000000 00:00 0                          [stack]
7ffd86d64000-7ffd86d68000 r--p 00000000 00:00 0                          [vvar]
7ffd86d68000-7ffd86d6a000 r-xp 00000000 00:00 0                          [vdso]
ffffffffff600000-ffffffffff601000 --xp 00000000 00:00 0                  [vsyscall]

[sr026975@lvn-dbc2417 impl]$ objdump -d -s -j .plt /proc/3463021/exe

/proc/3463021/exe:     file format elf64-x86-64

Contents of section .plt:
401020 ff35e22f 0000ff25 e42f0000 0f1f4000  .5./...%./....@.
401030 ff25e22f 00006800 000000e9 e0ffffff  .%./..h.........
401040 ff25da2f 00006801 000000e9 d0ffffff  .%./..h.........
401050 ff25d22f 00006802 000000e9 c0ffffff  .%./..h.........
401060 ff25ca2f 00006803 000000e9 b0ffffff  .%./..h.........
401070 ff25c22f 00006804 000000e9 a0ffffff  .%./..h.........
401080 ff25ba2f 00006805 000000e9 90ffffff  .%./..h.........
401090 ff25b22f 00006806 000000e9 80ffffff  .%./..h.........
4010a0 ff25aa2f 00006807 000000e9 70ffffff  .%./..h.....p...
4010b0 ff25a22f 00006808 000000e9 60ffffff  .%./..h.....`...

Disassembly of section .plt:

0000000000401020 :
401020:   ff 35 e2 2f 00 00       pushq  0x2fe2(%rip)        # 404008 
401026:   ff 25 e4 2f 00 00       jmpq   *0x2fe4(%rip)        # 404010 
40102c:   0f 1f 40 00             nopl   0x0(%rax)

0000000000401030 :
401030:   ff 25 e2 2f 00 00       jmpq   *0x2fe2(%rip)        # 404018 
401036:   68 00 00 00 00          pushq  $0x0
40103b:   e9 e0 ff ff ff          jmpq   401020 

Здесь я вижу Sayhello в разделе .plt , а адрес 0x404018 - это адрес для этой функции.
На машине #2 я вижу это:
machine #2:
на машине #2,
machine #2:
on Machine #2:
machine #2:

.

Код: Выделить всё

cat /proc/3104/maps
556621a53000-556621a54000 r--p 00000000 fc:00 1572915                    /home/satish/linux-inject/test_inject
556621a54000-556621a55000 r-xp 00001000 fc:00 1572915                    /home/satish/linux-inject/test_inject
556621a55000-556621a56000 r--p 00002000 fc:00 1572915                    /home/satish/linux-inject/test_inject
556621a56000-556621a57000 r--p 00002000 fc:00 1572915                    /home/satish/linux-inject/test_inject
556621a57000-556621a58000 rw-p 00003000 fc:00 1572915                    /home/satish/linux-inject/test_inject
556621a58000-556621a79000 rw-p 00000000 00:00 0                          [heap]
7f2ff8474000-7f2ff8477000 rw-p 00000000 00:00 0
7f2ff8477000-7f2ff849f000 r--p 00000000 fc:00 2894625                    /usr/lib/x86_64-linux-gnu/libc.so.6
...
...
7f2ff8692000-7f2ff869f000 rw-p 00000000 00:00 0
7f2ff86ac000-7f2ff86ad000 r--p 00000000 fc:00 1572914                    /home/satish/linux-inject/libhello.so
7f2ff86ad000-7f2ff86ae000 r-xp 00001000 fc:00 1572914                    /home/satish/linux-inject/libhello.so
7f2ff86ae000-7f2ff86af000 r--p 00002000 fc:00 1572914                    /home/satish/linux-inject/libhello.so
7f2ff86af000-7f2ff86b0000 r--p 00002000 fc:00 1572914                    /home/satish/linux-inject/libhello.so
7f2ff86b0000-7f2ff86b1000 rw-p 00003000 fc:00 1572914                    /home/satish/linux-inject/libhello.so
7f2ff86b1000-7f2ff86b3000 rw-p 00000000 00:00 0
7f2ff86b3000-7f2ff86b5000 r--p 00000000 fc:00 2894474                    /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
....
....
7fff65e08000-7fff65e2a000 rw-p 00000000 00:00 0                          [stack]
7fff65f22000-7fff65f26000 r--p 00000000 00:00 0                          [vvar]
7fff65f26000-7fff65f28000 r-xp 00000000 00:00 0                          [vdso]
ffffffffff600000-ffffffffff601000 r--p 00000000 00:00 0                  [vsyscall]

objdump -d -s -j .plt.sec /proc/3104/exe

/proc/3104/exe:     file format elf64-x86-64

Contents of section .plt.sec:
10d0 f30f1efa f2ff25b5 2e00000f 1f440000  ......%......D..
10e0 f30f1efa f2ff25ad 2e00000f 1f440000  ......%......D..
10f0 f30f1efa f2ff25a5 2e00000f 1f440000  ......%......D..
1100 f30f1efa f2ff259d 2e00000f 1f440000  ......%......D..
1110 f30f1efa f2ff2595 2e00000f 1f440000  ......%......D..
1120 f30f1efa f2ff258d 2e00000f 1f440000  ......%......D..
1130 f30f1efa f2ff2585 2e00000f 1f440000  ......%......D..
1140 f30f1efa f2ff257d 2e00000f 1f440000  ......%}.....D..

Disassembly of section .plt.sec:

00000000000010d0 :
10d0:   f3 0f 1e fa             endbr64
10d4:   f2 ff 25 b5 2e 00 00    bnd jmp *0x2eb5(%rip)        # 3f90 
10db:   0f 1f 44 00 00          nopl   0x0(%rax,%rax,1)
< /code>
Вопросы: < /p>

[*] Вывод машины № 1 кажется довольно простым. Но на машине № 2 я не вижу функции SayHello 
в разделе .plt . Но вместо этого в разделе .plt.sec . В машине № 1 нет .plt.sec Раздел. В машине № 1 я могу использовать PTRACE для написания по адресу 0x404018 и достичь этого. Но в машине № 2 это похоже на некоторое смещение. Как мне получить место получения, чтобы перезаписать?
На машине #1 я не вижу.>

Подробнее здесь: https://stackoverflow.com/questions/796 ... c-sections
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Понимание PLT, GOT и их подключение (Linux и Android)
    Anonymous » » в форуме Android
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Понимание PLT, GOT и их подключение (Linux и Android)
    Anonymous » » в форуме Android
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Понимание PLT, GOT и их подключение (Linux и Android)
    Anonymous » » в форуме Android
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Понимание PLT, GOT и их подключение (Linux и Android)
    Anonymous » » в форуме Android
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Objdump — как создать исходный код для библиотечных функций на выходе сборки
    Anonymous » » в форуме C++
    0 Ответы
    38 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Linux»