ধাপে ধাপে একটি অ্যান্ড্রয়েড অ্যাপ কীভাবে ডিকম্পাইল করবেন: সম্পূর্ণ নির্দেশিকা এবং সরঞ্জাম

  • অ্যান্ড্রয়েড অ্যাপগুলি ডিকম্পাইল করার মাধ্যমে আপনি সোর্স কোড এবং রিসোর্সগুলি বিশ্লেষণ করতে এবং শিখতে পারবেন।
  • dex2jar, JD-GUI, ApkTool অথবা অনলাইন প্ল্যাটফর্মের মতো টুল ব্যবহার করে ম্যানুয়াল এবং স্বয়ংক্রিয় পদ্ধতি রয়েছে।
  • এই প্রক্রিয়াটির জন্য আইনি সতর্কতা প্রয়োজন, বিশেষ করে যখন তৃতীয় পক্ষের অ্যাপ্লিকেশনগুলি নিয়ে কাজ করা হয়।

অ্যান্ড্রয়েড অ্যাপ ডিকম্পাইল করার ছবি

আপনি কি কখনও ভেবে দেখেছেন যে অ্যান্ড্রয়েড অ্যাপগুলি আসলে কীভাবে কাজ করে অথবা তাদের সোর্স কোড বিশ্লেষণ করার প্রয়োজন হয়? কৌতূহলী ডেভেলপার থেকে শুরু করে নিরাপত্তা উৎসাহী, অনেকেই গোপন তথ্য উন্মোচন করতে, শিখতে বা এমনকি মূল্যবান তথ্য পুনরুদ্ধার করতে অ্যান্ড্রয়েড অ্যাপগুলিকে ডিকম্পাইল করার চেষ্টা করছেন। একটি অ্যাপ ডিকম্পাইল করা হল এর ডিজিটাল ভেতরের দিকে গভীরভাবে অনুসন্ধান করার এবং এর যুক্তি, গঠন এবং সংস্থানগুলি বোঝার একটি উপায়।

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

একটি অ্যান্ড্রয়েড অ্যাপ ডিকম্পাইল করার অর্থ কী?

একটি অ্যাপ্লিকেশন ডিকম্পাইল করার ক্ষেত্রে APK ইনস্টলার ফাইলের বিপরীত প্রকৌশল জড়িত। এর সোর্স কোড পুনর্গঠনের চেষ্টা করা, অথবা অন্তত এমন একটি উপস্থাপনা যা এর কার্যকারিতা বিশ্লেষণ করার জন্য যথেষ্ট পঠনযোগ্য। APK হল সেই ফাইল যাতে আপনার মোবাইলে অ্যাপ্লিকেশনটি কাজ করার জন্য প্রয়োজনীয় সবকিছু থাকে।: সংকলিত কোড, সম্পদ, ছবি, কনফিগারেশন এবং অন্যান্য ডেটা।

এই প্রক্রিয়াটি প্রায়শই ব্যবহৃত হয় ডেভেলপার, নিরাপত্তা গবেষক এবং বিদ্যুৎ ব্যবহারকারীরা যারা একটি অ্যাপ কীভাবে তৈরি হয় তা জানতে চান, দুর্বলতা খুঁজে বের করতে চান, ছবি বের করতে চান, এমনকি কখনও কখনও তাদের নিজস্ব হারিয়ে যাওয়া অ্যাপের সোর্স কোড পুনরুদ্ধার করতে চান।

ডিকম্পাইলিং এবং ডিকম্প্রেসিং একই জিনিস নয়। একটি APK এর বিষয়বস্তু বের করলে আমাদের রিসোর্সে অ্যাক্সেস পাওয়া যায়, কিন্তু কোড বিশ্লেষণ (এবং বোঝা) করার জন্য, আমাদের এমন বিশেষ সরঞ্জাম প্রয়োগ করতে হবে যা সংকলিত ফাইলগুলিকে আবার একটি পঠনযোগ্য ফর্ম্যাটে রূপান্তরিত করে (সাধারণত জাভা, যদিও আধুনিক অ্যাপগুলি কোটলিনে থাকতে পারে)।

কেন একটি অ্যাপ ডিকম্পাইল করবেন? ব্যবহার এবং আইনি সতর্কতা

