এক্সিকিউটেবল বনাম ভাগ করা বস্তু


13

আমি কিছু করার সময় লক্ষ্য করেছি find /bin -exec file {} \;:

fileকমান্ড কিছু এন্ট্রির প্রতিবেদনে /binহয় shared objectsঅন্যরা হিসেবে executables। এই ক্ষেত্রে,

/ বিন / এনটিএফস্যাক: ইএনএফ / লিনাক্স ২.6.২৪, বিল্ডআইডি [sha1] = 312d93fd0d8653e7236a61db2e67b93c63225a00, এলএনএফ
64-বিট এলএসবি শেয়ার্ড অবজেক্ট , x86-64, সংস্করণ 1 (এসওয়াইএসভি),
গতিশীলভাবে সংযুক্ত ( শেয়ারড লিবস ব্যবহার করে)

একই রিপোর্ট gawk

/ ইউএসআর / বিন / গাওক: ইএনএফ / লিনাক্স ২.6.২৪ , বিল্ডআইডি [sha1] = 76bb13aac7e212164bd6e0d7b8a5d92db445cc, ELF -৪
-বিট এলএসবি শেয়ার্ড অবজেক্ট , x86-64, সংস্করণ 1 (এসওয়াইএসভি),
গতিশীলভাবে সংযুক্ত (শেয়ারড libs ব্যবহার করে)

এর বিপরীতে fileজন্য /bin/echoহল:

/ বিন / প্রতিধ্বনি: জিএনইউ / লিনাক্স 2.6.24, বিল্ডআইডি [sha1] = 193e75fc13e9c4599e772b8d79125a5934cf601c, স্ট্রিপড
ELF 64-বিট এলএসবি এক্সিকিউটেবল , x86-64, সংস্করণ 1 (এসওয়াইএসভি),
গতিশীলভাবে সংযুক্ত (শেয়ারড libs ব্যবহার করে)

মূলত, আমি executableফাইল এবং shared objectফাইলগুলির মধ্যে পার্থক্য কী তা জানতে চাই ।


উত্তর:


14

TL; ড

কোনও কম্পাইল এক্সিকিউটেবল কোনও শেয়ারড অবজেক্টের বিরুদ্ধে লিঙ্কযুক্ত হতে পারে তবে এক্সিকিউটেবলের বিপরীতে নয়, এর কোনও পার্থক্য নেই।


সাধারণভাবে, সেখানে কম্পাইল করার দুটি উপায় আছে 1 একটি এক্সিকিউটেবল:

  • স্ট্যাটিক লিঙ্কিং ব্যবহার করে: উত্স কোডের অন্তর্ভুক্ত বাহ্যিক গ্রন্থাগারগুলি সংকলিত হয় এবং সংকলিত গ্রন্থাগার (বা লিংকের দৃষ্টিকোণে বস্তু) এক্সিকিউটযোগ্য নিজেই যুক্ত করা হয়;
  • ডায়নামিক লিঙ্কিং ব্যবহার করে: সোর্স কোডের অন্তর্ভুক্ত বাহ্যিক গ্রন্থাগারগুলি সংকলিত হয় তবে সংকলিত গ্রন্থাগারের একটি লিঙ্ক (বা লিংকের দৃষ্টিকোণে বস্তু) যুক্ত করা হয় (এবং সংকলিত গ্রন্থাগারগুলি / অবজেক্টগুলি রান-টাইমে লিঙ্কার দ্বারা লোড করা হয় যদি প্রয়োজন);

এই প্রতিটি পদ্ধতির ব্যবহারের সুবিধাগুলি / অসুবিধাগুলি রয়েছে তবে এটি প্রশ্নের মূল বিষয় নয়;

  • /bin/ntfsckএবং /usr/bin/gawkভাগ করা অবজেক্টস: এর অর্থ এই যে কোনও এক্সিকিউটেবলকে তাদের কার্যকারিতা ব্যবহার করার জন্য সংকলন করা যেতে পারে এবং তারপরে তাদের সাথে যুক্ত করা যেতে পারে;
  • /bin/echoএকটি এক্সিকিউটেবল: এর অর্থ এই যে কোনও এক্সিকিউটেবলকে তার কার্যকারিতাটি ব্যবহার করার জন্য এটি সংকলন না করে তার বিরুদ্ধে যুক্ত করা যেতে পারে;

