দুর্ভাগ্যক্রমে আমি আমার উত্স কোডটি হারিয়েছি এবং আমার কেবলমাত্র আউটপুট ফাইল রয়েছে যা লিনাক্সে জিসিসি দিয়ে তৈরি হয়েছিল এবং আমার পিসিতে এখনই কোনও অ্যাক্সেস নেই isআউটপুট ফাইলকে উত্স ফাইলটিতে রূপান্তর করার কোনও উপায় আছে (লিনাক্সের নীচে সিতে)?
দুর্ভাগ্যক্রমে আমি আমার উত্স কোডটি হারিয়েছি এবং আমার কেবলমাত্র আউটপুট ফাইল রয়েছে যা লিনাক্সে জিসিসি দিয়ে তৈরি হয়েছিল এবং আমার পিসিতে এখনই কোনও অ্যাক্সেস নেই isআউটপুট ফাইলকে উত্স ফাইলটিতে রূপান্তর করার কোনও উপায় আছে (লিনাক্সের নীচে সিতে)?
উত্তর:
সুতরাং আপনার একটি গাভী ছিল, কিন্তু আপনি অজান্তেই এটি হ্যামবার্গারে রূপান্তরিত করেছেন এবং এখন আপনি আপনার গরুটি ফিরে চান।
দুঃখিত, এটি ঠিক সেভাবে কাজ করে না।
কেবলমাত্র আপনার ব্যাকআপগুলি থেকে উত্স ফাইলটি পুনরুদ্ধার করুন।
আহ, আপনার ব্যাকআপ নেই। দুর্ভাগ্যক্রমে, মহাবিশ্ব আপনাকে এর জন্য বিরতি দেয় না।
আপনি বাইনারি নিষ্প্রভ করতে পারেন । এটি আপনাকে আপনার উত্স কোড দেয় না, তবে এটি আপনাকে একই আচরণের সাথে কিছু উত্স কোড দেবে। আপনি যদি পরিবর্তনশীল নামগুলি ডিবাগ বাইনারি না করেন তবে পাবেন না। আপনি অপটিমাইজেশন ছাড়াই সংকলন না করলে আপনি ঠিক একই যুক্তি পাবেন না। স্পষ্টতই, আপনি মন্তব্য পাবেন না।
আমি কিছু প্রোগ্রাম ডিকম্পাইল করতে বুমেরাং ব্যবহার করেছি এবং ফলাফলটি মেশিন কোডের চেয়ে বেশি পঠনযোগ্য। আমি জানি না যে এটি সেখানে সবচেয়ে ভাল সরঞ্জাম। যাইহোক, অলৌকিক ঘটনা আশা করবেন না।
বিপরীত প্রকৌশলে একটি এক্সিকিউটেবলের বেশ কয়েকটি সরঞ্জাম সাধারণ।
বেশিরভাগ ক্ষেত্রেই আমি দেখেছি, কোডটি স্ক্র্যাচ থেকে নতুন করে লিখতে হবে, অ্যাসেম্বলি ভাষা প্রোগ্রাম হিসাবে রক্ষণাবেক্ষণ করতে হবে বা পুরানো সংস্করণে পুনরায় প্রয়োগের অনুরোধের মাধ্যমে পুনর্গঠন করা দরকার।
আপনি যা করতে চান তাকে "ডেকম্পলিং" বলা হয়। সেখানে অনেকগুলি ডিসকোপিলার রয়েছে এবং সেগুলি এখানে toেকে রাখা ব্যবহারিক নয়।
তবে সাধারণ মন্তব্য হিসাবে: সি উত্স থেকে এক্সিকিউটেবল মেশিন কোডে রূপান্তরটি ক্ষয়ক্ষতিজনক। এই ক্ষেত্রে:
কোড লিখিত হিসাবে সংকলন করা বিরল। আজকাল বেশিরভাগ সংকলক আপনার কোডটিকে এটির অনুকূলীকরণের জন্য মারাত্মকভাবে পরিবর্তন করবে। সুতরাং আপনি যখন ডিকম্পাইল করবেন, সংকলকটি কেবলমাত্র সোর্স কোডটি দেখতে কেমন হবে তা অনুমান করতে পারে, আপনার কোডটি কী ছিল তা জানার কোনও উপায় নেই , কারণ এটি চলে গেছে। যদি ডিকম্পিলারটি ভাল হয় তবে আপনি যে কোডটি পেয়েছেন তা কমপক্ষে সমপরিমাণ এক্সিকিউটেবলের মধ্যে আবার সংকলনযোগ্য হবে এবং তারপরে আপনি এটিকে পঠনযোগ্য হওয়ার জন্য আস্তে আস্তে রিফ্যাক্টরিং শুরু করতে পারেন। তবে সম্ভবত ডিসকম্পেলারটি একেবারে অপঠনযোগ্য স্প্যাগেটি কোড তৈরি করবে এবং এটি বোঝার জন্য এটি একটি বিশাল মাথাব্যথা হবে। কখনও কখনও, স্ক্র্যাচ থেকে কেবল প্রোগ্রামটি পুনরায় লেখার জন্য এটি কম কাজ হতে পারে ।