অ্যাপ্লিকেশনগুলি ডিকম্পাইলিং করার কারণগুলি বিভিন্ন রকমের এবং, বেশিরভাগ সময়, তারা বৈধ চাহিদা পূরণ করে:

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

কিন্তু সাবধান, তৃতীয় পক্ষের অ্যাপ্লিকেশনগুলিকে ডিকম্পাইল করা কপিরাইট এবং বৌদ্ধিক সম্পত্তি আইন লঙ্ঘন করতে পারে। বেশিরভাগ দেশে অনুমতি ছাড়া ডিকম্পাইল করা কোড বা রিসোর্স ব্যবহার এবং বিতরণ নিষিদ্ধ। প্রক্রিয়াটি শিক্ষামূলক, বিশ্লেষণাত্মক, অথবা স্ব-উন্নত অ্যাপের মধ্যে সীমাবদ্ধ রাখুন।

একটি APK ফাইল কী?

APK ফাইলটি যেকোনো অ্যান্ড্রয়েড অ্যাপ্লিকেশনের ইনস্টলার এবং এর গঠন একটি ZIP ফাইলের মতো।. আসলে, আপনি এক্সটেনশনটি .apk থেকে .zip এ পরিবর্তন করতে পারেন এবং এর বিষয়বস্তু অন্বেষণ করতে এটি আনজিপ করতে পারেন। ভিতরে আপনি পাবেন:

  • ক্লাস.ডেক্স: ডালভিক/আর্ট ফর্ম্যাটে সংকলিত কোড সহ মূল ফাইল।
  • অ্যান্ড্রয়েডম্যানিফেস্ট.এক্সএমএল: অনুমতি, কার্যকলাপ, পরিষেবা, সংস্করণ এবং প্রধান কনফিগারেশন বর্ণনা করে।
  • গরুর মাংস/: রিসোর্স সহ ফোল্ডার (ছবি, লেআউট, স্ট্রিং, ইত্যাদি)
  • মেটা-আইএনএফ/ এবং সম্পদ/: মেটাডেটা তথ্য এবং অতিরিক্ত ফাইল।

চ্যালেঞ্জ হল এই ফাইলগুলিকে পঠনযোগ্য করে তোলা, বিশেষ করে অস্পষ্ট .dex এবং .xml ফাইলগুলিকে।

একটি অ্যান্ড্রয়েড অ্যাপ ডিকম্পাইল করার পদ্ধতি

একটি অ্যাপ ডিকম্পাইল করার দুটি প্রধান উপায় আছে: ম্যানুয়ালি এবং অনলাইন টুল বা নির্দিষ্ট অ্যাপ্লিকেশন ব্যবহার করে। ম্যানুয়াল পদ্ধতিটি আরও নমনীয় এবং আরও বেশি নিয়ন্ত্রণের সুযোগ দেয়, অন্যদিকে স্বয়ংক্রিয় সরঞ্জামগুলি প্রক্রিয়াটিকে সহজতর করে।

