PDA

View Full Version : DeCompile کردن یک برنامه به #C



ASKaffash
شنبه 24 مرداد 1388, 15:44 عصر
سلام

لطفا دوستان پست 47 لینک زیر یک برنامه به #C را اگر میتوانند DeCompile کنند

http://barnamenevis.org/forum/showthread.php?t=172723&page=5

Nima NT
شنبه 24 مرداد 1388, 16:04 عصر
پسورد : eybabaalikolabikari
فایل آنپک شده رو هم ضمیمه کردم.

ASKaffash
شنبه 24 مرداد 1388, 16:31 عصر
پسورد : eybabaalikolabikari
فایل آنپک شده رو هم ضمیمه کردم.
سلام
خیلی ممنون از شما لطفا راهنمائی کنید چگونه اینکار را انجام دادید؟

Nima NT
شنبه 24 مرداد 1388, 16:48 عصر
ابتدا فایل رو توسط ابزارهای Generic دامپ کردم و بعد توسط Reflector دکامپایلش کردم.
خیلی ساده بود.:لبخندساده:

ali_kolahdoozan
شنبه 24 مرداد 1388, 21:34 عصر
اگر میشود یک نگاهی هم به این بیندازید

Nima NT
شنبه 24 مرداد 1388, 21:55 عصر
از Smart Assembly و DotNet Reactor استفاده کردید و فایل نهایی رو توسط برنامه اول Obfuscate کردید.
در کل جالبه ولی اینها همشون آنتی دارن و نهایتا" کرک میشه , بهتره به روشهای ابتکاری خودتون ( از طریق برنامه نویسی ) رو بیارید.
در کل من فقط تونستم تا اینجا پیش برم.

ali_kolahdoozan
شنبه 24 مرداد 1388, 22:07 عصر
میشه یک نگاهی به این یکی دیگه هم بندازید؟

Nima NT
شنبه 24 مرداد 1388, 22:12 عصر
متاسفانه این تکنیکها امنیتی ندارن , بازم میگم بهتره به روشهای برنامه نویسی رو بیاورید.
پسورد :
$$***@@@@eybabaalikolabikari)))9997&&&&

ali_kolahdoozan
شنبه 24 مرداد 1388, 22:16 عصر
این از اولی در آمد یا دومی ؟

Nima NT
شنبه 24 مرداد 1388, 22:29 عصر
از دومی ولی از اولی هم میشد که دربیاد.

ali_kolahdoozan
شنبه 24 مرداد 1388, 22:45 عصر
زحمت این رو هم به عنوان آخری بکشید

Nima NT
شنبه 24 مرداد 1388, 23:10 عصر
این یکی تا حدی شد شبیه keygen Me
دو تا رشته مشکوک هست که باید کد بشن.

&&&&!!!@@@@CCCVVDTR

C#IsBestOKOK

ali_kolahdoozan
شنبه 24 مرداد 1388, 23:15 عصر
یعنی الان پیام درست نگرفتی ؟ پیام "!! Na Baba En Kare Hasti !!!" رو باید بهت بده . داده یا نه ؟

Nima NT
شنبه 24 مرداد 1388, 23:24 عصر
نه پیام درست رو نگرفتم , چون Obfuscate هم شده بود Patch کردنش طول میکشه و آدم رو دیوونه میکنه.

ali_kolahdoozan
شنبه 24 مرداد 1388, 23:31 عصر
دستت درد نکنه اگر اینم ببینی دیگر میتونیم اعلام نتیجه کنیم توی تاپیک . سعی کن پیام موفق بگیری . رشته ها رو تشخیص دادن رو بیخیال

Nima NT
یک شنبه 25 مرداد 1388, 00:12 صبح
رشته alikolahdoozan هست ولی باید برای اینکه پیام مناسب نمایش داده بشه فایل پچ بشه که کار من نیست ( بلد نیستم ) , ولی دیدم که میشه و به گفته اهل فنش راحت هست.

ali_kolahdoozan
یک شنبه 25 مرداد 1388, 00:24 صبح
فقط alikolahdoozan نیست . پس اگر از کلاس partial استفاده بشه و متد عملا دست بسته است . و به این راحتیها نمیشه کاری کرد . این خوبه . الان خوابم میاد صبح سورس همین رو میزارم همه ببینند

