ReverseEngineering – Telegram
ReverseEngineering
1.24K subscribers
40 photos
10 videos
55 files
666 links
Download Telegram
مراحل مورد نیاز برای استفاده از فراخوان های سیستم یکیه

* شماره فراخوان سیستمی رو داخل رجیستری EAX قرار بدید

آرگومان های مربوط به فراخوان سیستمی در رجیسترهای EBX ، ECX و غیره رو ذخیره کنید

* با وقفه مربوطه رو فراخوانی کنید (80h)

* نتیجه معمولاً در ثبات EAX برمی گرده
👍10
ایجاد و باز کردن فایل

فراخوان سیستم ()sys_creat شماره 8 رو در ثبات EAX قرار بدید

فایل نیم (filename) رو در رجیستری EBX قرار بدید

مجوزهای فایل رو داخل رجیستری ECX قرار بدید

فراخوان سیستم توصیف گر فایل (file denoscriptor) ایجاد شده رو در ثبات EAX برمیگردونه در صورت بروز خطا کد خطا در ثبات EAX هست
🔥8👍1
درود دوستان
لطفا تا جایی که میتونید کانال رو share کنید ممنون
👍8
باز کردن فایل موجود

برای باز کردن فایل موجود کارهای زیر رو باید انجام بدیم

فراخوان سیستم ()sys_open شماره 5 را در ثبات EAX قرار بدید

فایل نیم filename را در ریجستری EBX قرار بدید

حالت دسترسی فایل را در رجیستری ECX قرار بدید

مجوزهای (permissions) فایل رو در رجیستری EDX قرار بدید
فراخوان سیستم توصیف گر فایل ایجاد شده رو داخل ثبات EAX برمی گردونه در صورت بروز خطا کد خطا در ثبات EAX است

در بین حالت های دستیابی به فایل متداول ترین اونا اینا هستند:

read-write (2) و read-only (0) و write-only (1)


👍7
خوندن از یک فایل

برای خوندن از یک فایل باید کارهای زیر رو انجام بدیم

فراخوان سیستم ()sys_read شماره 3 رو داخل ثبات EAX قرار بدید

توصیف گر فایل رو داخل رجیستری EBX قرار بدید

اشاره گر به بافر ورودی رو داخل ثبات ECX قرار بدید

اندازه بافر رو قرار بدید یعنی شماره بایت ها برای خوندن رو داخل ثبات EDX قرار بدید system call تعداد بایت های خونده شده رو داخل ثبات EAX رو برمیگردونه در صورت بروز خطا کد خطا در EAX ثبت میشه


👍8
فلگ ها در اسمبلی (assembly) به نمایه هایی از وضعیت ها شرایط یا حالت های مختلف در برنامه هستن این فلگ ها به طور معمول به عنوان پارامتر هایی در دستورالعمل های اسمبلی استفاده میشن و عملکرد برنامه رو تعیین می کنن به طور کلی فلگ ها به دو دسته زیر تقسیم میشن:

1. فلگ های ورودی (Input Flags): این فلگ ها مقادیری از ورودی رو تعیین می کنن که برنامه باید با اون ها کار کنه مثلاً یک فلگ ورودی رو ممکنه برای تعیین اینکه یک عمل از نوع جمع یا تفریق باشد استفاده کنیم.

2. فلگ های خروجی (Output Flags): این فلگ ها مقادیری ان که برنامه برای خروجی تولید می کنه این فلگ ها ممکنه برای نشون دادن خطاها وضعیت های خاص یا نتایج برنامه استفاده شن استفاده از فلگ ها به برنامه نویس این امکان رو میده که برنامه رو برای تخصیص و ردیابی بهتر وضعیت و اطلاعات بهبود بده به عنوان مثال از فلگ ها برای اجرای شرایط مختلف در یک حلقه تکرار استفاده میشه و این امکان رو فراهم میکنه که بخش های مختلفی از یک برنامه معین شده و اجرایی هست
👍8
تبدیل کد C به فایل اجرایی executable file
👍8
نوشتن به یک فایل