ম্যানুয়াল পদ্ধতি: ধাপে ধাপে একটি APK ডিকম্পাইল করার পদ্ধতি

  1. ১. APK ফাইল এক্সটেনশনটি .zip এ পরিবর্তন করুন এবং এটি আনজিপ করুন। এইভাবে আপনি ইনস্টলারের সমস্ত বিষয়বস্তু অ্যাক্সেস করতে পারবেন যেন এটি কেবল অন্য একটি ফোল্ডার। WinRAR অথবা 7-Zip এর মতো যেকোনো সাধারণ কম্প্রেশন প্রোগ্রাম ব্যবহার করুন।
  2. 2. classes.dex ফাইলটি সনাক্ত করুন। আনজিপ করা ফোল্ডারের ভিতরে আপনি এই ফাইলটি দেখতে পাবেন, যাতে সংকলিত কোড রয়েছে।
  3. ৩. dex3jar ব্যবহার করে .dex ফাইলটিকে .jar এ রূপান্তর করুন। Dex2jar হল একটি বিনামূল্যের টুল যার উইন্ডোজ, ম্যাক এবং লিনাক্সের জন্য সংস্করণ রয়েছে। classes.dex কে dex2jar ফোল্ডারে কপি করুন এবং কনসোল থেকে সংশ্লিষ্ট কমান্ড (যেমন 'd2j-dex2jar.bat classes.dex') চালান। আপনি একটি classes-dex2jar.jar ফাইল পাবেন।
  4. ৪. জাভা ডিকম্পাইলার দিয়ে ফলাফল প্রাপ্ত .jar ফাইলটি খুলুন। সবচেয়ে বেশি ব্যবহৃত বিকল্প হল JD-GUI, যা আপনাকে .class ফাইল দেখতে এবং জাভা ফর্ম্যাটে সোর্স কোড বের করতে দেয়। আরও বিস্তারিত জানার জন্য, টিউটোরিয়ালটি দেখুন পিসিতে কিভাবে একটি APK খুলবেন.
    • JD-GUI ডাউনলোড করুন এবং ফলাফলটি .jar ফাইলটি খুলুন।
    • আপনি ডিকম্পাইল করা কোডটি ব্রাউজ করে প্যাকেজ এবং ক্লাসগুলি অন্বেষণ করতে সক্ষম হবেন।
  1. ৫. android5me অথবা AXMLPrinter এর মতো টুল দিয়ে .xml ফাইলগুলো ডিকোড করুন। অনেক xml ফাইল বাইনারি ফরম্যাটে থাকবে, তাই আপনাকে এটিকে পঠনযোগ্য টেক্সট হিসেবে এক্সট্র্যাক্ট করতে হবে। আপনি android4me এর মতো টুল ব্যবহার করতে পারেন ('java -jar AXMLPrinter.jar AndroidManifest.xml > XmlDecodificado.xml' এর মতো কমান্ড সহ)।
  2. ৬. (ঐচ্ছিক) apk পরিবর্তন করুন, পুনরায় কম্পাইল করুন এবং স্বাক্ষর করুন। যদি আপনার পরিবর্তন করার প্রয়োজন হয়, তাহলে ApkTool-এর মতো টুল আছে যা APK-কে ডিকম্পাইল করে এবং কাঠামো মেনে চলে যাতে আপনি ম্যানুয়ালি রিসোর্স এবং ফাইল সম্পাদনা করতে পারেন। আপনার অ্যাপটি পুনরায় প্যাকেজ করতে এবং স্বাক্ষর করতে, অনুগ্রহ করে নির্দেশিকাটি পর্যালোচনা করুন।

অ্যান্ড্রয়েড অ্যাপ্লিকেশন ডিকম্পাইল করার জন্য সরঞ্জাম

apktool

অ্যান্ড্রয়েড কমিউনিটিতে ম্যানুয়াল এবং স্বয়ংক্রিয়, পাশাপাশি অনলাইন উভয় ধরণের ডিকম্পাইলেশন সরঞ্জামের একটি বিস্তৃত ইকোসিস্টেম রয়েছে। আমি সবচেয়ে পরিচিতগুলোর সংক্ষিপ্তসার জানাবো:

  • ডেক্স২জার: .dex (Dalvik/ART) ফাইলগুলিকে .jar-এ রূপান্তর করে, যার ফলে জাভা ডিকম্পাইলার দিয়ে সেগুলি খোলা সম্ভব হয়। সোর্স কোড বিশ্লেষণ করতে চাইলে খুবই কার্যকর।
  • জেডি-জিইউআই: একটি গ্রাফিক্যাল .jar ফাইল ভিউয়ার যা .class ফাইলের জাভা সোর্স কোড দেখার এবং রপ্তানি করার জন্য।
  • android4me/AXMLপ্রিন্টার: বাইনারি .xml ফাইলগুলিকে মানুষের পাঠযোগ্য টেক্সটে রূপান্তর করার সরঞ্জাম, AndroidManifest.xml পার্স করার জন্য কী এবং অন্যান্য সংস্থান।
  • ApkTool: অ্যাপ্লিকেশনগুলি সংশোধন এবং পুনরায় কম্পাইল করার জন্য আপনাকে গাইড করে। কাঠামো অনুসারে APK ডিকম্পাইল করুন যাতে আপনি রিসোর্স এবং ফাইল সম্পাদনা করতে পারেন। এটি এর জন্য খুবই উপকারী।
  • জেএডিএক্স: উন্নত ক্রস-প্ল্যাটফর্ম ডিকম্পাইলার যা আপনাকে APK/Dex ফাইল থেকে সরাসরি জাভা বা কোটলিন কোড পুনরুদ্ধার করতে দেয়। এটির একটি ডেস্কটপ সংস্করণ রয়েছে এবং এটি কিছু বিশেষায়িত অ্যান্ড্রয়েড অ্যাপের সাথে সংহত হয়।
  • ডিগার্ড: অত্যন্ত সহজ অনলাইন টুল। কেবল APK টি আপলোড করলেই আপনি ওয়েব থেকে এর বিষয়বস্তু এবং ডিক্রিপ্টেড সোর্স কোড অন্বেষণ করতে পারবেন।

