بدعنوان APK فائل کو کیسے ٹھیک کریں اور اثاثے نکالیں۔
آپ نے 2GB گیم بنڈل ڈاؤن لوڈ کرنے میں گھنٹے گزارے ہیں، صرف آپ کے براؤزر کے لیے 99% پر "ڈاؤن لوڈ ناکام" کہنے کے لیے، یا اس سے بھی بدتر، Android کے لیے "پارسنگ کی خرابی: پیکج کو پارس کرنے میں ایک مسئلہ تھا۔" چیخنے کے لیے ضروری نہیں کہ خراب شدہ APK ڈیڈ فائل ہو۔ چونکہ APKs زپ کمپریشن کے معیار پر بنائے گئے ہیں، ان کی اکثر مرمت کی جا سکتی ہے، کم از کم اندر کے قیمتی اثاثوں کو نکالنے کے لیے کافی ہے۔
ذیل میں ہم جانتے ہیں کہ APK کے اندر درحقیقت کیا ٹوٹتا ہے، مرمت کے آلات تک پہنچنے کے قابل، اور جب آپ ٹوٹے ہوئے بنڈل سے نمٹ رہے ہوں تو ہمارا XAPK کنورٹر کس طرح مدد کر سکتا ہے۔
APK بدعنوانی کی اناٹومی۔
ایک APK بنیادی طور پر ایک مخصوص ڈھانچہ کے ساتھ ایک زپ آرکائیو ہے۔ بدعنوانی عام طور پر تین میں سے کسی ایک جگہ پر ہوتی ہے:
- ہیڈر: فائل کے بالکل شروع میں موجود بائٹس غائب یا تبدیل ہو گئے ہیں۔
- مینی فیسٹ (XML): AndroidManifest.xml خراب ہے یا غیر تعاون یافتہ انکوڈنگ استعمال کرتا ہے۔
- ڈی ای ایکس کوڈ: اصل Java/Kotlin بائیک کوڈ کو چھوٹا کر دیا گیا ہے، جس سے ایپ ناقابل چل رہی ہے۔
طریقہ 1: بغیر سر کے زپ کی مرمت (سب سے آسان)
اگر فائل "پڑھنے کے قابل" ہے لیکن نہیں کھلتی ہے، تو لینکس/macOS میں ڈسک انٹرنل زپ کی مرمت (مفت) یا کمانڈ لائن zip -FF کمانڈ جیسے ٹول کا استعمال کریں۔ یہ ٹولز فائلوں کے "دستخط" کے لیے فائل کو اسکین کرتے ہیں اور مرکزی ڈائریکٹری کو شروع سے دوبارہ بناتے ہیں۔
ٹرمینل صارفین کے لیے کوڈ: zip -FF corrupt_app.apk --out fixed_app.apk
طریقہ 2: Zipalign/Alignment کو ٹھیک کرنا
بعض اوقات ایک APK صرف اس وجہ سے "کرپٹ" ہوتا ہے کہ یہ 4 بائٹ باؤنڈریز پر منسلک نہیں ہوتا ہے۔ Android کے میموری مینجمنٹ کو اس کی ضرورت ہے۔ آپ اسے Android SDK سے zipalign ٹول کا استعمال کر کے ٹھیک کر سکتے ہیں:
zipalign -v 4 input.apk output.apk
بٹ روٹ وارننگ
اگر DEX (classes.dex) فائل میں ہی ڈیٹا غائب ہے تو زپ کی مرمت کی کوئی رقم ایپ کو کام نہیں کرے گی۔ اس صورت میں، آپ کا واحد مقصد اثاثے/وسائل نکالنا اور ایپ کی ایک نئی کاپی تلاش کرنا ہونا چاہیے۔
یہ کیسے بتایا جائے کہ اصل میں کیا غلط ہے۔
مرمت کے آلے کو منتخب کرنے سے پہلے، ناکامی کی شناخت کریں۔ غلطی کا پیغام Android (یا آپ کا آرکائیو ٹول) دکھاتا ہے عام طور پر ایک اشارہ ہوتا ہے:
| علامات جو آپ دیکھتے ہیں۔ | اس کا عام طور پر کیا مطلب ہے۔ | سب سے پہلے کیا کوشش کرنا ہے |
|---|---|---|
| "پیکیج کو پارس کرنا" ناکام ہوگیا (Android) | ZIP سنٹرل ڈائرکٹری ناقابل پڑھنے، یا مینی فیسٹ ورژن کی مماثلت نہیں ہے۔ | زپ ہیڈر کی مرمت (طریقہ 1) |
| "پیکیج کو پارس کرنے میں ایک مسئلہ تھا" + APK توقع سے تھوڑا چھوٹا ہے۔ | کٹا ہوا ڈاؤن لوڈ: آخری چند KB کبھی نہیں پہنچے | اسی ذریعہ سے دوبارہ ڈاؤن لوڈ کریں؛ زپ کی مرمت اگر دوبارہ ڈاؤن لوڈ دستیاب نہیں ہے۔ |
| 7-Zip / WinRAR اسے کھولتا ہے لیکن انفرادی فائلوں پر "CRC ایرر" کی اطلاع دیتا ہے۔ | زپ کے اندر کی انفرادی فائل کو نقصان پہنچا ہے۔ | ہر چیز کو نکالیں سوائے تباہ شدہ ممبر، پھر دیکھیں کہ کیا غائب ہے۔ |
| مزید تفصیل کے بغیر "ایپ انسٹال نہیں ہے" | اکثر دستخط کی مماثلت یا صف بندی کا مسئلہ، حقیقی بدعنوانی نہیں۔ | zipalign + دستخط دوبارہ چیک کریں (طریقہ 2) |
| java.lang.VerifyError کے ساتھ انسٹال ہونے کے فوراً بعد کریش ہو جاتا ہے۔ | classes.dex بائٹ کوڈ خراب ہے یا ورژن سے مطابقت نہیں رکھتا ہے۔ | مرمت کے ذریعے بحال نہیں کیا جا سکتا۔ ایک صاف کاپی دوبارہ حاصل کریں۔ |
ایک کنکریٹ واک تھرو
تصور کریں کہ آپ نے ایک 320 MB APK کے ساتھ اختتام کیا جس کے ڈاؤن لوڈ میں تقریباً 99% مداخلت ہوئی تھی۔ آپ کا فون اسے انسٹال کرنے سے انکار کرتا ہے "پیکیج کو پارس کرنا ناکام ہو گیا"۔ Windows یا macOS ورک سٹیشن پر اس پر حملہ کرنے کا طریقہ یہاں ہے، جس ترتیب سے آپ واقعی چیزوں کو آزمائیں گے۔
مرحلہ 1۔ تصدیق کریں کہ فائل کم از کم زیادہ تر موجود ہے۔
جو بھی ذریعہ اشتہار دیتا ہے اس کے خلاف فائل کا سائز چیک کریں۔ اگر فائل ڈرامائی طور پر چھوٹی ہے (کہیں، 320 MB کی بجائے 220 MB)، ڈاؤن لوڈ کو شدید طور پر چھوٹا کر دیا گیا تھا اور ریپر کی مرمت میں کوئی خاص بات نہیں ہے: classes.dex کے بڑے حصے یا اثاثے صرف غائب ہیں۔ اس صورت میں، ڈاؤن لوڈ دوبارہ شروع کریں.
مرحلہ 2۔ زپ ڈھانچے کی جانچ کریں۔
APK پر مشتمل فولڈر میں ٹرمینل کھولیں اور macOS یا Linux پر چلائیں:
unzip -t broken.apk
ٹول آرکائیو کے اندر موجود ہر فائل اور کسی بھی CRC کی غلطیوں کی اطلاع دے گا۔ اگر صرف مٹھی بھر اندراجات میں خرابی ہوتی ہے اور وہ classes*.dex یا resources.arsc نہیں ہیں، تو آپ کے پاس کام کرنے والی انسٹال تیار کرنے کا ایک معقول موقع ہے۔
مرحلہ 3۔ مرکزی ڈائریکٹری کو دوبارہ بنائیں
اگر unzip -t خود مرکزی ڈائریکٹری کے بارے میں شکایت کرتا ہے ("سنٹرل ڈائرکٹری کے اختتام کے دستخط نہیں ملے"، "1 EOCD غائب")، "فکس" موڈ استعمال کریں:
zip -FF broken.apk --out fixed.apk
-FF جھنڈا zip سے کہتا ہے کہ فائل کو مقامی فائل ہیڈر کے دستخطوں کے لیے اسکین کرے اور ڈائرکٹری اندراج بہ اندراج کو دوبارہ بنائے۔ آؤٹ پٹ، fixed.apk، وہی ہے جسے آپ اصل میں انسٹال کرنے کی کوشش کرتے ہیں۔
مرحلہ 4۔ اگر ضروری ہو تو دوبارہ ترتیب دیں اور دوبارہ دستخط کریں۔
کسی بھی ساختی تبدیلی کے بعد، APK کا دستخط اب درست نہیں رہے گا، کیونکہ ایک بائٹ میں بھی ترمیم کرنے سے v2/v3 دستخطی بلاکس باطل ہو جاتے ہیں۔ اگر آپ کے پاس اپنی دستخطی کلید ہے (یہ آپ کی اپنی تعمیرات کے لیے ٹھیک ہے)، سیدھ کریں اور دوبارہ دستخط کریں:
zipalign -v 4 fixed.apk aligned.apk
apksigner sign --ks my.keystore aligned.apk
آپ کی اپنی کلید کے بغیر، فائل کو انسٹال کرنے کا واحد طریقہ اسی دستخطی سرٹیفکیٹ کے ساتھ موجودہ انسٹال ہے، جس کا مطلب ہے کہ فریق ثالث کی جانب سے مرمت شدہ APK کسی موجودہ Play Store انسٹال کے اوپر انسٹال نہیں ہوگا، کیونکہ سائننگ چین تبدیل ہوگیا ہے۔
جب مرمت غلط مقصد ہے۔
یہ ایماندار ہونے کے قابل ہے کہ "فکسنگ" کیا کر سکتی ہے اور کیا نہیں کر سکتی:
- آپ بائٹس کو بازیافت نہیں کرسکتے ہیں جو کبھی نہیں پہنچے۔ اگر ڈاؤن لوڈ کو چھوٹا کیا گیا تھا، کوئی ہیڈر کی مرمت گمشدہ ڈیٹا کو دوبارہ تشکیل نہیں دے گی۔ دوبارہ ڈاؤن لوڈ کریں۔
- بٹ سڑنا مستقل ہے۔ اگر کوئی فائل سٹوریج پر بیٹھی ہے جو classes.dex کے اندر چند بٹس پلٹ گئی ہے، تو انسٹال کے وقت بائیک کوڈ کی تصدیق کا مرحلہ اسے مسترد کر دے گا، اور یہ جاننے کا کوئی طریقہ نہیں ہے کہ اصل بائٹس کو کیا ہونا چاہیے تھا۔
- مرمت شدہ فائلوں پر نئے دستخط ہوتے ہیں۔ یہاں تک کہ ایک بالکل طے شدہ APK پر بھی اصل پبلشر کے دستخط نہیں ہیں۔ یہ ایک خصوصیت ہے، کوئی بگ نہیں: یہ حملہ آور کو ایک مقبول ایپ میں بدنیتی پر مبنی کوڈ کو پھسلنے اور دوبارہ دستخط کرنے سے روکتا ہے گویا وہ اصل پبلشر ہیں۔
اگر آپ کا مقصد صرف ایک ایسا گیم کھیلنا تھا جس کا ڈاؤن لوڈ 99 فیصد پر ختم ہو گیا ہو، تو کم از کم مزاحمت کا راستہ تقریباً ہمیشہ ہی جزوی فائل کو صاف کرنے، ڈسک کی جگہ خالی کرنے، اور ایک قابل اعتماد کنکشن سے دوبارہ ڈاؤن لوڈ کرنا ہوتا ہے۔ دوبارہ ڈاؤن لوڈ کرنے کے ناممکن ہونے پر مرمت کے ٹولز چمکتے ہیں: پرانے محفوظ شدہ APK، فلکی LAN ٹرانسفر پر موصول ہونے والی فائلیں، یا بیک اپ جن کا اصل ماخذ ختم ہو چکا ہے۔
اکثر پوچھے گئے سوالات (FAQ)
کیا میں ٹوٹے ہوئے APK سے شبیہیں اور اسکرین شاٹس نکال سکتا ہوں؟
عام طور پر ہاں۔ آئیکن فائلز res/mipmap-* کے تحت رہتی ہیں اور شروع کرنے کے لیے APKs میں اسکرین شاٹ ڈیٹا نایاب ہے۔ یہاں تک کہ جب مرکزی ڈائرکٹری خراب ہو جاتی ہے، انفرادی فائل ہیڈر اکثر اس حد تک برقرار رہتے ہیں کہ 7-Zip کا "Extract with errors نظر انداز کیا گیا" آپشن زیادہ تر تصاویر کو باہر نکال دے گا۔
کیا مرمت شدہ APK انسٹال کردہ ایپ کو اپ ڈیٹ کرے گا؟
صرف اس صورت میں جب مرمت نے اصل دستخط کو محفوظ کیا، جو کہ ساختی درستگی کے بعد عام طور پر ناممکن ہے۔ مرمت شدہ APK کو تازہ انسٹال سمجھیں: پہلے پرانے ورژن کو ان انسٹال کریں (آپ اس کا ڈیٹا کھو دیں گے) یا کسی ایسے ڈیوائس پر انسٹال کریں جس میں ابھی تک ایپ نہیں ہے۔
کیا کوئی آن لائن ٹول ہے جو یہ سب کرتا ہے؟
براؤزر پر مبنی ٹولز APK کے ڈھانچے کو پڑھ سکتے ہیں اور آپ کو بتا سکتے ہیں کہ کیا ٹوٹا ہے (ہمارا APK معلوماتی ٹول بالکل ایسا ہی کرتا ہے)، لیکن اصل میں زپ کو دوبارہ لکھنے اور دوبارہ دستخط کرنے کے لیے ڈیسک ٹاپ ٹول یا سرور کی ضرورت ہوتی ہے۔ ہم جان بوجھ کر سرور پر دوبارہ دستخط کرنے کا مرحلہ نہیں چلاتے کیونکہ اس کا مطلب آپ کی فائل کو اپ لوڈ کرنا ہوگا: اس سائٹ کا رازداری کا وعدہ یہ ہے کہ کوئی بھی چیز آپ کے براؤزر کو نہیں چھوڑتی ہے۔
XAPK فائلوں کا کیا ہوگا جو نکالنے میں ناکام رہیں؟
ایک XAPK صرف ایک زپ ہے، لہذا وہی تکنیکیں لاگو ہوتی ہیں۔ اندرونی APK کے علاوہ کسی بھی OBB فائلوں کو بازیافت کرنے کے لیے اس پر zip -FF چلائیں، پھر اس طرح آگے بڑھیں جیسے آپ کے پاس خراب APK اور علیحدہ OBB ہو۔
اگر آپ کا مقصد صرف ایک ناکام ڈاؤن لوڈ سے گرافکس، آوازیں، یا OBB ڈیٹا حاصل کرنا ہے، 7-Zip استعمال کریں۔ 7-زپ Windows ایکسپلورر زپ ٹول سے زیادہ جارحانہ ہے اور اکثر آپ کو ان فائلوں کو نکالنے کے لیے "غلطیوں کو نظر انداز" کرنے دیتا ہے جو صرف جزوی طور پر ڈاؤن لوڈ ہوتی ہیں۔
اپنے APK کو گہری اسکین کریں۔
فائل کو ہمارے تجزیہ کار پر اپ لوڈ کریں تاکہ معلوم ہو سکے کہ ڈھانچہ درست ہے یا مینی فیسٹ ناقابل پڑھا جا سکتا ہے۔
فائل کی صحت کا تجزیہ کریں۔نتیجہ
ایک "تجزیہ کی خرابی" OS کا ترک کرنا ہے۔ اوپر بیان کردہ ٹولز کا استعمال کرکے، آپ کنٹرول واپس لے لیتے ہیں۔ اگرچہ آپ ٹوٹی ہوئی ایپ کو چلانے کے لیے اسے ہمیشہ "ٹھیک" نہیں کر سکتے، آپ تقریباً ہمیشہ ڈیٹا کی وصولی اندر ہی رہ سکتے ہیں۔ بڑی فائلوں کے انتظام کے بارے میں مزید نکات کے لیے، Split APKs کو ضم کرنا یا OBB گیم ڈیٹا نکالنا پر ہماری گائیڈ دیکھیں۔