bahar_engineer
چهارشنبه 28 مرداد 1388, 13:48 عصر
فقط alikolahdoozan نیست . پس اگر از کلاس partial استفاده بشه و متد عملا دست بسته است . و به این راحتیها نمیشه کاری کرد . این خوبه . الان خوابم میاد صبح سورس همین رو میزارم همه ببینند

جناب لطفاً بگو چکار کردی ما هم یاد بگیریم ...

منتظرم

Armin060
سه شنبه 03 شهریور 1388, 10:57 صبح
ببخشيد، اگر ميشه امنيت اين دو تا فايل رو هم ( هر كدوم جدا ) به من بگيد. البته چيزی نداره، فقط واسه DeCompile میگم.

Nima NT
سه شنبه 03 شهریور 1388, 11:43 صبح
فایل دوم رو سیستم من اجرا نشد ولی فایل اول رو اول با Smart Assembly و بعد هم با یه پکر نا آشنا پک کردین , فایل دامپ میشه ولی دکامپایل نمیشه چون Obfuscate شده.

Armin060
سه شنبه 03 شهریور 1388, 12:06 عصر
من بيشتر به خاطر فايل دومی گذاشته بودم، وقتی كه دامپ شد، باز هم Reflector نمتونه كاری بكنه. البته تا اون جایی كه متوجه شدم #Dis با فايل اوليه مشكلی نداره، فقط بايد دامپ بشه.

Nima NT
سه شنبه 03 شهریور 1388, 12:33 عصر
اگر obfuscated شده باشه که بله reflector عاجز میمونه.

Amir Oveisi
پنج شنبه 05 شهریور 1388, 05:13 صبح
سلام دوستان.
من هم یک فایل میزارم البته نه به اسم CrackMe بلکه به اسم TestMe !
یه برنامه سادست که یه کاراکتری با یه الگوریتم خیلی ساده حرکت میکنه. میخوام اگر امکان داره دوستان چک کنن و با دسترسی به سورس برنامه الگوریتمش رو توضیح بدن. البته همون دسترسی به سورس برنامه هم کافیه و در واقع میخوام ببینم میشه با کارهایی که انجام شده باز هم به سورس رسید یا نه.

ممنون

system32
پنج شنبه 05 شهریور 1388, 10:54 صبح
سلام دوست عزیز bermooda

اصلا هیچ کار امنیتی روی این برنامه انجام نشده. :متعجب:

اینم کل سورس ها:

اول از یه فایل dll به نام net20comp.dll استفاده کرده اید که می توانید از ضمیمه دریافت کنید.

دوم از متدهای زیر در برنامه استفاده کرده اید:




