উত্তর:
আপনি সবসময় করতে পারেন
objdump -d /dev/stdin < t2.o
অথবা
cat t2.o | objdump -d /dev/stdin
নমুনা
[মূল @ মাইহোস্ট সিসি] # আপজডাম্প-এইচ / দেব / স্টিডিন <t2.o
/ dev / stdin: ফাইলের ফর্ম্যাটটি Elf64-x86-64
বিভাগগুলি: আইডেক্স নামের আকারের ভিএমএ এলএমএ
ফাইল অ্যালগন 0। গোষ্ঠী 00000008 00000000000000000000000000000000000000000040 2 ** 2 বিষয়বস্তু, পুনরায়, সমাপ্তি, গ্রুপ, লিঙ্কপোটিসি_ডিসকার্ড
cat t2.o | objdump -d /dev/stdin
কাজ করে না. /dev/stdin
শুধুমাত্র যখন এটি একটি বাস্তব ফাইলের সাথে সম্পর্কিত হয় তখনই কাজ করে। যেহেতু আপনার দ্রবণটির জন্য সেই ফাইলটির উপস্থিতি প্রয়োজন, এটি অপের উত্তর দেয় না।
objdump
বিশেষত এই অনুরোধের জন্য কাজ করতে পারে seek
তবে ফাইলটিতে অপারেশন করার ক্ষেত্রে এটি অন্যদের জন্য ব্যর্থ হতে পারে । যখন সরঞ্জামগুলিতে -
স্টিডিন না থাকে , তখন প্রায়শই এটি ঘটে।
আপনি পারবেন না। এর আশেপাশে কোনও উপায় নেই, আপনাকে অস্থায়ী ফাইলটি ব্যবহার করতে হবে।
উত্স ফাইল রিডফেল.সি. ফাইলটি খোলার চেষ্টা করার আগে এই শর্তহীন চেক (কমপক্ষে 2.22-8-এ অন্তর্ভুক্ত) রয়েছে:
if (! S_ISREG (statbuf.st_mode))
{
error (_("'%s' is not an ordinary file\n"), file_name);
return 1;
}
তাই আপনি যদি ফাইল কিছু কিন্তু নিয়মিত ফাইল (সিমবলিক লিঙ্ক মত, অথবা গৃহস্থালির কাজ ডিভাইসের ক্ষেত্রে যেমন /dev/stdin
, /proc/self/fd/*
ইত্যাদি) এটা কাজ করবে না।
বিকল্পভাবে, আপনি উত্সটি সংশোধন করতে এবং পরিবর্তিত অবজডাম্প ব্যবহার করতে পারেন, তবে আপনার বহনযোগ্যতা আছে।
এক ধরণের ওয়ার্কারআউন্ড ব্যবহার করছে tee
। সুতরাং একটি ফাইল নামকরণ input
ব্যবহার বিচ্ছিন্ন করতে
cat input | tee a.out | objdump -d
এবং, echo
কমান্ডটি দিয়ে কিছু বাইট পাস করার জন্য উদাহরণ দেওয়ার জন্য , নিম্নলিখিতটি একটি ভাল উদাহরণ হওয়া উচিত (প্যারামিটারগুলি এই ভাল এসও উত্তরে বর্ণিত হয়েছে ):
X86 কোড বাইট সিকোয়েন্সকে পৃথক করা যায়
b8 01 00 00 00 bb 0a 00 00 00 cd 80
এটির সাথে উপসর্গ 0:
এবং কমান্ডটি ব্যবহার করুন
echo "0: b8 01 00 00 00 bb 0a 00 00 00 cd 80" | xxd -r | tee a.out | objdump -D -Mintel,i386 -b binary -m i386
এটির ফলাফল:
a.out: file format binary
Disassembly of section .data:
00000000 <.data>:
0: b8 01 00 00 00 mov eax,0x1
5: bb 0a 00 00 00 mov ebx,0xa
a: cd 80 int 0x80
প্রস্থান কোড 0xA সহ একটি আই 386 লিনাক্স প্রোগ্রামটি প্রস্থান করার জন্য যা কেবল সমাবেশের কোড।