منصوبے کے بارے میں
dearxan ایک لائبریری ہے جو بائنری میں Arxan (اب GuardIT) کے داخل کردہ چیکس کے جامد اور رن ٹائم تجزیہ اور پیچنگ کے لیے ہے۔ README کے مطابق، یہ FromSoftware گیمز میں Arxan کو مکمل طور پر غیر فعال کر سکتی ہے: ایک بار پیچ لگانے کے بعد، کوئی Arxan کوڈ (جیسے اینٹی ڈیبگ اور انٹیگریٹی چیکس) نہیں چلتا اور خفیہ کردہ فنکشنز ڈیکرپٹ رہتے ہیں۔
README ایک حدف کا ذکر کرتا ہے: Arxan انٹری پوائنٹ سٹبس کو اب بھی چلنا ضروری ہے۔ یہ سٹبس اینٹی ڈیبگ چیک نہیں کرتے، لیکن کچھ گیمز (مثلاً Dark Souls Remastered) میں وہ انٹیگریٹی چیک کرتے ہیں اور تبدیلیوں کی صورت میں گیم کریش کر سکتے ہیں۔ اسے neuter_arxan کو دیے گئے کال بیک میں ہکس لگا کر کم کیا جا سکتا ہے۔ مصنف کہتا ہے کہ ایک بار انٹری پوائنٹ سٹبس مکمل طور پر ریورس انجینئر ہو جائیں تو یہ ضروری نہیں رہے گا۔
README میں آزمائے گئے گیمز:
- Dark Souls Remastered
- Dark Souls II SOTFS
- Dark Souls III
- Elden Ring
- Armored Core VI
- Elden Ring: Nightreign
یہ کریٹ صرف ان FromSoftware گیمز کے تازہ ترین ورژنز میں Arxan کی اقسام کے خلاف آزمایا گیا ہے اور دوسرے ڈویلپرز کے استعمال کردہ Arxan کنفیگریشنز کے ساتھ کام نہ کرے۔ تعاون خوش آئند ہے۔
استعمال کے اختیارات:
- Rust سے disabler فیچر کے ساتھ: Cargo.toml میں dearxan شامل کریں اور dearxan::disabler::neuter_arxan کو ایک بار کال کریں، مثالی طور پر گیم کے انٹری پوائنٹ سے پہلے۔ کال بیک کو نتیجہ ملتا ہے اور ہکس لگانے کے لیے تجویز کردہ جگہ ہے۔
- C++ سے: Releases سے سٹیٹک لائبریری ڈاؤن لوڈ کریں، شامل Windows امپورٹ لائبریریوں کے ساتھ لنک کریں، include/dearxan.h شامل کریں اور dearxan::neuter_arxan کال کریں۔ کم از کم C++14 سپورٹ ہے، C++17+ تجویز کردہ۔
- C سے: اسی لائبریری اور ہیڈر کے ساتھ، کال بیک کے ساتھ dearxan_neuter_arxan کال کریں۔
- دیگر زبانوں سے: include/dearxan.h سے C بائنڈنگز بنائیں اور dearxan_neuter_arxan کال کریں۔
README خبردار کرتا ہے کہ بہت سے DLL انجیکٹر یا موڈ لانچر پروسیس کو تخلیق پر معطل نہیں کرتے یا گیم کے انٹری پوائنٹ سے پہلے کوڈ چلنے نہیں دیتے۔ کریٹ ایسے لوڈرز کو بہترین کوشش کی بنیاد پر سپورٹ کرتا ہے، لیکن ایسا استعمال کرنا سختی سے تجویز کیا جاتا ہے جو انٹری پوائنٹ سے پہلے موڈز لوڈ کرے۔ me3 کے ساتھ مطابقت رکھنے والے Souls گیمز کے لیے، کریٹ پہلے سے اس موڈ لوڈر میں disable_arxan پروفائل آپشن کے ذریعے ضم ہے، اور اگر موڈ پہلے سے me3 پر منحصر ہے تو اس کا استعمال تجویز کیا جاتا ہے۔
کسٹم پیچر لکھنے کے لیے (مثلاً ڈسک پر ایگزیکیوٹیبل پیچ کرنے کے لیے)، README کہتا ہے کہ dearxan::analysis::analyze_all_stubs یا مساوی APIs سے Arxan سٹبس کا تجزیہ کریں، نتیجے میں ملنے والے StubInfo اقدار کو dearxan::patch::ArxanPatch::build_from_stubs کو دیں، اور پیچ دستی طور پر لگائیں۔ یہ اس وقت تک دہرانا ضروری ہے جب تک نئے سٹبس نہ مل جائیں، کیونکہ کچھ گیمز میں خفیہ سٹبس ہوتے ہیں جو پہلے تجزیے میں نہیں ملتے۔ لائیو ایگزیکیوٹیبل امیج کے لیے، یہ ضروری ہے کہ Arxan انٹری پوائنٹ سٹب کو بلایا گیا ہو؛ FromSoftware بائنریز SteamStub میں بھی لپیٹی جا سکتی ہیں۔
README Arxan کی خصوصیات بیان کرتا ہے جن میں انسٹرکشن میوٹیشنز اور کنٹرول فلو اوبفسکیشن، حساس فنکشنز کی آرام پر خفیہ کاری اور عمل کے وقت ڈیکرپشن، اینٹی ڈیبگ چیکس، اور انٹیگریٹی چیکس شامل ہیں جو بفر میں فلیگ لکھ سکتے ہیں، اسٹیک یا کنٹرول فلو کرپشن سے گیم کریش کر سکتے ہیں، یا فنکشن کوڈ کی مرمت کر سکتے ہیں۔ Arxan منطق صوابدیدی گیم فنکشنز میں داخل کردہ سٹبس میں ہوتی ہے؛ یہ سیاق و سباق محفوظ کرتے ہیں، Arxan منطق چلاتے ہیں، سیاق و سباق بحال کرتے ہیں اور واپس چھلانگ لگاتے ہیں۔
کریٹ ان سٹبس کو ڈھونڈ کر اور ان کے کنٹرول فلو گرافس کا دورہ کر کے Arxan کو غیر فعال کرتا ہے۔ یہ جزوی انسٹرکشن ایمولیشن اور برانچز پر پروگرام اسٹیٹ فورکنگ استعمال کرتا ہے تاکہ کنٹرول فلو اوبفسکیشن سے گزرے، پھر پیچ نکالنے کے لیے سٹب ساخت کا تجزیہ کرتا ہے۔ یہ عام طور پر ایک جمپ ہک ہوتا ہے جو ٹرامپولین کی طرف جاتا ہے جو سٹب کے اسٹیک کو درست کرتا ہے، اور بعض اوقات ڈیکرپٹ شدہ کوڈ ریجنز کو نکال کر ان کے مواد کو براہ راست لکھنا شامل ہوتا ہے۔
فیچر فلیگ:
- disabler (ڈیفالٹ): ایک پیچر فراہم کرتا ہے جو neuter_arxan کے ذریعے Arxan کو مکمل طور پر غیر فعال کرتا ہے۔
- rayon (ڈیفالٹ): rayon کا استعمال کرتے ہوئے سٹب تجزیہ کو متوازی بناتا ہے۔
- ffi: C فنکشن dearxan_neuter_arxan کو برآمد کرتا ہے۔
- instrument_stubs: disabler پر مبنی ہے اور ہر سٹب کو پہلی بار بلانے پر لاگ میسج کرنے کے لیے انسٹرومنٹ کرتا ہے؛ README خبردار کرتا ہے کہ یہ فی الحال Dark Souls Remastered کے علاوہ دیگر گیمز کے لیے رجسٹر کلوبرنگ کی وجہ سے کریش کرتا ہے۔
- internal_api: زیادہ تر اندرونی بائنری تجزیہ APIs کو dearxan::analysis::internal کے ذریعے ظاہر کرتا ہے؛ یہ مستحکم نہیں ہیں اور معمولی ورژنز کے درمیان ٹوٹ سکتے ہیں۔
کریڈٹس میں dasaav کا ذکر ہے جس نے neuter_arxan کے لیے عالمی ہم آہنگی، Arxan کے میموری ریجنز کو ڈیکرپٹ کرنے کے طریقے کو سمجھنے میں مدد، اور خفیہ کاری الگورتھم (32-round TEA) تلاش کرنے میں تعاون کیا۔
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.