সুতরাং /bin/ntfsckএবং /usr/bin/gawkপ্রযুক্তিগতভাবে সংকলিত গ্রন্থাগারগুলি (বা লিঙ্কারের দৃষ্টিকোণে থাকা অবজেক্টস), তবে যেমন কোনওরকম ফলস থাকতে পারে, তেমন কিছুই ভাগ করা বস্তুকে এক্সিকিউটেবল হিসাবে চালানো থেকে বাধা দেয় না।

পার্শ্ব নোটে, সেই fileপ্রতিবেদনগুলিও লক্ষ্য করুন (তাদের প্রত্যেকের জন্য):

গতিশীলভাবে সংযুক্ত (ভাগ করা libs ব্যবহার করে)

এর অর্থ হ'ল এগুলির প্রত্যেকটি অন্য ভাগ করা অবজেক্টের সাথেও গতিশীলভাবে লিঙ্কযুক্ত (এবং সম্ভবত ব্যবহার করা হয়)।


1. এর বৃহত্তর গ্রহণযোগ্যতার উদ্দেশ্যে "সংকলন" যার মধ্যে প্রিপ্রোসেসিং, সংকলন এবং সংযোগ অন্তর্ভুক্ত রয়েছে।


1
ওএস-এ অন্যান্য ভাগ করা অবজেক্টের সাথে গতিশীলভাবে যুক্ত ? বা নিজেই ভাগ করা লাইব্রেরি ?!
ডাঃ জ্যাকি

@ মিঃহাইড ওএস-এ, আরও নির্দিষ্টভাবে সেই অবস্থানগুলিতে যা লিঙ্কারে পূর্বনির্ধারিত হতে হবে, যাতে লিঙ্কার প্রয়োজনে রান-টাইমে এগুলি লোড করতে পারে। এখানে দেখুন , অধ্যায় 3.2।
কোস

একজন আসলে ড্লোপেন ব্যবহার করে একটি এক্সিকিউটেবলের সাথে লিঙ্ক করতে পারেন: ডি উদাহরণ
অ্যাডাম

6

আর একটি পার্থক্য হ'ল এক্সিকিউটেবলের একটি নির্ধারিত এন্ট্রি পয়েন্ট অ্যাড্রেস অফসেট থাকে, অর্থাত্ i386 এর জন্য 0x08048000, x86 এর জন্য 0x00400000 এবং আর্মের জন্য 0x00010000।

একটি ভাগ করা অবজেক্ট ফাইলটি একটি লাইব্রেরি হতে পারে তবে এক্সিকিউটেবলও হতে পারে। এক্সিকিউটেবল হওয়ার সময়, এরকম কোনও অফসেট নেই। একটি ভাগ করা অবজেক্ট এক্সিকিউটেবল , সুতরাং বলা যায়, অ্যাড্রেস স্পেস লেআউট র্যান্ডমাইজেশন (এএসএলআর) ব্যবহার করে একটি অবস্থানগত স্বাধীন এক্সিকিউটেবল (পিআইই)। সুতরাং, এর / প্রোক / পিড / মানচিত্রের ফাইলটি দেখার সময় আপনি লক্ষ্য করবেন যে লোড করা অংশগুলির অবস্থান প্রতিটি নির্বাহের ক্ষেত্রে স্ট্যান্ডার্ড এক্সিকিউটেবলের বিপরীতে পৃথক হয়।

এই বৈশিষ্ট্যটির পিছনে ধারণাটি হ'ল আক্রমণকারীদের রিটার্ন-ভিত্তিক প্রোগ্রামিং আক্রমণগুলি বাধা দেওয়ার দ্বারা এক্সিকিউটেবলগুলিতে সুরক্ষা যুক্ত করা। অনেক রক্ষণাবেক্ষণকারীরা পিআইই দিয়ে ডিফল্ট হিসাবে সক্ষম প্যাকেজগুলি তৈরি করার সিদ্ধান্ত নিয়েছিলেন, যেমন ফেডোরা 23 থেকে বা উবুন্টু 17.10 দিয়ে।


আকর্ষণীয় উত্তর। কয়েকটি উত্সের অভাব রয়েছে (আপনি কয়েকটি লিঙ্ক যুক্ত করেছেন, বিশেষত এন্ট্রি পয়েন্ট অংশের জন্য ভাল লাগবে) তবে আমি সে সম্পর্কে কয়েকটি স্ট্যাকওভারফ্লো প্রশ্ন অনুসন্ধান করেছি। তবে অবশ্যই ভাল উত্তর।
সের্গেই কলডিয়াজনি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.