ايران ويج

نسخه‌ی کامل: Strong Name
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام
خوب هستید

یک DLL دات نتی دارم که قسمتی هایی از اون obfuscate شده و strong name هم داره، وقتی با رفلکتور بازش می کنم و می خوام همونجوری فقط ذخیره اش کنم ازم می پرسه که استرانگ نیم رو چگارش کنم، برش دارم یا با یه کیی جدید کامپایل کنم یا کلا سیستم رو Sn -vr کنه که البته هیچ کدوم جواب نمی ده و برنامه ای که داره ازش استفاده می کنه خطا می ده

نکته دیگه اش اینکه با ILSPY هم بازش کردم و کدهای آبفوسکیت شده رو بهتر نشون می ده اما نه می شه چیزو تغییر داد نه کار دیگه ای کرد

حالا موندم چکار کنم ؟! چطور از شر این پیغام استرانگ نیم خطلاص بشم

نکته 2 : بعد از ذخیره بدون هیچ تغییر فایل با رفلکتور، زمانی که اون رو با ILSPY باز می کنم تو هدر و اطلاعات اولیه فایل کلی تغییر و به هم ریختگی می بینم، فکر می کنم شاید مشکل از اینجا باشه اما فقط یه حدسه

نکته3: استرانگ نیم رو هم با ابزارهای مختلف بر می دارم کلا حتی ریفرنس هاش رو هم مثلا درست می کنه اما فایده ای نداشته و فقط باعث می شه به جای اینکه خطای استرانگ نیم بده خطای اینولید آبجکت ریفرنس بده
وقتی یه DLL یا یک EXE توسط STRONG NAME امضا شده باشه .شما اجازه ی تغییر یا ویرایش ندارید .برای حذف امضا راهای زیادی هست
اگه این امضا در مد هگزا باشه شما بایه هگزا ادیتور میتونید بای پسش کنید .یا با خود رفلکتور.یا با برنامه های آماده
درمورد آبجکت رفرنس هم باید اونم بردارید
علت بهم ریختگی هم مربوط به محدود بودن ILSPY هست .
پیام خصوصی تونو چک کنید لطفا
فرمایش شما متین اما مسئله اینه که من هم استرانگ نیم رو برداشتم هم ریفرنس ها رو اما بعد از اون برنامه زمان اجرا به فایل وب

کانفیگم گیر می ده و بعضی از خطوط اون رو ظاهرا نال ریفرنس قلمداد می کنه و اجازه اجرا شدن برنامه رو نمی ده.

من این تغییرات رو هم با رفلکتور اعمال کردم هم با ریمورهای مختلف اما نتیجه تقریبا یکسان بود

فکر می کنم یه جای کار رو درست انجام نمی دم ....

در مورد ILSPY هم والا کدها رو خیلی بهتر از رفلکتور نمایش می ده!! اما قابلیت ادیت نداره متاسفانه، شما چیز بهتری سراغ ندارید؟

خوب تصحیح می کنم:

هیچ کاری نکردم فقط استرانگ نیم رو برداشتم و دقت کردم که یک فایل DLL دیگه هم وجود داره که داخلش ریفرنسی به فایل اصلی

با همان استرانگ نیم داره که ریفرنس اون رو هم صفر کردم و اینبار برنامه بدون هیچ مشکلی اجرا شد.

حالا برنامه رو داخل رفلکتور باز کردم و بدون هیچ تغییری مجدد ذخیره کردم که با این کار هنگام اجرای برنامه اصلی با خطاهای سابق رو به رو می شم

خلاصه اینکه استرانگ نیم مشکلش حل شد اما ادیت کردن یا حتی ذخیره مجدد فایل DLL باعث بروز مشکل در فایل می شه. دارم دنبال یک ادیتور بهتر می گردم شاید هم Olly جونم به داد برسه!!
خدا رو شکر
برنامه های دات نت runtime هستند.هرچند که با اعمال تغییرات میتونی.ولی راه رو طولانی میکنه.مگر دقیقا بدونی کجا میخوایی بری
بهتر از رفلکتور windbg هست
اگه مطمئن هستید که تمام امضا هارو برداشتید احتمالا مشکل در این جاست.
برای مشکل ذخیره احتمال تغییر PE هدر هست وقتی شما امضا ها رو پاک میکنید موقع ذخیره فایل pe هدر دچار تغییرات میشه که نتجش خطای برنامه ست. شما از آخرین ورژن پلاگین Reflexil 1.8 استفاده کنید.
خيلي ممنون

احساسم به من مي گه يك بخش هايي از بين جملات به طور تصادفي حذف شده

اما در هر صورت من استرانگ نيم رو با موفقيت برداشتم ولي زماني كه مي خوام با رفليكس ذخيره كنم باگ مي ندازه تو فايل

همون نسخه 1.8 كه ظاهرا اخرين نسخه هم هست رو اجرا كردم اما مشكل به قوت خودش باقي است

حدس مي زنم مشكل از آبفوسكيت شدن برخي قسمت ها باشه كه احتمالا درست ذخيره نمي شن و احتمالا اگر بتونم روش ديگه اي براي ويرايش فايل پيدا كنم مشكل حل بشه اما هنوز چيز خوبي پيدا نكردم
خب به احتمال خیلی قوی مشکل جدی نیست
یک بار دیگه تمام مراحل رو از حذف امضا تا ذخیره مجدد انجام بدین(به احتمال قوی حل میشه)،از آخرین فریم ورک استفاده کنید.
نه بعید میدونم مشکل از مبهم ساز باشه.وقتی شما امضا ها رو پاک میکنی ویندوز به صورت پیش فرض دوباره سیستم چک رو فعال میکنه
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework]
"AllowStrongNameBypass"=dword:00000000
(ذخیره به فایل ریجستری شود و اعمال شود )
وقتی شما STRONG NAMES ها رو بردارید (بسته به ابزار) به جای امضا ها فضاهای خالی رو با تاخیر به اصطلاح delay پر میشن.و موقع ویرایش فایل !!خوب معلومه که مشکل سلز میشه.سوال اینجاست با چه ابزاری امضا ها رو پاک کردی؟

ولی اگه اصرار دارید که IL رو ویرایش کنید از ابزار :
http://sourceforge.net/projects/dile/
استفاده کنید.
اینم هست
dotPeek 1.2
ممنون از راهنماییت، من هم دقیقا همین کار رو می کردم اما به نظرم اصلا این از کار انداختن چک شدن در ویندوز کامل عمل نمی کنه

و عملا به درد نمی خوره و باید حتما خود استرانگ نیم رو دور زد.

روزهای قبل مشکل استرانگ نیمم رو حل کردم(StrongNameRemove21)، امروز هم از صبح باهاش ور رفتم و بالاخره فهمیدم با اسمارت اسمبلی

نسخه 5.5 هم پک شده! فایل رو آن پک کردم و متوجه شدم که 13 تا DLL دیگه هم داخل این فایل وجود داره که تک تکشون رواستخراج

کردم و حالا فایل اصلی که در ابتدا 41MB حجم داشت به 320kb رسیده!

بعد از آنپک دوباره استرانگ نیم و ریفرنس ها رو اصلاح کردم و پروژه رو ران کردم که تقریبا بدون مشکل بالا اومد.

حالا یه فایل کوچیک و سبک و تمیز دارم که به راحتی می تونم با رفلیس ویرایش و ذخیره اش کنم.
خدا رو شکر.