فراخوان سیستم sys_write () شماره 4 رو داخل رجیستر EAX قرار بدید

توصیف گر فایل رو داخل رجیستری EBX قرار بدید

اشاره گر به بافر خروجی رو داخل رجیستر ECX قرار بدید

اندازه بافر یعنی شماره بایت های نوشتن رو داخل رجیستر EDX قرار بدید

فراخوان سیستم تعداد واقعی بایت های نوشته شده در ثبات EAX رو برمی گردونه در صورت بروز خطا کد خطا در ثبت EAX هست
👍9
بستن فایل

فراخوان سیستم ()sys_close شماره 6 رو داخل ثبات EAX قرار بدید

توصیف گر فایل رو داخل رجیستری EBX قرار بدید

فراخوان سیستم در صورت بروز خطا کد خطا در ثبات EAX رو برمی گردونه
👍9
به روز رسانی یک فایل

فراخوان سیستم sys_lseek () شماره 19 رو داخل ثبات EAX قرار بدید

توصیف گر فایل رو داخل رجیستری EBX قرار بدید

مقدار افست رو داخل رجیستری ECX قرار بدید

موقعیت منبع برای offset رو داخل رجیستری EDX قرار بدید

شروع فایل – مقدار 0
موقعیت فعلی – مقدار 1
پایان فایل – مقدار 2


فراخوان سیستم در صورت بروز خطا کد خطا در ثبات EAX رو برمی گردونه
👍9
مدیریت حافظه در زبان اسمبلی

فراخوان سیستم ()sys_brk توسط هسته ارائه میشه تا بتونه حافظه پویا رو اختصاص بده در این فراخوان حافظه درست پشت تصویر برنامه حافظه رو اختصاص میده این تابع سیستمی به شما امکان میده بالاترین آدرس موجود رو داخل بخش داده را تنظیم کنید

این فراخوان سیستمی یک پارامتر می گیره که بالاترین آدرس حافظه مورد نیاز برای تنظیم هست این مقدار در ثبات EBX ذخیره میشه

sys_brk در صورت بروز هر گونه خطا 1- رو برمیگردونه یا یک عدد منفی کد نشون دهنده خطاست رو برمی گردونه
👍4
برخی اصطلاحات در رمزنگاری
Encryption :
در علم cryptography به پنهان سازی اطلاعات گفته میشه
Decryption :
معکوس encryption هست و درcrypto به آشکار سازی اطلاعات پنهان شده گفته میشه

Plain text :
به متنی گفته میشه که معنای اون بدون تغییر خاصی قابل فهم هستش

Cipher :
به روشی برای تبدیل plain text به متنی که معناش پنهان باشه cipher گفته میشه

Cryptanalysis :
به هنر شکستن متن های cipher شده گفته میشه

Intruder :
در کلمه به معنای مزاحمه ولی در اینجا به معنای کسیه که یک کپی از cipher text داره و تمایل به شکستن رمز داره منظور از شکستن رمز یعنی decrypt کردن اون متن که خودش دو نوعه active-intruder که می‌تونه اطلاعات رو روی خط عوض کند و تغییر بده و passive intruder که فقط می‌تونه اطلاعات روی خط رو داشته باشه و قابلیت تغییر اونها رو نداره

👍5
تکینک های مختلف در مهندسی معکوس نرم افزار
👍4
اشکال زداها یا Debuggers :

این برنامه های نرم افزاری می تونن کد برنامه های دیگه رو خط به خط اجرا کنن و خطاهایی که در نرم افزار وجود داره پیدا و بعد اون ها را ردیابی می کنن کارکرد این برنامه ها جوریه که اول یک وقفه رو داخل برنامه ایجاد میکنن و بعد تمامی خطوط و خطاها رو ردیابی میکنن زمانیکه برنامه اشکال زدا به این نقطه برسه متوقف شده و بعد کاربر می تونه مقدار و ارزش تمامی متغیر ها رو در هنگام اجرا ببیه
اشکال زدا ها به دو دسته مد هسته یا Kernel و مد کاربر یا User تقسیم میشن شما می تونید در هسته بخش سیستم عامل برنامه های راه انداز سیستم مهندسی رو معکوس کنید
👍9
استفاده از دی اسمبل یا Disassembler :