private static Assembly (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Reflection.Assembly) GetAssembly (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://TestMe2:1.0.0.0/netz.NetzStarter/GetAssembly(Byte%5b%5d):System.Reflection.Assembly )(byte (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Byte)[] data){ MemoryStream (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.IO.MemoryStream) stream = null; Assembly (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Reflection.Assembly) assembly = null; try { stream = UnZip (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://TestMe2:1.0.0.0/netz.NetzStarter/UnZip(Byte%5b%5d):System.IO.MemoryStream)(data); stream.Seek (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.IO.Stream/Seek(Int64,System.IO.SeekOrigin):Int64)(0L, SeekOrigin (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:969db8053d3322ac/System.IO.SeekOrigin).Begin (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:969db8053d3322ac/System.IO.SeekOrigin/Begin)); assembly = Assembly (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Reflection.Assembly).Load (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Reflection.Assembly/Load(Byte%5b%5d):System.Reflection.Assembly)(strea m.ToArray (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.IO.MemoryStream/ToArray():Byte%5b%5d)()); } finally { if (stream != null) { stream.Close (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.IO.Stream/Close())(); } stream = null; } return assembly;}





private static Assembly (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Reflection.Assembly) GetAssemblyByName (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://TestMe2:1.0.0.0/netz.NetzStarter/GetAssemblyByName(String):System.Reflection.Assemb ly)(string (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.String) name){ if (name == null) { return null; } if (cache (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://TestMe2:1.0.0.0/netz.NetzStarter/cache:System.Collections.Specialized.HybridDiction ary) == null) { cache (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://TestMe2:1.0.0.0/netz.NetzStarter/cache:System.Collections.Specialized.HybridDiction ary) = new HybridDictionary (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://System:2.0.0.0:b77a5c561934e089/System.Collections.Specialized.HybridDictionary/.ctor())(); } name = name.Trim (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.String/Trim():String)(); string (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.String) str = name.ToLower (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.String/ToLower():String)(); if (cache (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://TestMe2:1.0.0.0/netz.NetzStarter/cache:System.Collections.Specialized.HybridDiction ary)[str] != null) { return (Assembly (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Reflection.Assembly)) cache (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://TestMe2:1.0.0.0/netz.NetzStarter/cache:System.Collections.Specialized.HybridDiction ary)[str]; } string (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.String) id = ParseAssName (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://TestMe2:1.0.0.0/netz.NetzStarter/ParseAssName(String):System.Collections.Specialize d.StringDictionary)(name)[Name (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://TestMe2:1.0.0.0/netz.NetzStarter/Name:String)]; if (id == null) { return null; } byte (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Byte)[] data = null; if (id.ToLower (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.String/ToLower():String)().Equals (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.String/Equals(String):Boolean)("net20comp")) { Assembly (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Reflection.Assembly) assembly = LoadZipDll (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://TestMe2:1.0.0.0/netz.NetzStarter/LoadZipDll():System.Reflection.Assembly)(); cache (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://TestMe2:1.0.0.0/netz.NetzStarter/cache:System.Collections.Specialized.HybridDiction ary)[str] = assembly; return assembly; } data = GetResource (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://TestMe2:1.0.0.0/netz.NetzStarter/GetResource(String):Byte%5b%5d)(name); if (data == null) { data = GetResource (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://TestMe2:1.0.0.0/netz.NetzStarter/GetResource(String):Byte%5b%5d)(name.ToLower (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.String/ToLower():String)()); } if (data == null) { data = GetResource (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://TestMe2:1.0.0.0/netz.NetzStarter/GetResource(String):Byte%5b%5d)(id); } if (data == null) { data = GetResource (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://TestMe2:1.0.0.0/netz.NetzStarter/GetResource(String):Byte%5b%5d)(id.ToLower (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.String/ToLower():String)()); } if (data == null) { data = GetResource (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://TestMe2:1.0.0.0/netz.NetzStarter/GetResource(String):Byte%5b%5d)(Path (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.IO.Path).GetFileNameWithoutExtension (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.IO.Path/GetFileNameWithoutExtension(String):String)(id).To Lower (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.String/ToLower():String)()); } if (data == null) { return null; } Assembly (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Reflection.Assembly) assembly2 = GetAssembly (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://TestMe2:1.0.0.0/netz.NetzStarter/GetAssembly(Byte%5b%5d):System.Reflection.Assembly )(data); data = null; cache (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://TestMe2:1.0.0.0/netz.NetzStarter/cache:System.Collections.Specialized.HybridDiction ary)[str] = assembly2; return assembly2;}






private static byte (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Byte)[] GetResource (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://TestMe2:1.0.0.0/netz.NetzStarter/GetResource(String):Byte%5b%5d)(string (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.String) id){ byte (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Byte)[] buffer = null; if (rm (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://TestMe2:1.0.0.0/netz.NetzStarter/rm:System.Resources.ResourceManager) == null) { rm (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://TestMe2:1.0.0.0/netz.NetzStarter/rm:System.Resources.ResourceManager) = new ResourceManager (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Resources.ResourceManager/.ctor(String,System.Reflection.Assembly))("app", Assembly (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Reflection.Assembly).GetExecutingAssembly (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Reflection.Assembly/GetExecutingAssembly():System.Reflection.Assembly) ()); } try { inResourceResolveFlag (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://TestMe2:1.0.0.0/netz.NetzStarter/inResourceResolveFlag:Boolean) = true; string (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.String) name = MangleDllName (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://TestMe2:1.0.0.0/netz.NetzStarter/MangleDllName(String):String)(id); if ((buffer == null) && (xrRm (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://TestMe2:1.0.0.0/netz.NetzStarter/xrRm:System.Collections.ArrayList) != null)) { for (int (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Int32) i = 0; i < xrRm (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://TestMe2:1.0.0.0/netz.NetzStarter/xrRm:System.Collections.ArrayList).Count (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:969db8053d3322ac/System.Collections.ArrayList/property:Count:Int32); i++) { try { ResourceManager (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Resources.ResourceManager) manager = (ResourceManager (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Resources.ResourceManager)) xrRm (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://TestMe2:1.0.0.0/netz.NetzStarter/xrRm:System.Collections.ArrayList)[i]; if (manager != null) { buffer = (byte (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Byte)[]) manager.GetObject (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Resources.ResourceManager/GetObject(String):Object)(name); } } catch { } if (buffer != null) { break; } } } if (buffer == null) { buffer = (byte (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Byte)[]) rm (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://TestMe2:1.0.0.0/netz.NetzStarter/rm:System.Resources.ResourceManager).GetObject (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Resources.ResourceManager/GetObject(String):Object)(name); } } finally { inResourceResolveFlag (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://TestMe2:1.0.0.0/netz.NetzStarter/inResourceResolveFlag:Boolean) = false; } return buffer;}





private static void (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Void) InitXR (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://TestMe2:1.0.0.0/netz.NetzStarter/InitXR())(){ try { string (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.String) str = @"file:\"; string (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.String) str2 = "-netz.resources"; string (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.String) directoryName = Path (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.IO.Path).GetDirectoryName (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.IO.Path/GetDirectoryName(String):String)(Assembly (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Reflection.Assembly).GetEntryAssembly (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Reflection.Assembly/GetEntryAssembly():System.Reflection.Assembly)().g et_Location (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Reflection.Assembly/get_Location():String)()); if (directoryName.StartsWith (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.String/StartsWith(String):Boolean)(str)) { directoryName = directoryName.Substring (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.String/Substring(Int32,Int32):String)(str.Length (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:969db8053d3322ac/System.String/property:Length:Int32), directoryName.Length (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:969db8053d3322ac/System.String/property:Length:Int32) - str.Length (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:969db8053d3322ac/System.String/property:Length:Int32)); } string (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.String)[] files = Directory (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.IO.Directory).GetFiles (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.IO.Directory/GetFiles(String,String):String%5b%5d)(directoryNam e, "*" + str2); if ((files != null) && (files.Length (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Array/property:Length:Int32) > 0)) { xrRm (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://TestMe2:1.0.0.0/netz.NetzStarter/xrRm:System.Collections.ArrayList) = new ArrayList (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Collections.ArrayList/.ctor())(); for (int (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Int32) i = 0; i < files.Length (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Array/property:Length:Int32); i++) { string (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.String) fileName = Path (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.IO.Path).GetFileName (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.IO.Path/GetFileName(String):String)(files[i]); ResourceManager (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Resources.ResourceManager) manager = ResourceManager (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Resources.ResourceManager).CreateFileBasedR esourceManager (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Resources.ResourceManager/CreateFileBasedResourceManager(String,String,Syste m.Type):System.Resources.ResourceManager)(fileName .Substring (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.String/Substring(Int32,Int32):String)(0, fileName.Length (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:969db8053d3322ac/System.String/property:Length:Int32) - str2.Length (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:969db8053d3322ac/System.String/property:Length:Int32)) + "-netz", directoryName, null); if (manager != null) { xrRm (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://TestMe2:1.0.0.0/netz.NetzStarter/xrRm:System.Collections.ArrayList).Add (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Collections.ArrayList/Add(Object):Int32)(manager); } } } } catch { }}





private static int (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Int32) InvokeApp (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://TestMe2:1.0.0.0/netz.NetzStarter/InvokeApp(System.Reflection.Assembly,String%5b%5d) :Int32)(Assembly (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Reflection.Assembly) assembly, string (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.String)[] args){ MethodInfo (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Reflection.MethodInfo) info = assembly.get_EntryPoint (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Reflection.Assembly/get_EntryPoint():System.Reflection.MethodInfo)(); ParameterInfo (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Reflection.ParameterInfo)[] parameters = info.GetParameters (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Reflection.MethodBase/GetParameters():System.Reflection.ParameterInfo%5b %5d)(); object (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Object)[] objArray = null; if ((parameters != null) && (parameters.Length (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Array/property:Length:Int32) > 0)) { objArray = new object (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Object)[] { args }; } object (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Object) obj2 = info.Invoke (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Reflection.MethodBase/Invoke(Object,Object%5b%5d):Object)(null, objArray); if ((obj2 != null) && (obj2 is int (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Int32))) { return (int (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Int32)) obj2; } return 0;}





private static Assembly (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Reflection.Assembly) LoadZipDll (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://TestMe2:1.0.0.0/netz.NetzStarter/LoadZipDll():System.Reflection.Assembly)(){ Assembly (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Reflection.Assembly) assembly = null; MemoryStream (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.IO.MemoryStream) stream = null; try { byte (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Byte)[] resource = GetResource (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://TestMe2:1.0.0.0/netz.NetzStarter/GetResource(String):Byte%5b%5d)("net20comp.dll"); if (resource == null) { return null; } stream = new MemoryStream (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.IO.MemoryStream/.ctor(Byte%5b%5d))(resource); assembly = Assembly (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Reflection.Assembly).Load (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Reflection.Assembly/Load(Byte%5b%5d):System.Reflection.Assembly)(strea m.ToArray (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.IO.MemoryStream/ToArray():Byte%5b%5d)()); } catch { assembly = null; } finally { if (stream != null) { stream.Close (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.IO.Stream/Close())(); } stream = null; } return assembly;}



در کل خیلی می شه اگه بخوام تمام متدها را اینجا بزارم. ولی هرکدومش رو اگه خواستی بگویید تا اینجا بزارم.

Amir Oveisi
جمعه 06 شهریور 1388, 01:15 صبح
نه دوست عزیز به این سادگی ها هم که شما گفتید نیست!
شما دارین کدهای packer رو میکید که دیده میشه. در واقع من خودم خواستم از این pack کردن به عنوان یک راه گم کردن و گیج کردن کرکر استفاده کنم.
در واقع برنامه من داخل اون packer هست. که البته روی برنامه اصلی هم یه کارهایی انجام دادم برای امنیتش.

اگر دوباره بررسی کنید ممنون میشم.

Armin060
جمعه 06 شهریور 1388, 04:37 صبح
جالبه. چطوری با meta-data stream اين فايل ها اجرا ميشند!!؟:متعجب:
من يه بار اين كار رو كردم ولی جای ديگه اجرا نشد!!:متعجب:

Amir Oveisi
جمعه 06 شهریور 1388, 04:43 صبح
میشه لطفا اطلاعاتی که بدست آوردید رو دقیق تر توضیح بدید؟

ممنون

Armin060
جمعه 06 شهریور 1388, 04:46 صبح
شما يه برنامه نوشتيد و سپس با Smart Assembly، اون رو obfuscat كرديد. بعد يه برنامه ديگه نوشتيد تا اون رو لود كنه. البته گمونم چند بار اين كار لود انجام ميشه تا به آخرين گزينه، يعنی فايل اصلی برسيد.
نكته قابل توجه برای من اينه كه شما از meta-data stream هم استفاده كرديد، اما با اين حال فايل ها بدون مشكل اجرا ميشند!!!!

Amir Oveisi
جمعه 06 شهریور 1388, 05:04 صبح
من از دو تا نرم افزار استفاده کردم و مقداری برنامه نویسی.
1- از یک packer استفاده کردن که open source هست و این مزیت رو داره که میشه هر بار توش تغییراتی ایجاد کرد تا Unpack کردنش سخت تر بشه (البته اینجا کار خاصی انجام ندادم و یه تغییرات کوچیک نسبت به default اش اعمال کردم)
2- از نرم افزار {smartAssembly} همونطور که شما اشاره کردید استفاده کردم.

ابتدا با packer برنامه رو pack و compress کردم
بعد برنامه حاصل رو با smartAssembly یه کارهایی روش انجام دادم : obfuscate و meta-data streaming یه تعداد کارهای روتین دیگه.
بعد برنامه حاصل رو دوباره pack کردم این بار با یه روش دیگه.

packer کار لود برنامه اصلی رو از Resource انجام میده و smartAssembly هم کار meta-data streaming رو.

Armin060
جمعه 06 شهریور 1388, 10:56 صبح
من فقط تونستم تا اينجا پيش برم.

يه چيز هم قابل توجه دوستانی كه از 4 SmartAssembly استفاده می كنند، بگم.
وقتی كه با SmartAssmbly4 كه كرك نشده برنامه تون رو Obfuscat می كنيد، و خيال هم می كنيد كه هيچ مشكی نداره، بايد بدونيد كه به نظر مياد بعد از يه مدت برنامه از كار می افته.
SmartAssembly يكسری كد به برنامه تون اضافه می كنه كه با اون ها اين كار انجام ميشه.
مثلا شما در تاريخ 2009/1/1 برنامه رو Obfusecat می كنيد و بعد در تاريخ 2009/15/1 برنامه از كار می افته. ( البته محدوده زمانيش رو دقيق نمی دونم ). SmartAssembly چك می كنه ببينه آيا از تاريخ 2009/15/1 رد شديم يا نه، اگر رد شده بوديم يه Exception توليد ميكنه كه خودش به اون Exception رسيدگی می كنه و باعث از كار افتادن برنامه شما ميشه.

Amir Oveisi
شنبه 07 شهریور 1388, 01:21 صبح
بله بعد از اینکه خودش expire میشه برنامه ها هم از کار می افتن

Amir Oveisi
شنبه 07 شهریور 1388, 01:38 صبح
بسیار عالی.
میشه توضیح بدید تا اینجا که رفتید از چه روش هایی استفاده کردید؟

Amir Oveisi
شنبه 07 شهریور 1388, 04:35 صبح
من خودم برنامه ای که گذاشته بودم رو بعد از dump گرفتن تونستم با نرم افزار DeSmart بطور کامل DeObfuscate کنم. شما هم از این برنامه استفاده کردید؟
اگر روش متفاوتی داشتید ممنون میشم توضیح بدید.

Amir Oveisi
شنبه 07 شهریور 1388, 04:41 صبح
ببخشيد، اگر ميشه امنيت اين دو تا فايل رو هم ( هر كدوم جدا ) به من بگيد. البته چيزی نداره، فقط واسه DeCompile میگم.

فایل اول بعد از dump گرفتن و DeSmart قسمت زیادیش DeObfuscate شده بود رشته های اون از قبیل ConnectionString ها معلوم بودن.

فایل دوم اگر اشتباه نکنم باید با Xenocode PostBuild (نمیدونم چه نسخه ای) pack شده باشه چون نمیشه ازش dump گرفت و در واقع به عنوان برنامه دات نت نمیشناسدش.

تا اینجا تونستم پیش برم

فایل اول DeSmart شده:

Armin060
شنبه 07 شهریور 1388, 05:05 صبح
من خودم برنامه ای که گذاشته بودم رو بعد از dump گرفتن
شما هم بلاخره ازش dump گرفتيد؟ چطوری؟ البته فكر كنم اين مشكلات كه واسه Unpack كردنش به وجود میومد به خاطر Metada Data Stream بود.


تونستم با نرم افزار DeSmart بطور کامل DeObfuscate کنم
DeSmart فقط می تونه DeObfuscate كنه ( نميتونه از Metada... رد بشه ). اون هم تا حدی و برای SmartAssembly4 به پايين. البته 4 رو هم تا حدی خوب عمل می كنه، ولی SmartAssembly4 بهتر از DeSmart عمل میكنه. فايل بعد از DeObfuscate شدن اجرا نميشه.



فایل اول بعد از dump گرفتن و DeSmart قسمت زیادیش DeObfuscate شده بود رشته های اون از قبیل ConnectionString ها معلوم بودن.

فایل دوم اگر اشتباه نکنم باید با Xenocode PostBuild (نمیدونم چه نسخه ای) pack شده باشه چون نمیشه ازش dump گرفت و در واقع به عنوان برنامه دات نت نمیشناسدش.

تا اینجا تونستم پیش برم

ممنونم كه نگاه كرديد.:لبخندساده:

من اول هر دو تا رو با SmartAssembly4، Obfusecate كردم كردم. اولی بدون Metada-Data-Straem و دومی با meta.... ، و بعد پك كردم و بعد آپلود. اما Nima NT گفتند كه فايل دوم روی كامپيوترشون اجرا نميشه. حالا من تعجب می كنم كه فايل های شما چطوری اجرا ميشد؟
بعد شما چطوری تو فايلی كه من گذاشته بودم Connetction String پيدا كرديد؟ من هيچی تو اون پروژه نداشتم. يه پروژه كاملا خالی بود.
و همون طور هم كه گفتم SmartAssembly4 بهتر از DeSmart عمل ميكنه. فايل DeObfuscate شده اجرا نميشه.

Amir Oveisi
شنبه 07 شهریور 1388, 05:26 صبح
اما Nima NT گفتند كه فايل دوم روی كامپيوترشون اجرا نميشه.
فایلی که ضمیمه کردین 2 part داره من هردو رو گرفتم و تو یه فولدر extract کردم. دو تا فایل Exe بودن، DeCompile Test و DeCompile Test2.



من اول هر دو تا رو با SmartAssembly4، Obfusecate كردم كردم. اولی بدون Metada-Data-Straem و دومی با meta....
در حالت عادی وقتی با smartassembly و با meta-data stream فایل رو obfuscate میشه، امکان dump گرفتن هست اما از فایل دوم شما نمیشد dump گرفت.
آیا به خاطر pack کردن هست یا دلیل دیگه ای داره؟


بعد شما چطوری تو فايلی كه من گذاشته بودم Connetction String پيدا كرديد؟ من هيچی تو اون پروژه نداشتم. يه پروژه كاملا خالی بود.

Armin060
شنبه 07 شهریور 1388, 05:27 صبح
در حالت عادی وقتی با smartassembly و با meta-data stream فایل رو obfuscate میشه، امکان dump گرفتن هست اما از فایل دوم شما نمیشد dump گرفت.
آیا به خاطر pack کردن هست یا دلیل دیگه ای داره؟
گفتم كه. من هر دو فايل رو Pack كردم و به راحتی و آسونی دامپ ميشند.

و بازم ميگم. پروژه من كاملا خالی بود. من رفتم يه WindowsApplication ساختم. Debug كردم، و رفتم رو فايل exe اين تغييرات رو ايجاد كردم و بعد آپ كردم. معلوم نيست اينا از كجا اومدن

FastCode
پنج شنبه 26 آذر 1388, 18:11 عصر
ببخشيد، اگر ميشه امنيت اين دو تا فايل رو هم ( هر كدوم جدا ) به من بگيد. البته چيزی نداره، فقط واسه DeCompile میگم.

پر از تروجان و ویروس بود.:تشویق::تشویق::تشویق:

Cherry
شنبه 12 دی 1388, 22:58 عصر
1- از یک packer استفاده کردن که open source هست و این مزیت رو داره که میشه هر بار توش تغییراتی ایجاد کرد تا Unpack کردنش سخت تر بشه (البته اینجا کار خاصی انجام ندادم و یه تغییرات کوچیک نسبت به default اش اعمال کردم)


لطفا اگر امکانش هست نام این پکر را بگوئید تا ما هم استفاده کنیم.

با تشکر.

aminzayer
شنبه 19 دی 1388, 00:24 صبح
لطفا اگر امکان دارد این روش رو و امکاناتش رو برامون توضیح بدهید

لطفا لینک دانلود برنامه هایی که استفاده می کنید را بزارید یا برام ایمیل کنید

فکر اینکه برنامه ای که 6 ماه براش وقت گذاشتم براحتی کرک بشه داره دیونم میکنه

ASKaffash
یک شنبه 08 فروردین 1389, 09:37 صبح
من خودم برنامه ای که گذاشته بودم رو بعد از dump گرفتن تونستم با نرم افزار DeSmart بطور کامل DeObfuscate کنم. شما هم از این برنامه استفاده کردید؟
اگر روش متفاوتی داشتید ممنون میشم توضیح بدید.

سلام
کسی یک لینک سالم از برنامه DeSmart ندارد ؟ این لینک که خراب است :
http://rongchaua.net/tools-mainmenu-36/85-desmart-deobfuscator-for-smartassembly

sobhan5968
یک شنبه 08 فروردین 1389, 14:06 عصر
با سلام خدمت شما همه دوستان

من یه برنامه با VB.Net نوشتم و این برنامه از یک ماژول و یک فرم که درونشون کدهای ارزشمندی هستن قرار داره .

این برنامه به ظاهر ساده که خودم نوشتم خیلی خیلی با ارزشه و فکر در حدود 5 میلیون قیمت بخوره !
حالا بعد از این همه کار فهمیدم که .NET ها قابلین دی کامپیل شدن دارن !

حالا از شما دوستان حرفه ای که کار کردید (چون پستهای قبلی رو خوندم) از شما تقاضا دارم تا من رو راهنمایی کنید که چیکار کنم برنامه دی کامپایل نشه تحت هیچ شرایطی (و یا دی کامپایل شدن رو حداقل ممکن کنه)

با تشکر

maktab
یک شنبه 08 فروردین 1389, 19:30 عصر
سلام
من پست های ارسال شده را خودنم. روش های جالبی بود و اگر اشتباه نکنم تمام این کارا برای بالا بردن امنیت و غیر قابل بازگشت کردن فایل های exe است!!
ولی از روش هایی که گفتید هیچکدام را بلد نیستم و کار نکردم.
اگر ممکنه فایل های آموزشی در مورد آنها قرار بدید + برنامه ها

- یه سوال : این روش ها برای نرم افزارهای بزرگ هم جواب می دن؟ یعنی برنامه با مشکل بر نمی خورند؟