APK ফাইলের অভ্যন্তরীণ কাঠামো এবং অ্যানাটমি
একটি অ্যান্ড্রয়েড অ্যাপ্লিকেশন প্যাকেজ বা APK ফাইল হলো মূলত একটি জিপ (ZIP) আর্কাইভ, যা অ্যান্ড্রয়েড অপারেটিং সিস্টেমে অ্যাপ্লিকেশন ইনস্টল এবং রান করার জন্য প্রয়োজনীয় সমস্ত উপাদান ধারণ করে। এই প্যাকেজের মূল ভিত্তি হলো AndroidManifest.xml ফাইল, যা অ্যাপের পরিচয়পত্র হিসেবে কাজ করে। এতে অ্যাপের প্যাকেজ নাম, সংস্করণ, প্রয়োজনীয় অনুমতি এবং অ্যাপের প্রধান উপাদানগুলোর ঘোষণা থাকে।
এছাড়াও একটি স্ট্যান্ডার্ড APK ফাইলের ভেতরে নিচের উপাদানগুলো থাকে:
- কোড ফাইল (.dex): ডালভিক এক্সিকিউটেবল (DEX) ফাইল, যা অ্যান্ড্রয়েড রানটাইমে চালানোর জন্য সংকলিত জাভা বা কোটলিন কোড ধারণ করে।
- রিসোর্স এবং অ্যাসেট: অ্যাপের ইন্টারফেসের জন্য প্রয়োজনীয় ইমেজ, লেআউট ফাইল এবং অন্যান্য মিডিয়া ফাইল যা
ResourcesএবংAsset filesহিসেবে সংরক্ষিত থাকে। - নেটিভ লাইব্রেরি: নির্দিষ্ট প্রসেসর আর্কিটেকচারের জন্য অপ্টিমাইজ করা কোড, যা নেটিভ কোড বিভাগে সংরক্ষিত থাকে।
APK ফাইলের সাথে অন্যান্য প্রকাশনা বা প্যাকেজ ফর্ম্যাটের কিছু গুরুত্বপূর্ণ পার্থক্য রয়েছে। যেমন, Android App Bundle (.aab) হলো গুগল প্লে স্টোরে অ্যাপ আপলোড করার একটি প্রকাশনা ফর্ম্যাট, যা সরাসরি ডিভাইসে ইনস্টল করা যায় না। অন্যদিকে, XAPK বা APKM হলো স্প্লিট প্যাকেজ বা কন্টেইনার, যা একাধিক APK ফাইল ধারণ করে। "APK ইনফো ভিউয়ার" শুধুমাত্র একক ইনস্টলযোগ্য .apk ফাইল পার্স করতে পারে।
ব্রাউজার-ভিত্তিক লোকাল প্রসেসিং ও নিরাপত্তা
"APK ইনফো ভিউয়ার" সম্পূর্ণভাবে ব্যবহারকারীর ওয়েব ব্রাউজারের ভেতরে একটি লোকাল ওয়ার্কার (Worker) ব্যবহার করে কাজ করে। এই প্রযুক্তির ফলে ফাইল বিশ্লেষণ, হ্যাশ গণনা এবং পার্সিং প্রক্রিয়ার জন্য কোনো ডেটা বা ফাইল এক্সটার্নাল সার্ভারে আপলোড হয় না। সম্পূর্ণ প্রক্রিয়াটি ব্যবহারকারীর নিজস্ব ডিভাইসে সম্পন্ন হয় এবং ফাইলটি শুধুমাত্র রিড-অনলি মোডে পড়া হয়—এটি কখনো সিস্টেমে ইনস্টল বা রান করানো হয় না।
এই টুলের কিছু নির্দিষ্ট ইনপুট সীমা এবং নিয়ম রয়েছে:
- ফাইলের আকার: সর্বোচ্চ ৫০০ MB পর্যন্ত একক APK ফাইল পরীক্ষা করা যায়। ফাইলটি ৫০০ MB এর বেশি হলে ব্রাউজার ট্যাব সুরক্ষার স্বার্থে
এই ফাইলটি ৫০০ MB এর বেশি — ব্রাউজার ট্যাবের নিরাপদে পরীক্ষা করার ক্ষমতার চেয়ে বড়।ত্রুটি বার্তাটি প্রদর্শিত হয়। - ফাইলের সংখ্যা: ব্যবহারকারী একসাথে একাধিক ফাইল আপলোড করার চেষ্টা করলে টুলটি কেবল প্রথম ফাইলটি গ্রহণ করে এবং
একবারে একটি ফাইল — প্রথমটি পরীক্ষা করা হচ্ছে।নোটটি দেখায়। - অসমর্থিত ফর্ম্যাট: ব্যবহারকারী যদি কোনো স্প্লিট প্যাকেজ আপলোড করেন, তবে
এটি একটি XAPK স্প্লিট প্যাকেজ — বেশ কয়েকটি APK এর একটি কন্টেইনার। বেস APK এক্সট্রাক্ট করুন এবং পরিবর্তে সেই ফাইলটি পরীক্ষা করুন।বার্তা দেখিয়ে তা প্রত্যাখ্যান করা হয়। একইভাবে, কোনো অ্যাপ বান্ডেল আপলোড করা হলেএটি একটি Android App Bundle (.aab) — একটি প্রকাশনার ফর্ম্যাট, ইনস্টলযোগ্য APK নয়। পরিবর্তে বিল্ড করা APK পরীক্ষা করুন।বার্তাটি প্রদর্শিত হয়। - ত্রুটিপূর্ণ ফাইল: ফাইলটি যদি APK না হয় বা ভেতরে কোনো রিডেবল ম্যানিফেস্ট না থাকে, তবে
এটি একটি APK এর মতো মনে হচ্ছে না: ভেতরে কোনো পাঠযোগ্য AndroidManifest.xml পাওয়া যায়নি।বার্তা দেখায়। ক্ষতিগ্রস্ত ফাইলের ক্ষেত্রেপ্যাকেজটি ক্ষতিগ্রস্ত বা অসম্পূর্ণ মনে হচ্ছে, তাই এর বিষয়বস্তু পড়া যায়নি।এবং সাধারণ রিড ব্যর্থতার জন্যফাইলটি পড়া যায়নি। এটি আবার বেছে নিন।বাপরীক্ষা ব্যর্থ হয়েছে। অন্য ফাইল চেষ্টা করুন।বার্তা প্রদর্শিত হয়।
অ্যান্ড্রয়েড SDK সংস্করণ এবং সামঞ্জস্যতা
অ্যাপ্লিকেশনটি অ্যান্ড্রয়েডের কোন সংস্করণে চলবে এবং কীভাবে আচরণ করবে তা নির্ধারণ করে এর SDK সংস্করণসমূহ। "APK ইনফো ভিউয়ার" এর প্রয়োজনীয়তা বিভাগে এই তথ্যগুলো প্রদর্শিত হয়:
| লেবেল | প্রদর্শন বিন্যাস | বিবরণ |
|---|---|---|
সর্বনিম্ন Android |
Android ‹version› (API ‹level›) অথবা API ‹level› |
অ্যাপটি চালানোর জন্য প্রয়োজনীয় সর্বনিম্ন অ্যান্ড্রয়েড সংস্করণ। |
টার্গেট Android |
Android ‹version› (API ‹level›) অথবা API ‹level› |
যে সংস্করণের জন্য অ্যাপটি তৈরি এবং অপ্টিমাইজ করা হয়েছে। এটি অ্যাপের নিরাপত্তা আচরণ নির্ধারণ করে। |
সর্বোচ্চ SDK ‹n› |
সর্বোচ্চ SDK ‹n› |
অ্যাপটি সর্বোচ্চ যে অ্যান্ড্রয়েড সংস্করণ পর্যন্ত সমর্থন করবে (যদি নির্দিষ্ট করা থাকে)। |
এই সংস্করণগুলো বিশ্লেষণ করে একজন ব্যবহারকারী বা প্রশাসক নিশ্চিত হতে পারেন যে অ্যাপটি তাদের নির্দিষ্ট ডিভাইসের অপারেটিং সিস্টেমের সাথে সামঞ্জস্যপূর্ণ কিনা।
অ্যান্ড্রয়েড পারমিশন এবং "Dangerous" ব্যাজ
অ্যান্ড্রয়েড অ্যাপ্লিকেশনের নিরাপত্তা বিশ্লেষণে পারমিশন বা অনুমতিসমূহ অত্যন্ত গুরুত্বপূর্ণ ভূমিকা পালন করে। অ্যাপগুলো তাদের কাজের জন্য ব্যবহারকারীর ডিভাইসের বিভিন্ন হার্ডওয়্যার বা ডেটা অ্যাক্সেসের অনুরোধ জানায়। "APK ইনফো ভিউয়ার" এই অনুমতিগুলোকে তালিকাভুক্ত করে এবং অ্যান্ড্রয়েড সিস্টেমের নিজস্ব শ্রেণিবিভাগ অনুযায়ী যে অনুমতিগুলো ব্যবহারকারীর ব্যক্তিগত ডেটা (যেমন: লোকেশন, কন্টাক্ট, ক্যামেরা, মাইক্রোফোন বা স্টোরেজ) অ্যাক্সেস করতে পারে, সেগুলোর পাশে একটি ঝুঁকিপূর্ণ ব্যাজ প্রদর্শন করে।
টুলটি পারমিশন প্রদর্শনের ক্ষেত্রে একটি নির্দিষ্ট নিয়ম অনুসরণ করে:
- ব্যবহারকারীর সুবিধার জন্য
ঝুঁকিপূর্ণব্যাজযুক্ত ঝুঁকিপূর্ণ অনুমতিগুলোকে তালিকার একদম শুরুতে বা শীর্ষে অগ্রাধিকার দিয়ে সাজানো হয়। - এর ফলে ব্যবহারকারী সহজেই বুঝতে পারেন অ্যাপটি কোনো সংবেদনশীল ডেটা অ্যাক্সেস করছে কিনা এবং সেই অনুমতিগুলো অ্যাপের মূল কাজের সাথে সামঞ্জস্যপূর্ণ কিনা।
অ্যাপ উপাদানের বিশ্লেষণ ও সীমাবদ্ধতা
একটি APK ফাইলের কার্যকারিতা মূলত তার ব্যাকগ্রাউন্ড এবং স্ক্রিন উপাদানগুলোর ওপর নির্ভর করে। "APK ইনফো ভিউয়ার" এই উপাদানগুলোকে উপাদানসমূহ সেকশনে চারটি প্রধান ক্যাটাগরিতে ভাগ করে প্রদর্শন করে:
- Activities (অ্যাক্টিভিটিসমূহ): অ্যাপের ভিজ্যুয়াল স্ক্রিন বা ইন্টারফেসসমূহ।
- Services (সার্ভিসসমূহ): ব্যাকগ্রাউন্ডে চলমান কাজসমূহ।
- Receivers (রিসিভারসমূহ): সিস্টেম বা অন্যান্য অ্যাপ থেকে পাঠানো ব্রডকাস্ট বার্তা গ্রহণকারী উপাদান।
- Providers (প্রোভাইডারসমূহ): অ্যাপের ডেটা শেয়ারিং বা ডেটাবেস উপাদান।
এই উপাদানগুলোর পাশে যদি এক্সপোর্টেড লেবেলটি থাকে, তবে বুঝতে হবে উপাদানটি ডিভাইসের অন্যান্য অ্যাপের সাথে ইন্টারঅ্যাক্ট করতে বা বাইরের কমান্ড গ্রহণ করতে সক্ষম। ইন্টারফেসের পরিচ্ছন্নতা বজায় রাখতে প্রতিটি ক্যাটাগরিতে সর্বোচ্চ ১০০টি উপাদান প্রদর্শিত হয়। উপাদান সংখ্যা ১০০ অতিক্রম করলে তালিকার শেষে +আরও ‹count›টি লেবেলটি যুক্ত হয়।
কোড সাইনিং স্কিম এবং স্বাক্ষর যাচাইকরণ
অ্যান্ড্রয়েড সিস্টেমে প্রতিটি অ্যাপের সত্যতা এবং প্রকাশকের পরিচয় নিশ্চিত করতে কোড সাইনিং বা ডিজিটাল স্বাক্ষর বাধ্যতামূলক। "APK ইনফো ভিউয়ার" APK ফাইলের v1 (PKCS#7 ব্লক) এবং APK সাইনিং ব্লক (v2, v3, এবং v3.1) থেকে X.509 সার্টিফিকেট এক্সট্রাক্ট করে এর মেটাডেটা প্রদর্শন করে।
স্বাক্ষরসমূহ বিভাগে প্রদর্শিত তথ্যের মধ্যে রয়েছে:
স্বাক্ষরকারী ‹n›বিষয়এবংপ্রদানকারীক্রমিক নম্বরযে তারিখ থেকে কার্যকরএবংযে তারিখ পর্যন্ত কার্যকরস্বাক্ষর অ্যালগরিদমএবংমূল অ্যালগরিদম- MD5, SHA-1, এবং SHA-256 ফিঙ্গারপ্রিন্ট
যদি প্যাকেজে কোনো স্বাক্ষর ব্লক না পাওয়া যায়, তবে কোনো স্বীকৃত স্বাক্ষর ব্লক পাওয়া যায়নি—প্যাকেজটি স্বাক্ষরিত নাও হতে পারে বা পুনরায় প্যাক করা হতে পারে। বার্তাটি প্রদর্শিত হয়।
গুরুত্বপূর্ণ সীমাবদ্ধতা: এই টুলটি শুধুমাত্র সার্টিফিকেটের মেটাডেটা এক্সট্রাক্ট করে প্রদর্শন করে। এটি ক্রিপ্টোগ্রাফিকভাবে স্বাক্ষরের অখণ্ডতা যাচাই করে না, সার্টিফিকেটের ট্রাস্ট চেইন পরীক্ষা করে না এবং প্রকাশকের বাস্তব পরিচয় যাচাই করে না।
স্ট্যাটিক বনাম ডায়নামিক বিশ্লেষণ
"APK ইনফো ভিউয়ার" মূলত একটি স্ট্যাটিক অ্যানালিসিস বা স্থির বিশ্লেষণ টুল। এটি অ্যাপটিকে রান না করেই এর কোড স্ট্রাকচার, ডিক্লেয়ার্ড পারমিশন, ফাইল হ্যাশ এবং সাইনিং সার্টিফিকেট বিশ্লেষণ করে।
স্ট্যাটিক বিশ্লেষণ ব্যবহারকারীকে অ্যাপের সম্ভাব্য ঝুঁকি (যেমন অপ্রয়োজনীয় ব্যাকগ্রাউন্ড রিসিভার বা অতিরিক্ত পারমিশন) সম্পর্কে ধারণা দেয়। তবে এটি কোনো ডায়নামিক বিশ্লেষণ বা ম্যালওয়্যার স্ক্যানার নয়। অ্যাপটি রান করার পর বাস্তবে কী আচরণ করবে বা কোনো ক্ষতিকারক কোড সক্রিয় করবে কিনা, তা জানার জন্য ডায়নামিক বিশ্লেষণ বা ম্যালওয়্যার স্ক্যানিংয়ের প্রয়োজন হয়।
প্রায়শই জিজ্ঞাসিত প্রশ্ন (FAQ)
ইনস্টল না করেই আমি একটি APK থেকে কী জানতে পারি? বেশ কিছু বিষয়: অ্যাপের প্যাকেজ নাম এবং সংস্করণ, প্রয়োজনীয় অ্যান্ড্রয়েড সংস্করণ, এটি যে সমস্ত অনুমতি অনুরোধ করে, এটি যে স্ক্রীন এবং ব্যাকগ্রাউন্ড উপাদানগুলি ঘোষণা করে, নেটিভ কোডের জন্য এটি যে প্রসেসর প্রকারগুলি সমর্থন করে এবং এটি যে সার্টিফিকেট দিয়ে স্বাক্ষরিত হয়েছে।
এই টুলটি কি আমাকে বলতে পারে যে একটি APK ম্যালওয়্যার কিনা? না — এবং দ্রুত স্ক্যান থেকে কোনো রায় দেওয়ার প্রতিশ্রুতি দেয় এমন কোনো টুলকে সন্দেহ করুন। এখানে আপনি যা পান তা হল তথ্য: অনুমতি, উপাদান, স্বাক্ষরকারী এবং হ্যাশ। ডেভেলপার যা প্রকাশ করেছেন তার সাথে এগুলি তুলনা করুন, এবং অপ্রয়োজনীয় অনুমতি বা অফিসিয়াল রিলিজের চেয়ে ভিন্ন কোনো স্বাক্ষরকারীকে দূরে সরে যাওয়ার কারণ হিসেবে বিবেচনা করুন।
কোন ফাইলগুলি সমর্থিত? ৫০০ MB পর্যন্ত একক APK ফাইল। স্প্লিট প্যাকেজ (XAPK, APKM) এবং Android App Bundles (.aab) একটি ইনস্টলযোগ্য প্যাকেজের চেয়ে কন্টেইনার বা প্রকাশনা ফর্ম্যাট, তাই বিভ্রান্তিকর রিপোর্টের পরিবর্তে সেগুলিকে একটি স্পষ্ট বার্তার মাধ্যমে প্রত্যাখ্যান করা হয়।
সাইনিং এর বিস্তারিত তথ্য আমাকে কী বলে? প্রতিটি অ্যান্ড্রয়েড অ্যাপ স্বাক্ষরিত হয়, এবং সার্টিফিকেটটি শনাক্ত করে কে এটি প্রকাশ করেছে। আপনি দেখতে পাবেন প্যাকেজটি কোন সিগনেচার স্কিম বহন করে (v1, v2, v3) এবং প্রতিটি স্বাক্ষরকারীর বিষয়, মেয়াদ এবং MD5, SHA-1, এবং SHA-256 ফিঙ্গারপ্রিন্ট। মিলে যাওয়া ফিンダーপ্রিন্ট সহ দুটি APK একই প্রকাশকের কাছ থেকে এসেছে — আপনি সেই প্রকাশককে বিশ্বাস করেন কিনা তা আপনার নিজস্ব বিচার।
অনুমতির ওপর “Dangerous” ব্যাজটির অর্থ কী? এটি অ্যান্ড্রয়েডের নিজস্ব শ্রেণিবিভাগ: বিপজ্জনক অনুমতিগুলি ব্যক্তিগত ডেটা অ্যাক্সেস করতে পারে — অবস্থান, পরিচিতি, ক্যামেরা, মাইক্রোফোন, স্টোরেজ — তাই সিস্টেম ব্যবহারকারীকে দেওয়ার আগে জিজ্ঞাসা করে। ব্যাজটি কোনো অভিযোগ নয়; একটি ম্যাপ অ্যাপের লোকেশন চাওয়া স্বাভাবিক। এটি কেবল সেই অনুমতিগুলিকে চিহ্নিত করে যা দুবার পড়া উচিত।