বিকল্প: অনলাইনে অ্যান্ড্রয়েড অ্যাপ ডিকম্পাইল করুন

যদি আপনি ইনস্টলেশন বা কমান্ড লাইন নিয়ে ঝামেলা করতে না চান, তাহলে APK ফাইলগুলি ডিকম্পাইল করার জন্য অনলাইন পরিষেবা এবং মোবাইল অ্যাপ রয়েছে।. এগুলি দ্রুত এবং সেই ব্যবহারকারীদের জন্য উপযুক্ত যারা শুধুমাত্র নির্দিষ্ট তথ্য বের করতে চান।

  • প্ল্যাটফর্মের মত জাভাডিকম্পাইলার (www.javadecompilers.com/apk) আপনাকে APK ফাইল আপলোড করতে এবং কয়েক সেকেন্ডের মধ্যে, সোর্স কোড এবং ডিকম্পাইল করা রিসোর্সগুলি .zip ফর্ম্যাটে ডাউনলোড করতে দেয়। খুবই স্বজ্ঞাত।
  • ডিগার্ড.আইও এটি আরেকটি অনলাইন বিকল্প যা সরাসরি সোর্স কোড পাওয়ার উপর দৃষ্টি নিবদ্ধ করে, সহজে নেভিগেশন এবং বিষয়বস্তু বিশ্লেষণের জন্য একটি গাছে সংগঠিত ফাইলগুলি দেখায়।

অনলাইন টুলের সুবিধা:

  • সুবিধাজনক, এগুলির জন্য ইনস্টলেশন বা উন্নত প্রযুক্তিগত জ্ঞানের প্রয়োজন হয় না।
  • নির্দিষ্ট বিশ্লেষণের জন্য দ্রুত অ্যাক্সেস।
  • তারা ম্যানুয়াল পদ্ধতিতে সাধারণ ত্রুটি কমায়।

অসুবিধাগুলি: ডেস্কটপ টুলের তুলনায় তাদের ফাইলের আকারের সীমাবদ্ধতা বা কার্যকারিতা থাকতে পারে। উপরন্তু, বহিরাগত সার্ভারে তৃতীয় পক্ষের অ্যাপ আপলোড করলে গোপনীয়তা এবং আইনি ঝুঁকি তৈরি হতে পারে।

আপনার মোবাইল থেকে ডিকম্পাইল করার জন্য অ্যান্ড্রয়েড অ্যাপস

আপনি যদি এটি সরাসরি আপনার মোবাইল থেকে (কম্পিউটার ছাড়াই) করতে চান, তাহলে গুগল প্লেতে "ডিকম্পাইল অ্যাপ: বেজড অন জ্যাডএক্স" এর মতো অ্যাপ্লিকেশন পাওয়া যায়। এই অ্যাপগুলি আপনাকে স্থানীয় বা ইনস্টল করা APK ফাইলগুলি লোড করতে, সেগুলিকে ডিকম্পাইল করতে এবং একটি স্বজ্ঞাত ইন্টারফেস থেকে তাদের কোড এবং সংস্থানগুলি অন্বেষণ করতে দেয়, সমস্ত JADX এর মতো ইঞ্জিনগুলিকে কাজে লাগায়।

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

AndroidManifest.xml ডিকোড এবং পার্স করুন

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

এটি বিশ্লেষণ করার জন্য আপনাকে এটি ডিকোড করতে হবে, কারণ এটি সাধারণত বাইনারি XML ফর্ম্যাটে থাকে। সরঞ্জাম যেমন AXMLPrinter সম্পর্কে, অ্যান্ড্রয়েড৪এমই o ApkTool সম্পর্কে আপনাকে এটিকে প্লেইন টেক্সটে রূপান্তর করার অনুমতি দেয়। এটি পরিদর্শন করে, আপনি অনুরোধ করা অনুমতি, ন্যূনতম SDK সংস্করণ, শীর্ষ কার্যকলাপ, অভিপ্রায় ফিল্টার এবং আরও অনেক কিছু দেখতে সক্ষম হবেন।

এই তথ্যটি সেইসব ডেভেলপারদের জন্য অপরিহার্য যারা একটি অ্যাপের কার্যকারিতা এবং নির্ভরতা বুঝতে চান, সেইসাথে যারা এর আচরণ পরিবর্তন করতে চান বা সন্দেহজনক অনুমতি পরীক্ষা করতে চান তাদের জন্যও।

অ্যান্ড্রয়েড অ্যাপ্লিকেশনগুলি সংশোধন, পুনরায় কম্পাইল এবং স্বাক্ষর করুন

একবার আপনি APK ডিকম্পাইল করে কিছু ফাইল (যেমন, AndroidManifest.xml বা কিছু রিসোর্স) সম্পাদনা করে ফেললে, আসল ডিভাইসে ইনস্টল করার আগে আপনাকে অ্যাপটি পুনরায় প্যাকেজ করে সাইন করতে হবে। প্রক্রিয়াটি, সংক্ষেপে:

  • ApkTool দিয়ে APK পুনরায় কম্পাইল করুন: পরিবর্তিত APK তৈরি করতে 'apktool b folder_name' কমান্ডটি ব্যবহার করুন।
  • অ্যাপটিতে স্বাক্ষর করুন: jarsigner অথবা keytool এর মতো টুল ব্যবহার করে, একটি keystore ফাইল তৈরি করুন (যদি আপনার কাছে না থাকে) এবং APK সাইন করুন। যদি আপনি এটি বিতরণ করতে চান, তাহলে একটি ব্যক্তিগত এবং সুরক্ষিত কী ব্যবহার করুন।
  • স্বাক্ষর যাচাই করুন: ফলাফল ফাইলটি সঠিকভাবে স্বাক্ষরিত হয়েছে কিনা তা যাচাই করতে jarsigner ব্যবহার করুন।
  • APK অপ্টিমাইজ করুন: zipalign এর মতো টুলগুলি পুনরায় কম্পাইল করার পরে অ্যাপের কর্মক্ষমতা উন্নত করে।

পচনকে কঠিন করে তোলে এমন কারণগুলি এবং কীভাবে সেগুলি কাটিয়ে ওঠা যায়

এটা সবসময় যতটা সহজ মনে হয় ততটা সহজ নয়। ডেভেলপাররা প্রায়শই তাদের অ্যাপ্লিকেশনগুলিকে অস্পষ্ট কৌশল বা কোড এবং সংস্থানগুলির এনক্রিপশন ব্যবহার করে সুরক্ষিত করে। এটি মূল সোর্স কোডের বিশ্বস্ত পুনর্গঠনকে জটিল করে তোলে।

প্রধান বাধা:

  • কোড অস্পষ্টতা: ভেরিয়েবল এবং পদ্ধতি থেকে বর্ণনামূলক নামগুলি সরিয়ে দেয়, যা ডিকম্পাইলেশনের পরে কোডটি বোঝা কঠিন করে তোলে।
  • সম্পদের এনক্রিপশন বা প্যাকেজিং: কিছু রিসোর্স এনক্রিপ্ট করা বা বিশেষভাবে প্যাকেজ করা হতে পারে যাতে সেগুলিতে অ্যাক্সেস করা কঠিন হয়ে পড়ে।
  • নেটিভ কোড ব্যবহার করে: JNI ব্যবহার করে C/C++ তে লেখা লাইব্রেরিগুলি জাভাতে ডিকম্পাইল করা যাবে না।

যদিও ডিকম্পাইলেশন সবসময় সঠিক মূল কোড উপস্থাপন করে না, তবে অ্যাপ্লিকেশনগুলির সাধারণ কাঠামো এবং মূল যুক্তি বোঝার জন্য এটি সাধারণত যথেষ্ট।

ত্রুটিটি কীভাবে ঠিক করবেন প্যাকেজটি পার্স করা যায়নি
সম্পর্কিত নিবন্ধ:
পিসিতে APK খুলুন: সমস্ত উপলব্ধ বিকল্প

আপনার মন্তব্য দিন

আপনার ইমেল ঠিকানা প্রকাশিত হবে না। প্রয়োজনীয় ক্ষেত্রগুলি দিয়ে চিহ্নিত করা *

*

*