یکی از رایج ترین روش ها برای مهندسی معکوس نرم افزار، استفاده از برنامه های Disassembler است دی اسمبل ها برای اولین بار توسط کرکر ها یا رخنه های نرم افزاری نوشته شدن هدف اصلی کرکر ها تبدیل ساختار کد ماشین به کد اسمبلی (زبان سطح بالاتر) و ترجمه کد ها بود که در این شرایط شما میلیون ها خط کد اسمبلی رو میبینید که در بیشتر مواقع برای شما قابل فهم نیستن
این مراحل کاملا عکس عمل اسمبلر هستن و به عبارتی نوعی مهندسی معکوس محسوب میشه امروزه دی اسمبلرهای متفاوتی به نام های freeware یا shareware وجود داره اما یکی از بهترین و بزرگ ترین دی اسمبلرها حال حاضر IDA Pro هست که هیچ دی اسمبلری رو نمی تونیم با اون از لحاظ امکانات و ویژگی مقایسه کرد این برنامه بسیار ماهرانه طراحی شده جوری که با استفاده از API ها و پایگاه داده برنامه می تونه امکان تحلیل سفارشی رو برای کاربر مورد استفاده قرار بده
👍7
Decompiler :

این نوع برنامه ها عملی معکوس با کامپلیرها رو دارن و عملیات رو برعکس اون ها انجام میدن Decompiler کد اسمبلی میانی یا همان کد ماشین رو به کد های سطح بالا تبدیل می کنه هدف این برنامه ها ایجاد فایل هایی است که توسط کامپیوتر قابل خوندن بوده و در مراحل بعدی این فایل ها به زبان قابل فهمی برای انسان تبدیل میشن
👍9
دوستان متاسفانه اگه بخاد اینجوری پیش بره فعالیت کانال رو متوقف میکنم چون خیلی تعداد ممبرا کمه و اینجوری انگیزه ای نیست برای ادامه دادن...
💔8👍3
حالا فعلا ادامه میدیم ببینیم چی میشه
🔥7👍2
مشکلی نیست دوستان با همین ممبرا پرقدرت ادامه میدیم
🍾9👍5
برخی اصطلاحات دیگه در رمز نگاری

متن ساده : اطلاعات اوليه كه هنوز رمز نگاری نشدن

متن رمزی : اطلاعاتی كه رمز نگاری شدن

الگوريتم رمز نگاری : الگوريتمی كه متن ساده رو به متن رمزی تبديل میکنه

كليد رمز : داده ايه كه الگوريتم رمز نگاری متن ساده رو به متن رمزی تبديل ميکنه و برعكس

رمز نگاری : فرايند تبديل متن ساده به متن رمزی

رمز گشايی : فرايند تبديل متن رمزی به متن ساده
👍5
رمزنگاری سخت افزاری یا Hardware Cryptography

الگوریتم‌های رمزنگاری رو میتونیم هم به صورت سخت افزاری (به منظور سرعت بالاتر) و هم به صورت نرم افزاری (برای انعطاف پذیری بیشتر) پیاده سازی کرد روشهای جانشینی و جایگشتی می‌تونن با یک مدار ساده الکترونیکی پیاده سازی شن p-box ابزاری است که برای جایگشت بیتهای یک ورودی هشت بیتی کاربرد داره با سیم بندی و برنامه ریزی درونی این p-box قادره که هر گونه جایگشت بیتی رو عملاً با سرعتی نزدیک به سرعت نور انجام بده چرا که هیچ گونه محاسبه‌ای لازم نیست وفقط تأخیر انتشار سیگنال وجود داره این طراحی از اصل کرکهف تبعیت می‌کنه یعنی : حمله کننده از روش عمومی جایگشت بیت‌ها مطلّع هست اونچه که او از تون خبر نداره اونه که کدام بیت به کدام بیت نوشته میشه کلید رمز همینه
👍4🔥3