<\^/*\^/>کار با فایل ها و بایت ها; آخرین کار: «الگوریتم های فشرده سازی» ابتدا تا انتها<\^/*\^/>
با سلام خدمت همه عزیزان و دوستان برنامه نویس.
اول یه مقدمه در مورد این تاپیک بگم:
فکر کنم حدود چند سالی میشه که دارم رو این موضوع فکر میکنم که چطوری بتونم سورس یک فایل Exe رو بدست بیارم و بتونم اونو دست کاری کنم آموزش ها و منابع زیادی دیدم منتها همشون طوری بودن که فقط روی یه موضوع خاصی آموزش میدادن و کار میکردن و اصلاً جامع و عام نبود که بشه فهمید که چطور میشه واقعاً این کارا رو انجام داد.
هم متاسفانه و هم خوشبختانه که نمیشه سورس یه فایل رو بدست آورد.متاسفانه برای اینکه ما برنامه نویسان دوست داریم بدونیم که شرکتها چطور و با چه فرمولی برنامه نویسی میکنن تا ما هم بتونیم حرفه ای و مثل اونا یا بهتر از اونا برنامه بنویسیم.خوشبختانه برای اینکه کسی نمیتونه سورس برنامه های ما رو ببینه:31:.البته اگه به این موضوع دقت کنین میبیننین که چقدر بی ربط بود!
ولی اگه دقت کرده باشین میبینین که میخوام چی بگم.
درسته..
ما اینجا برنامه های خارجی رو تست میکنیم و تا جایی که میتونیم ریسورس میکنیم.رو سورسش کار میکنیم.واینجا یاد میگیریم که چطور برنامه بنویسیم که به همین راحتی هم ریسورس نشه و مهتر از همه کرک نشه.
موضوع تاپیک هم بعد از اتمام هر کار عوض میشه... .البته با همکاری مدیران و همکاران عزیز.
خوب بریم سر اصل مطلب:
اینو هم بگم ما اینجا هم نرم افزار های ریسورس و هم ضد ریسورس معرفی میکنیم.تا دوستان استفاده زیادی ببرن.
کار ما اینجا 0 و 1 هست البته 0 و 1 که نه حالا ما با بایت کار میکنیم راحت تر باشه 0 تا 255 خوبه فکر کنم.البته فرقی هم نمیکنه.
اینجا من سورس ها و آموزش ها و کدها رو به زبان سی شارپ و وی بی میزارم اگه دوستان خواستن میتونن درخواست کنن تا براشون تبدیل هم بشه.
ماشالله هزار ماشالله دوستان برنامه نویس دارن تعدادشون زیاد میشه و حالا هم کم کم دیگه وقتشه که همگی باهم پیشرفت کنیم.
من از دوستان برنامه نویس از مبتدی که هیچی بلد نیست تا پیشرفته و فوق پیشرفته و ... درخواست میکنم که فکر نکنن وقتشون گرفته میشه لطفاً حتی یک پست مفید هم که شده بدین ما همه دوست داریم از همدیگه استفاده کنیم و این رمز موفقیت ماست.
پس میریم جلو.....>>>>>
این قسمت هم هر چند ماه یا هفته ویرایش میشه برای همین یه پست جدا برای این قسمت میزنم:
نرم افزار های کار شده:
1.شکستن پسورد Winrar از پست 0 تا پست 0.
کار جاری:
شکستن پسورد Winrar:
دوستان دلیل اینکه به این فکر افتادم فقط مشکلات دیگر دوستان نبود.چون این کار، کار خیلی سختیه من اینو انتخاب کردم چون میخوام اولین کارمون یه خورده سخت باشه تا کارای بعدی رو راحت تر انجام بدیم.
خوب من یه سری توضیحاتی که خودم طی چند وقتی که کار کردم بدم(دوستان خواهشاً اگه اشتباه گفتم لطفاً ببخشین و بگین در غیر این صورت نمیتونیم درست کار کنیم):
اول اینو بگم که فایل هایی که توسط rar فشرده میشن و اگه پسورد داشته باشن خود نرم افزار rar یه عدد رندوم میگیره و اونو فشرده میکنه که این عدد بین 0 تا 65535 هست که معادل دو بایت یعنی 255* 255 (به وقت میگم که کدوم بایت ها هستن).
حالا مثلاً من اگه پسورد فایلمو 123 بدم.
Winrar یک عدد رندوم میگره مثلاً 445 و فایل رو فشرده میکنه.واگه دوباره اونو فشرده کنم.یه عدد رندوم دیگه میگیره مثلاً 25558 که فایل فشرده شده اولی با دومی فرق میکنه.برای همین شکستن پسورد به همین سادگی نیست... .
حالا ما چطوری میتونیم پسورد رو خیلی آسان و سریع بشکنیم؟
قطعاً خیلی از شما ها نرم افزار های گوناگونی دیدن که پسورد رار رو پیدا کنن؟ ولی اینو هم باید عرض کنم که پیدا کردن پسورد ممکنه ماها طول بکشه و بستگی به سرعت سیستم و تعداد کاراکتر هایی که پسورد داره انجام میشه.
کار ما پیدا کردن پسورد نیست.
کار ما شکستن پسورده.
یعنی ما باید به برنامه وینرار اون کاری که میخوایم بکنیم رو بدیم.مثلاً همه ما میدونیم که این برنامه برای باز کردن فایل های پسورد دار پسورد وارد شده رو با پسورد اصلی مقایسه میکنه... حالا به هر طریقه کد نویسی یا به هر روشی که هست.
پس در اینجا دوحالت وجود داره:
یا پسورد درسته یا غلط. پس شرط داره.
ما چند تا کار میتونیم بکنیم:
اول اینکه عملگر مقایسه ای شرط رو تغییر بدیم که اگه پسورد اشتباه بود فایل رو باز کنه که در این صورت اگه پسورد درست باشه فایل اجرا نمیشه.
دوم اینکه شرط رو در هر حالت برابر درست قرار بدیم یعنی پسورد هر چی که باشه فایل باز شه.
سوم اینکه اصلاً شرط رو حذف کنیم.
معرفی برنامه ها:
نرم افزار قدرت مند DataRescue IDA Pro Advanced 5.2 بدست آوردن سورس برنامه ها به زبان اسمبلی این نرم افزار قابلیت کشیدن فلوچار برای نرم افزار ها را هم دارد:
دانلود لینک مستقیم با حجم 77 مگابایت:
کد:
http://graphic-online.co.cc/File/DataRescue_IDA_Pro_Advanced_5.2.rar
نرم افزاری برای بدست آوردن سورس برنامه های تحت دات نت.NET Reflector 5.0:
دانلود با حجم 1 مگابایت:
کد:
http://hamishebahar.parsaspace.com/Application/reflector.rar
و نرم افزاری قدرتمند و حرفه ای برای ضد ریسورس شدن Xenocode Postbuild 2008 for .NET :
دانلود با حجم 19 مگابایت:
کد:
http://rapidshare.com/files/227476675/Xenocode.Postbuild.2009.for.NET.v7.0.162.BETA.WinAll.Cracked-CRD.rar
پسورد: tactools.org
من بازم از اساتید و دوستان برنامه نویس محترم همراهی و کمک میخوام.
قربان همه شما علی:11:.
موفق و سربلند باشید.
شرحی بر الگوریتم های مرسوم رمزنگاری دوطرفه با کلید
سلام
من با الگوریتم و روش رمزنگاری winrar آشنا نیستم ولی یک چیزهای خیلی مختصری از روش های مرسوم رمزنگاری میدانم ...
شما قصد دارید با دستکاری exe و یا dll های برنامه استاندارد winrar کاری کنید که این برنامه بدون نیاز به رمزعبور همه فایلهای rar را باز کند.
اما به نظر من الگوریتم های رمزنگاری موجود این اجازه را نمیدهد.
==============
- تئوری اول:
یک راه رمزگذاشتن روی فایلها این است که مقدار string رمزورودی را با یک الگوریتم خاص هش یکطرف کد کنیم و در فایل ذخیره کنیم و سپس رمز وارد شده از طرف کاربر را هش کنیم و دو کد هش را مقایسه کنیم و در صورت برابری دو کد دیتاها را نمایش دهیم.
در این راه کار، یا دیتاهای اصلی کد نمیشود و یا اگر بشود ربطی به رمزورودی ندارد.
در این روش امکانش بسیار زیاد است که بتوان با دستکاری سورس برنامه اصلی کاری کرد که برنامه بدون در نظر گرفتن رمزورودی دیتاها را نمایش دهد.
این همان چیزی که شما شما فکر میکنید و درست هم است.
-تئوری دوم:
ولی الآن رمزنگاری و کد کردهای خیلی پیشرفته و با الگوریتم های خاصی استفاده میشود که این الگوریتم ها از خود رمزعبور به عنوالن کلید کد کننده دیتا ستفاده میکنند و به بیان دیگر کد کردن دیتا را وابسته به رمز ورودی میکند ...
==============
اجازه دهید یک مثال بسیار ساده و ابتدایی بزنم (ای آقا گفته باشم، نخندیدا ! :31:)
ما میخواهیم یک عدد 4 بایتی (مثلاً حاوی یک شماره تلفن!) با یک رمز 4 بایتی کد و رمزنگاری کنیم ...
(فرض میکنیم عدد دیتا (مثلاً همان شماره تلفن 77889900 است و رمزوردی 114114114 )
در ساده ترین و بچه گانه ترین حالت تئوری اول امکان دارد همچین دیتاهایی در یک فایل ذخیره شود...
کد:
Byte0~3 = 114114114
Byte4~7 = 77889900
برنامه با چک کردن 4 بایت اول و صحت انها، چهار بایت دوم را نمایش میدهد.
طبیعی است که میتوان کاری کرد و شرط چک کردن برنامه را غیر فعال کرد تا برنامه همواره و بدون توجه به 4 بایت اول، اقدام به نمایش 4 بایت دوم کند.
این مثال خیلی بچه گانه و ساده است ولی بحث سر این است که وقتی رمزورودی به دیتا مرتبط نباشد، همانطور که شما هم فرمودید این کار ممکن است.
==============
در ساده ترین و بچه گانه ترین حالت تئوری دوم امکان دارد همچین دیتاهایی در یک فایل ذخیره شود...
کد:
Byte0~3 = 40484654 = (114114114 XOR 77889900) = دیتای کد شده با رمزوردی
در این حالت فقط دیتا ذخیره شده و این دیتا با رمزورودی XOR شده (شما فرض کنید ساده ترین روش رمزنگایر دو طرفه با کلید!!) و رمزورودی دیتای اصلی را کد کرده ...
در این شرایط فقط و فقط کد صحیح رمزورودی است که میتواند دیتای اصلی و حقیقی اولیه را باز گرداند و هیچ کس در تاریخ بشریت و ریاضیات و برنامه نویسی نمیتواند بدون رمزورودی صحیح دیتای حقیقی اولیه را از حالت کد شده در اورد و این روش شاه کلیدی هم ندارد ...
کد:
40484654 XOR 114 = 40484700 = غلط
40484654 XOR 114114 = 40370924 = غلط
40484654 XOR 114114113 = 77889903 = غلط
40484654 XOR 114114112 = 77889902 = غلط
40484654 XOR 123456 = 40394094 = غلط
40484654 XOR 114114114 = 77889900 = صحیح = فقط با رمزورودی صحیح دیتای اصلی از کد در می آید
همانطور که در مثال فوق میبینید فقط و فقط رمز صحیح 114114114 است که اگر مثل یک کلید در قفل الگوریتم (هر چند بچه گانه ما) بچرخد در باز شده و دیتای اولیه صحیح نمایان میشود.
در این الگوریتم رمزورودی از یک مفهوم password ساده گذشته و به یک key تبدیل شده که تا وقتی کلید درست روی دیتای رمزشده و کد شده نشیند، رمزگشایی انجام نخواهد شد.
این مثال هم خیلی بچه گانه و ساده است ولی بحث سر این است که وقتی رمزورودی پا به عرصه کلید رمزگذاری و کدینگ بگذارد و به دیتا مرتبط شود، دیگر نمیتوان با دستکاری برنامه نرم افزاری کاری کرد که رمزنگاری را نادیده بگیرید و اصلاً در حیطه توانایی برنامه نیست که رمز را نادیده بگیرد.
الآن ما الگوریتم های بسیار بسیار پیچیده ای داریم که رمزنگاری و رمزگشایی دو طرفه را با کلید انجام میدهد و چون هدرهای خاصی برای مدیریت داخل به دیتای رمزشده اضافه میکنند اگر یک بایت کلید ورودی یک عدد پایین و پالا باشد در هسته مرکزی به خطا خواهند خورد که معیاری برای تشخیص رمزورودی اشتباه است.
(تنها راه همان حلقه ای خواهد بود که با سرعت بسیار رمزها و ترکیبات مختلف حروفی را به الگوریتم بخوراند و به امید ان باشد یکی از انها قفل را بچرخاند و در باز شود!)
==============
همانطور که گفتم من از سازوکار winrar اطلاعی ندارم ولی بسیار بسیار بعید است که برنامه نویسان و طراحان الگوریتم های قوی این شرکت این مطالب را ندانند و بیاییند از تئوری اول برای رمزگذاشتن روی فایلهای rar استفاده کنند.
نتیجتاً اگر شما موفق شوید و دستور مقایسه رمزورودی winrar را هم تغییر دهید تا دیگر پیامی مبنی بر اشتباه بودن رمز نشان دهد و کار خودش را از پس از شرط ادامه دهد، بدون تردید برنامه با خطای زمان اجرا یا همان کرش یا همان runtime error متوقف خواهد شد و شاید در نهایت هم مجبور میشوید پردازه را end task کنید.
نمیخواهم از آنهایی باشم که همیشه ساز مخالف میزنند و مایوس هستند و مدام میگویند نمیشود و نمیتوانیم و ...
ولی در هر حال به نظر من این تحقیق و کار ارزش وقتی را که رویش گذاشته میشود ندارد، چون با توضیحات فوق احتمالی برای موفقیت متصور نیستم.
==============
البته در نهایت اینها فقط نظریات من بود که به عنوان نوعی همفکری و مشاوره برای شما دوست عزیز اینجا درجش کردم. :20::10:
متاسفم که کمک بیشتری نمیتوانم بکنم، شرمنده. :11::11::11:
انشا ا... هموراه در همه مراحل زندگی و حتی تحقیق و کار جاری این تاپیک موفق و پیروز و سربلند باشید.
:10: