সফটওয়্যার রিভার্স ইঞ্জিনিয়ারিং

সাফ্ফাত আহম্মদ খান

14

ইঞ্জিনিয়ারিং বলতে কোনো কিছু সৃষ্টি করাকে বুঝায়, আর রিভার্স ইঞ্জিনিয়ারিং বলতে সেই সৃষ্ট জিনিসটাকে ভেঙ্গে সেটি তৈরির প্রক্রিয়াকে বিশ্লেষণ করে পুনরায় তৈরি করাকে বুঝায়। এটিকে সাধারণ ভাষায় ব্যাক ইঞ্জিনিয়ারিংও বলা হয়। যেমন একটি গাড়ি তৈরি করতে একজন অটোমোবাইল ইঞ্জিনিয়ারকে নকশা ডিজাইন করে একটির পর একটি অংশ জোড়া লাগিয়ে সম্পূর্ণ গাড়িটি তৈরি করতে হয়। এখন সেই গাড়িটি কীভাবে তৈরি করা হয়েছিল তা বুঝার জন্য যে প্রক্রিয়ার মাধ্যমে গাড়িটি তৈরি করা হয়েছিল তা আবার একটির পর একটি অংশ খুলে ফেলার নামই রিভার্স ইঞ্জিনিয়ারিং। রিভার্স ইঞ্জিনিয়ারিং পদ্ধতিটি সাধারণত মেকানিক্যাল ইঞ্জিনিয়ারিং, ইলেক্ট্রনিক্স ইঞ্জিনিয়ারিং, সফটওয়্যার ইঞ্জিনিয়ারিং, কেমিক্যাল ইঞ্জিনিয়ারিং এবং সিস্টেম জীববিদ্যার জন্য প্রযোজ্য হয়। কোনো জিনিস থেকে জ্ঞান আহরণ বা গবেষণার জন্য রিভার্স ইঞ্জিনিয়ারিং খুবই গুরুত্বপূর্ণ একটি বিষয়। এখন প্রশ্ন হচ্ছে সফটওয়্যার ইঞ্জিনিয়ারিং-এ রিভার্স ইঞ্জিনিয়ারিং-এর কাজ কী?
হ্যাকার বা ক্র্যাকাররা বিভিন্ন পেইড প্রোগ্রামকে ক্র্যাক হিসাবে ব্যবহার করার জন্য এই রির্ভাস ইঞ্জিনিয়ারিংকে ব্যবহার করে থাকে। অন্যদিকে সাইবার নিরাপত্তার জন্য সাইবার বিশেষজ্ঞরা বিভিন্ন ক্ষতিকর ফাইলের আচার-আচরণ ও সিগনেচার ডিটেকশনের জন্য রিভার্স ইঞ্জিনিয়ারিং-এর ব্যবহার করেন। তো রিভার্স ইঞ্জিনিয়ারিং নিয়ে জানার আগে সফটওয়্যার ইঞ্জিনিয়ারিং কীভাবে কাজ করে তা জানার প্রয়োজন।
একটি সফটওয়্যার অনেকগুলো ফাংশন ও কোডের সমন্বয়ে কাজ করে। অনেকগুলো ইন্সট্রাকশন অনুসরণ করতে হয়। যেমন আপনি যদি কোনো গাড়ির এস্কেলেটরে চাপ দেন তাহলে গাড়িটির গতি বেড়ে যাবে কিন্তু এই গতি বাড়ার পেছনে অনেকগুলো ইন্সট্রাকশন কাজ করে যা আপনি দেখলেনই না বা আপনার সামনে আসলো না। তেমনি একটি সফটওয়্যার কোনো কমান্ড এক্সিকিউট করার পেছনে অনেকগুলো হিডেন ইন্সট্রাকশন বা লুকায়িত নির্দেশনা থাকে যা সামনে আসে না। একটি সফটওয়্যার অনেক ধরনের প্রোগ্রামিং ল্যাংগুয়েজ দিয়ে তৈরি করা হয়। যেমন : সি, সি প্লাস, জাভা, ডট নেট ইত্যাদি। আমরা জানি কম্পিউটার জানে শুধু মেশিন ল্যাংগুয়েজ যেটি বাইনারি শূন্য বা এক। এজন্য একটি সফটওয়্যারকে কম্পাইলেশন প্রসেসের মাধ্যমে সেটি কাজের উপযোগী (ইএক্সই) করা হয়। কম্পাইলেশন প্রসেসটা প্রথমে সোর্স কোডকে অ্যাসেম্বলি ল্যাংগুয়েজে কনভার্ট করে এবং এরপর সেটিকে বাইনারি কোডে কনভার্ট করে। এখানে একটি ব্যাপার সবার জানা জরুরি। একবার একটি কোডকে ইএক্সই-তে কনভার্ট করে ফেললে সেটি থেকে কখনই সোর্স কোড বের করা যাবে না। তবে সেটিকে অ্যাসেম্বলি ল্যাংগুয়েজে কনভার্ট করা যাবে। আর এই অ্যাসেম্বলি কোডের মধ্যেই থাকে সফটওয়্যারের বিভিন্ন ইন্সট্রাকশন যেটিকে মোডিফাই করে সফটওয়্যার রি-বিল্ড করা হয়। যে সফটওয়্যারের মাধ্যমে অ্যাসেম্বলি ল্যাংগুয়েজে কনভার্ট করা হয় তাকে ডিবাগার বা ডি-অ্যাসেম্বলার সফটওয়্যার বলা হয়। এ কাজ করার জন্য অনেক সফটওয়্যার আছে। সেগুলোর মধ্যে ওলি ডিবিজি সর্বাধিক ব্যবহৃত হয়।
আমরা উদাহরণের মাধ্যমে সফটওয়্যার রিভার্স ইঞ্জিনিয়ারিং সম্পর্কে জানব। বর্তমানে আমাদের কোনো সফটওয়্যারের ফুল ভার্সন দরকার হলে আমরা ইন্টারনেটে খুঁজি এবং সেটির ক্র্যাক পেয়েও যাই। ক্র্যাক ফাইল অনেক সময় সিরিয়াল নম্বর দেয় বা একটি ইএক্সই ফাইল হয় যা অরিজিনাল সফটওয়্যারের সাথে ব্যবহার করতে হয় কিন্তু কখনও কি চিন্তা করেছেন এটি কীভাবে আসলো ক্র্যাকার কীভাবে জানল সিরিয়াল নম্বর? ব্যাপারটি একটু চিন্তা করলে বুঝতে পারবেন। আমরা যখন কোনো সফটওয়্যার ইন্সটল করি তখন সফটওয়্যারে একটি ফরম আসে যেখানে সঠিক কী বা সিরিয়াল নম্বর দিলে রেজিস্ট্রেশন সঠিক হয়েছে বলে আর ভুল হলে এরর মেসেজ দেখায়। কিন্তু প্রশ্ন হলো সফটওয়্যার কীভাবে জানে কোন সিরিয়াল নম্বরটি সঠিক? নিশ্চয়ই সফটওয়্যারের ভিতর সঠিক সিরিয়াল নম্বরটি দেয়া আছে যেটির সাথে ম্যাচ করলেই রেজিস্ট্রেশন সাকসেসফুল হয়। হ্যাকাররা ঠিক এই সুযোগটিই কাজে লাগায়। তারা ডিবাগার সফটওয়্যারের মাধ্যমে কোন পয়েন্টে ভুল সিরিয়াল নম্বরটি দিলে এরর আসে সেটি খুঁজে বের করে এবং সেটিকে জাম্প বা পুস করে নিজের দেয়া নতুন একটি সিরিয়াল নম্বর বা পুরাতন সিরিয়ালটি বাইপাস করে আরেকটি ইএক্সই ফাইল বা ক্র্যাক তৈরি করে। আর সেটি ব্যবহার করে আমরা সফটওয়্যারটির পেইড ভার্সনের সকল সুবিধা উপভোগ করি।
সফটওয়্যার রিভার্স ইঞ্জিনিয়ারিং একটি দক্ষতার কাজ এটি সফলভাবে করতে হলে প্রোগ্রামিং ল্যাংগুয়েজ, এলগরিদম, এনক্রিপশন ইত্যাদি সম্পর্কে ধারণা রাখতে হবে। রিভার্স ইঞ্জিনিয়ারিং যে শুধু সফটওয়্যার ক্র্যাক করার জন্য ব্যবহার করা হয় এমনটি নয়, সাইবার সিকিউরিটি এক্সপার্টরা বিভিন্ন ম্যালওয়ার বিশ্লেষণের জন্যও এটি ব্যবহার করে থাকেন। বিগত কয়েক বছর আগে র‌্যানসামওয়্যার নামের একটি ম্যালওয়ার ব্যাপকভাবে ছড়িযে পড়েছিল। র‌্যানসামওয়্যার সম্পর্কে আমরা সবাই জানি। এটির আক্রমষ কতটা ভয়ানক। এটি কম্পিউটারের সব ফাইল এনক্রিপ্ট করে ফেলে যা রিকভার মোটামুটি অসম্ভব। মাকার্স হাচিনস নামের একজন সাইবার সিকিউরিটি এক্সপার্ট ও ম্যালওয়ার গবেষক ২০১৭ সালে রিভার্স ইঞ্জিনিয়ারিং-এর মাধ্যমে র‌্যানসাম ম্যালওয়ারটি বিশ্লেষণ করে দেখতে পান যে সেখানে একটি ইন্সট্রাকশন দেয়া আছে যে এটি যখন কোনো সিস্টেমে রান করবে তখন একটি ডোমেইনের সাথে কানেক্ট হওয়ার চেষ্টা করবে, যেটি আসলে রেজিস্ট্রেশন করা নয়। ডোমেইনটি খুঁজে না পেলে প্রোগ্রামটি কম্পিউটারের সমস্ত ফাইলগুলোকে এনক্রিপ্ট করে ফেলবে। মাকার্স হাচিনস সেই ডোমেইনটিকে রেজিস্ট্রেশন করে ফেলেছিলেন যার ফলে ম্যালওয়ারটি কম্পিউটারে প্রবেশ করলেও ফাইলগুলো এনক্রিপ্ট করতে পারেনি। এভাবে রিভার্স ইঞ্জিনিয়ারিং-এর মাধ্যমে লক্ষ লক্ষ কম্পিউটার সেই সময় এই ম্যালওয়ারের ভয়াবহতা থেকে রক্ষা পেয়েছিল। তবে র‌্যানসামওয়্যারের পরবর্তী ভার্সনগুলো রোধ করার এখনও কোনো উপায় বের করা যায়নি যা কম্পিউটারের জন্য হুমকিস¦রুপ। একজন সফল সাইবার সিকিউরিটি এক্সপার্ট বা দক্ষ ইথিক্যাল হ্যাকার হতে হলে সফটওয়্যার রিভার্স ইঞ্জিনিয়ারিং সম্পর্কে অবশ্যই জানতে হবে।

লেখক: কম্পিউটার হ্যাকিং ফরেনসিক ইনভেস্টিগেটর