Apakah ada cara untuk membuat objdump dibaca dari STDIN bukan file?
8
Dalam kasus khusus saya, saya ingin menggunakannya untuk membuang apa yang saya echo.
Saya tidak ingin melibatkan file apa pun ...
Apakah ada cara untuk membuat objdumpbaca STDIN?
cat t2.o | objdump -d /dev/stdintidak bekerja. /dev/stdinhanya berfungsi jika sesuai dengan file asli. Karena solusi Anda memerlukan keberadaan file itu, ini tidak menjawab OP.
Dragonroot
Ini mungkin bekerja untuk permohonan ini objdumpsecara khusus, tetapi mungkin gagal untuk orang lain jika seekoperasi pada file. Ketika alat tidak memiliki -untuk stdin, itu sering terjadi.
Ciro Santilli 冠状 病毒 审查 六四 事件 法轮功
5
Kamu tidak bisa Tidak ada jalan lain, Anda harus menggunakan file sementara.
File sumber readelf.c memiliki pemeriksaan tanpa syarat ini (setidaknya dalam binutils 2.22-8) bahkan sebelum mencoba membuka file:
if(! S_ISREG (statbuf.st_mode)){
error (_("'%s' is not an ordinary file\n"), file_name);return1;}
Jadi jika file adalah sesuatu tetapi file biasa (seperti symlink, atau perangkat arang seperti dalam kasus /dev/stdin, /proc/self/fd/*dll) tidak akan bekerja.
Atau, Anda dapat memodifikasi sumber dan menggunakan objdump yang dimodifikasi, tetapi portabilitas Anda hilang.
Semacam solusi menggunakan tee. Jadi untuk membongkar file bernama inputuse
cat input | tee a.out | objdump -d
Dan, untuk memberikan contoh untuk melewatkan beberapa byte dengan echoperintah, berikut ini harus menjadi contoh yang baik (Parameter dijelaskan dalam jawaban SO yang baik ini ):
Jawaban:
kamu selalu bisa melakukannya
atau
Sampel
sumber
cat t2.o | objdump -d /dev/stdin
tidak bekerja./dev/stdin
hanya berfungsi jika sesuai dengan file asli. Karena solusi Anda memerlukan keberadaan file itu, ini tidak menjawab OP.objdump
secara khusus, tetapi mungkin gagal untuk orang lain jikaseek
operasi pada file. Ketika alat tidak memiliki-
untuk stdin, itu sering terjadi.Kamu tidak bisa Tidak ada jalan lain, Anda harus menggunakan file sementara.
File sumber readelf.c memiliki pemeriksaan tanpa syarat ini (setidaknya dalam binutils 2.22-8) bahkan sebelum mencoba membuka file:
Jadi jika file adalah sesuatu tetapi file biasa (seperti symlink, atau perangkat arang seperti dalam kasus
/dev/stdin
,/proc/self/fd/*
dll) tidak akan bekerja.Atau, Anda dapat memodifikasi sumber dan menggunakan objdump yang dimodifikasi, tetapi portabilitas Anda hilang.
sumber
Semacam solusi menggunakan
tee
. Jadi untuk membongkar file bernamainput
useDan, untuk memberikan contoh untuk melewatkan beberapa byte dengan
echo
perintah, berikut ini harus menjadi contoh yang baik (Parameter dijelaskan dalam jawaban SO yang baik ini ):Untuk membongkar urutan byte kode x86
awali dengan
0:
dan gunakan perintahOutputnya adalah:
yang hanya kode perakitan untuk keluar dari program linux i386 dengan kode keluar 0xA.
sumber