سلام
لطفا دوستان پست 47 لینک زیر یک برنامه به #C را اگر میتوانند DeCompile کنند
https://barnamenevis.org/showth...=172723&page=5
Printable View
سلام
لطفا دوستان پست 47 لینک زیر یک برنامه به #C را اگر میتوانند DeCompile کنند
https://barnamenevis.org/showth...=172723&page=5
پسورد : eybabaalikolabikari
فایل آنپک شده رو هم ضمیمه کردم.
ابتدا فایل رو توسط ابزارهای Generic دامپ کردم و بعد توسط Reflector دکامپایلش کردم.
خیلی ساده بود.:لبخندساده:
اگر میشود یک نگاهی هم به این بیندازید
از Smart Assembly و DotNet Reactor استفاده کردید و فایل نهایی رو توسط برنامه اول Obfuscate کردید.
در کل جالبه ولی اینها همشون آنتی دارن و نهایتا" کرک میشه , بهتره به روشهای ابتکاری خودتون ( از طریق برنامه نویسی ) رو بیارید.
در کل من فقط تونستم تا اینجا پیش برم.
میشه یک نگاهی به این یکی دیگه هم بندازید؟
متاسفانه این تکنیکها امنیتی ندارن , بازم میگم بهتره به روشهای برنامه نویسی رو بیاورید.
پسورد :$$***@@@@eybabaalikolabikari)))9997&&&&
این از اولی در آمد یا دومی ؟
از دومی ولی از اولی هم میشد که دربیاد.
زحمت این رو هم به عنوان آخری بکشید
این یکی تا حدی شد شبیه keygen Me
دو تا رشته مشکوک هست که باید کد بشن.
&&&&!!!@@@@CCCVVDTR
C#IsBestOKOK
یعنی الان پیام درست نگرفتی ؟ پیام "!! Na Baba En Kare Hasti !!!" رو باید بهت بده . داده یا نه ؟
نه پیام درست رو نگرفتم , چون Obfuscate هم شده بود Patch کردنش طول میکشه و آدم رو دیوونه میکنه.
دستت درد نکنه اگر اینم ببینی دیگر میتونیم اعلام نتیجه کنیم توی تاپیک . سعی کن پیام موفق بگیری . رشته ها رو تشخیص دادن رو بیخیال
رشته alikolahdoozan هست ولی باید برای اینکه پیام مناسب نمایش داده بشه فایل پچ بشه که کار من نیست ( بلد نیستم ) , ولی دیدم که میشه و به گفته اهل فنش راحت هست.
فقط alikolahdoozan نیست . پس اگر از کلاس partial استفاده بشه و متد عملا دست بسته است . و به این راحتیها نمیشه کاری کرد . این خوبه . الان خوابم میاد صبح سورس همین رو میزارم همه ببینند
ببخشيد، اگر ميشه امنيت اين دو تا فايل رو هم ( هر كدوم جدا ) به من بگيد. البته چيزی نداره، فقط واسه DeCompile میگم.
فایل دوم رو سیستم من اجرا نشد ولی فایل اول رو اول با Smart Assembly و بعد هم با یه پکر نا آشنا پک کردین , فایل دامپ میشه ولی دکامپایل نمیشه چون Obfuscate شده.
من بيشتر به خاطر فايل دومی گذاشته بودم، وقتی كه دامپ شد، باز هم Reflector نمتونه كاری بكنه. البته تا اون جایی كه متوجه شدم #Dis با فايل اوليه مشكلی نداره، فقط بايد دامپ بشه.
اگر obfuscated شده باشه که بله reflector عاجز میمونه.
سلام دوستان.
من هم یک فایل میزارم البته نه به اسم CrackMe بلکه به اسم TestMe !
یه برنامه سادست که یه کاراکتری با یه الگوریتم خیلی ساده حرکت میکنه. میخوام اگر امکان داره دوستان چک کنن و با دسترسی به سورس برنامه الگوریتمش رو توضیح بدن. البته همون دسترسی به سورس برنامه هم کافیه و در واقع میخوام ببینم میشه با کارهایی که انجام شده باز هم به سورس رسید یا نه.
ممنون
سلام دوست عزیز bermooda
اصلا هیچ کار امنیتی روی این برنامه انجام نشده. :متعجب:
اینم کل سورس ها:
اول از یه فایل dll به نام net20comp.dll استفاده کرده اید که می توانید از ضمیمه دریافت کنید.
دوم از متدهای زیر در برنامه استفاده کرده اید:
private static Assembly GetAssembly(byte[] data){ MemoryStream stream = null; Assembly assembly = null; try { stream = UnZip(data); stream.Seek(0L, SeekOrigin.Begin); assembly = Assembly.Load(stream.ToArray()); } finally { if (stream != null) { stream.Close(); } stream = null; } return assembly;}
private static Assembly GetAssemblyByName(string name){ if (name == null) { return null; } if (cache == null) { cache = new HybridDictionary(); } name = name.Trim(); string str = name.ToLower(); if (cache[str] != null) { return (Assembly) cache[str]; } string id = ParseAssName(name)[Name]; if (id == null) { return null; } byte[] data = null; if (id.ToLower().Equals("net20comp")) { Assembly assembly = LoadZipDll(); cache[str] = assembly; return assembly; } data = GetResource(name); if (data == null) { data = GetResource(name.ToLower()); } if (data == null) { data = GetResource(id); } if (data == null) { data = GetResource(id.ToLower()); } if (data == null) { data = GetResource(Path.GetFileNameWithoutExtension(id).ToLower()); } if (data == null) { return null; } Assembly assembly2 = GetAssembly(data); data = null; cache[str] = assembly2; return assembly2;}
private static byte[] GetResource(string id){ byte[] buffer = null; if (rm == null) { rm = new ResourceManager("app", Assembly.GetExecutingAssembly()); } try { inResourceResolveFlag = true; string name = MangleDllName(id); if ((buffer == null) && (xrRm != null)) { for (int i = 0; i < xrRm.Count; i++) { try { ResourceManager manager = (ResourceManager) xrRm[i]; if (manager != null) { buffer = (byte[]) manager.GetObject(name); } } catch { } if (buffer != null) { break; } } } if (buffer == null) { buffer = (byte[]) rm.GetObject(name); } } finally { inResourceResolveFlag = false; } return buffer;}
private static void InitXR(){ try { string str = @"file:\"; string str2 = "-netz.resources"; string directoryName = Path.GetDirectoryName(Assembly.GetEntryAssembly().get_Location()); if (directoryName.StartsWith(str)) { directoryName = directoryName.Substring(str.Length, directoryName.Length - str.Length); } string[] files = Directory.GetFiles(directoryName, "*" + str2); if ((files != null) && (files.Length > 0)) { xrRm = new ArrayList(); for (int i = 0; i < files.Length; i++) { string fileName = Path.GetFileName(files[i]); ResourceManager manager = ResourceManager.CreateFileBasedResourceManager(fileName.Substring(0, fileName.Length - str2.Length) + "-netz", directoryName, null); if (manager != null) { xrRm.Add(manager); } } } } catch { }}
private static int InvokeApp(Assembly assembly, string[] args){ MethodInfo info = assembly.get_EntryPoint(); ParameterInfo[] parameters = info.GetParameters(); object[] objArray = null; if ((parameters != null) && (parameters.Length > 0)) { objArray = new object[] { args }; } object obj2 = info.Invoke(null, objArray); if ((obj2 != null) && (obj2 is int)) { return (int) obj2; } return 0;}
private static Assembly LoadZipDll(){ Assembly assembly = null; MemoryStream stream = null; try { byte[] resource = GetResource("net20comp.dll"); if (resource == null) { return null; } stream = new MemoryStream(resource); assembly = Assembly.Load(stream.ToArray()); } catch { assembly = null; } finally { if (stream != null) { stream.Close(); } stream = null; } return assembly;}
در کل خیلی می شه اگه بخوام تمام متدها را اینجا بزارم. ولی هرکدومش رو اگه خواستی بگویید تا اینجا بزارم.
نه دوست عزیز به این سادگی ها هم که شما گفتید نیست!
شما دارین کدهای packer رو میکید که دیده میشه. در واقع من خودم خواستم از این pack کردن به عنوان یک راه گم کردن و گیج کردن کرکر استفاده کنم.
در واقع برنامه من داخل اون packer هست. که البته روی برنامه اصلی هم یه کارهایی انجام دادم برای امنیتش.
اگر دوباره بررسی کنید ممنون میشم.
جالبه. چطوری با meta-data stream اين فايل ها اجرا ميشند!!؟:متعجب:
من يه بار اين كار رو كردم ولی جای ديگه اجرا نشد!!:متعجب:
میشه لطفا اطلاعاتی که بدست آوردید رو دقیق تر توضیح بدید؟
ممنون
شما يه برنامه نوشتيد و سپس با Smart Assembly، اون رو obfuscat كرديد. بعد يه برنامه ديگه نوشتيد تا اون رو لود كنه. البته گمونم چند بار اين كار لود انجام ميشه تا به آخرين گزينه، يعنی فايل اصلی برسيد.
نكته قابل توجه برای من اينه كه شما از meta-data stream هم استفاده كرديد، اما با اين حال فايل ها بدون مشكل اجرا ميشند!!!!
من از دو تا نرم افزار استفاده کردم و مقداری برنامه نویسی.
1- از یک packer استفاده کردن که open source هست و این مزیت رو داره که میشه هر بار توش تغییراتی ایجاد کرد تا Unpack کردنش سخت تر بشه (البته اینجا کار خاصی انجام ندادم و یه تغییرات کوچیک نسبت به default اش اعمال کردم)
2- از نرم افزار {smartAssembly} همونطور که شما اشاره کردید استفاده کردم.
ابتدا با packer برنامه رو pack و compress کردم
بعد برنامه حاصل رو با smartAssembly یه کارهایی روش انجام دادم : obfuscate و meta-data streaming یه تعداد کارهای روتین دیگه.
بعد برنامه حاصل رو دوباره pack کردم این بار با یه روش دیگه.
packer کار لود برنامه اصلی رو از Resource انجام میده و smartAssembly هم کار meta-data streaming رو.
من فقط تونستم تا اينجا پيش برم.
يه چيز هم قابل توجه دوستانی كه از 4 SmartAssembly استفاده می كنند، بگم.
وقتی كه با SmartAssmbly4 كه كرك نشده برنامه تون رو Obfuscat می كنيد، و خيال هم می كنيد كه هيچ مشكی نداره، بايد بدونيد كه به نظر مياد بعد از يه مدت برنامه از كار می افته.
SmartAssembly يكسری كد به برنامه تون اضافه می كنه كه با اون ها اين كار انجام ميشه.
مثلا شما در تاريخ 2009/1/1 برنامه رو Obfusecat می كنيد و بعد در تاريخ 2009/15/1 برنامه از كار می افته. ( البته محدوده زمانيش رو دقيق نمی دونم ). SmartAssembly چك می كنه ببينه آيا از تاريخ 2009/15/1 رد شديم يا نه، اگر رد شده بوديم يه Exception توليد ميكنه كه خودش به اون Exception رسيدگی می كنه و باعث از كار افتادن برنامه شما ميشه.
بله بعد از اینکه خودش expire میشه برنامه ها هم از کار می افتن
بسیار عالی.
میشه توضیح بدید تا اینجا که رفتید از چه روش هایی استفاده کردید؟
من خودم برنامه ای که گذاشته بودم رو بعد از dump گرفتن تونستم با نرم افزار DeSmart بطور کامل DeObfuscate کنم. شما هم از این برنامه استفاده کردید؟
اگر روش متفاوتی داشتید ممنون میشم توضیح بدید.
فایل اول بعد از dump گرفتن و DeSmart قسمت زیادیش DeObfuscate شده بود رشته های اون از قبیل ConnectionString ها معلوم بودن.نقل قول:
ببخشيد، اگر ميشه امنيت اين دو تا فايل رو هم ( هر كدوم جدا ) به من بگيد. البته چيزی نداره، فقط واسه DeCompile میگم.
فایل دوم اگر اشتباه نکنم باید با Xenocode PostBuild (نمیدونم چه نسخه ای) pack شده باشه چون نمیشه ازش dump گرفت و در واقع به عنوان برنامه دات نت نمیشناسدش.
تا اینجا تونستم پیش برم
فایل اول DeSmart شده:
شما هم بلاخره ازش dump گرفتيد؟ چطوری؟ البته فكر كنم اين مشكلات كه واسه Unpack كردنش به وجود میومد به خاطر Metada Data Stream بود.نقل قول:
من خودم برنامه ای که گذاشته بودم رو بعد از dump گرفتن
DeSmart فقط می تونه DeObfuscate كنه ( نميتونه از Metada... رد بشه ). اون هم تا حدی و برای SmartAssembly4 به پايين. البته 4 رو هم تا حدی خوب عمل می كنه، ولی SmartAssembly4 بهتر از DeSmart عمل میكنه. فايل بعد از DeObfuscate شدن اجرا نميشه.نقل قول:
تونستم با نرم افزار DeSmart بطور کامل DeObfuscate کنم
ممنونم كه نگاه كرديد.:لبخندساده:نقل قول:
فایل اول بعد از dump گرفتن و DeSmart قسمت زیادیش DeObfuscate شده بود رشته های اون از قبیل ConnectionString ها معلوم بودن.
فایل دوم اگر اشتباه نکنم باید با Xenocode PostBuild (نمیدونم چه نسخه ای) pack شده باشه چون نمیشه ازش dump گرفت و در واقع به عنوان برنامه دات نت نمیشناسدش.
تا اینجا تونستم پیش برم
من اول هر دو تا رو با SmartAssembly4، Obfusecate كردم كردم. اولی بدون Metada-Data-Straem و دومی با meta.... ، و بعد پك كردم و بعد آپلود. اما Nima NT گفتند كه فايل دوم روی كامپيوترشون اجرا نميشه. حالا من تعجب می كنم كه فايل های شما چطوری اجرا ميشد؟
بعد شما چطوری تو فايلی كه من گذاشته بودم Connetction String پيدا كرديد؟ من هيچی تو اون پروژه نداشتم. يه پروژه كاملا خالی بود.
و همون طور هم كه گفتم SmartAssembly4 بهتر از DeSmart عمل ميكنه. فايل DeObfuscate شده اجرا نميشه.
فایلی که ضمیمه کردین 2 part داره من هردو رو گرفتم و تو یه فولدر extract کردم. دو تا فایل Exe بودن، DeCompile Test و DeCompile Test2.نقل قول:
اما Nima NT گفتند كه فايل دوم روی كامپيوترشون اجرا نميشه.
در حالت عادی وقتی با smartassembly و با meta-data stream فایل رو obfuscate میشه، امکان dump گرفتن هست اما از فایل دوم شما نمیشد dump گرفت.نقل قول:
من اول هر دو تا رو با SmartAssembly4، Obfusecate كردم كردم. اولی بدون Metada-Data-Straem و دومی با meta....
آیا به خاطر pack کردن هست یا دلیل دیگه ای داره؟
نقل قول:
بعد شما چطوری تو فايلی كه من گذاشته بودم Connetction String پيدا كرديد؟ من هيچی تو اون پروژه نداشتم. يه پروژه كاملا خالی بود.
گفتم كه. من هر دو فايل رو Pack كردم و به راحتی و آسونی دامپ ميشند.نقل قول:
در حالت عادی وقتی با smartassembly و با meta-data stream فایل رو obfuscate میشه، امکان dump گرفتن هست اما از فایل دوم شما نمیشد dump گرفت.
آیا به خاطر pack کردن هست یا دلیل دیگه ای داره؟
و بازم ميگم. پروژه من كاملا خالی بود. من رفتم يه WindowsApplication ساختم. Debug كردم، و رفتم رو فايل exe اين تغييرات رو ايجاد كردم و بعد آپ كردم. معلوم نيست اينا از كجا اومدن
لطفا اگر امکان دارد این روش رو و امکاناتش رو برامون توضیح بدهید
لطفا لینک دانلود برنامه هایی که استفاده می کنید را بزارید یا برام ایمیل کنید
فکر اینکه برنامه ای که 6 ماه براش وقت گذاشتم براحتی کرک بشه داره دیونم میکنه
سلام
کسی یک لینک سالم از برنامه DeSmart ندارد ؟ این لینک که خراب است :
http://rongchaua.net/tools-mainmenu-...-smartassembly
با سلام خدمت شما همه دوستان
من یه برنامه با VB.Net نوشتم و این برنامه از یک ماژول و یک فرم که درونشون کدهای ارزشمندی هستن قرار داره .
این برنامه به ظاهر ساده که خودم نوشتم خیلی خیلی با ارزشه و فکر در حدود 5 میلیون قیمت بخوره !
حالا بعد از این همه کار فهمیدم که .NET ها قابلین دی کامپیل شدن دارن !
حالا از شما دوستان حرفه ای که کار کردید (چون پستهای قبلی رو خوندم) از شما تقاضا دارم تا من رو راهنمایی کنید که چیکار کنم برنامه دی کامپایل نشه تحت هیچ شرایطی (و یا دی کامپایل شدن رو حداقل ممکن کنه)
با تشکر
سلام
من پست های ارسال شده را خودنم. روش های جالبی بود و اگر اشتباه نکنم تمام این کارا برای بالا بردن امنیت و غیر قابل بازگشت کردن فایل های exe است!!
ولی از روش هایی که گفتید هیچکدام را بلد نیستم و کار نکردم.
اگر ممکنه فایل های آموزشی در مورد آنها قرار بدید + برنامه ها
- یه سوال : این روش ها برای نرم افزارهای بزرگ هم جواب می دن؟ یعنی برنامه با مشکل بر نمی خورند؟