Obfuscation چیست
یک فرایند یا روش برنامه نویسیه که با هدف های محافظت از کد منبع source code یک برنامه کاهش اندازه فایل ها و محافظت از اطلاعات حساس استفاده میشه این روش یعنی تغییر ساختار و قالب کد منبع است جوری که افراد دیگه وقتی اونو میخونن به سختی یا غیر ممکن باشه تا نتونن کد رو بخونن یا تحلیلش کنن این کار با استفاده از تکنیک های مثل فشرده سازی، رمزنگاری،تغییر نام متغیرها و تابع ها و اضافه کردن کد های مجازی بدون معنی انجام بشه
#obfuscation
#مبهم_سازی
یک فرایند یا روش برنامه نویسیه که با هدف های محافظت از کد منبع source code یک برنامه کاهش اندازه فایل ها و محافظت از اطلاعات حساس استفاده میشه این روش یعنی تغییر ساختار و قالب کد منبع است جوری که افراد دیگه وقتی اونو میخونن به سختی یا غیر ممکن باشه تا نتونن کد رو بخونن یا تحلیلش کنن این کار با استفاده از تکنیک های مثل فشرده سازی، رمزنگاری،تغییر نام متغیرها و تابع ها و اضافه کردن کد های مجازی بدون معنی انجام بشه
#obfuscation
#مبهم_سازی
🔥5
دستورالعمل AND
برای پشتیبانی از عبارات منطقی با انجام عملکرد بیتی و AND
اســتفاده میشه اگر بیت های که با هم مچ یعنی بیت هایی که با هم مطابق دارن از هر دو عملوند 1 باشنعملکرد AND
بیتی 1 رو برمی گردونه در غیر این صورت مقدار 0 برمی گرده مثال:
Operand1: 0101
Operand2: 0011
After AND -> Operand1: 0001
نکته:از روش AND میتونیم برای صفر کردن یک یا چند بیت اســتفاده کنیم
#and
#command
#operand
برای پشتیبانی از عبارات منطقی با انجام عملکرد بیتی و AND
اســتفاده میشه اگر بیت های که با هم مچ یعنی بیت هایی که با هم مطابق دارن از هر دو عملوند 1 باشنعملکرد AND
بیتی 1 رو برمی گردونه در غیر این صورت مقدار 0 برمی گرده مثال:
Operand1: 0101
Operand2: 0011
After AND -> Operand1: 0001
نکته:از روش AND میتونیم برای صفر کردن یک یا چند بیت اســتفاده کنیم
#and
#command
#operand
👍2
دستورالعمل OR
برای پشتیبانی از عبارت های منطقی، با انجام عمل بیتی OR استفاده میشه اگر بیت های مچینگ از هر یک یا هر دو عملوند یکی
باشه عملگر OR بیتی 1 رو برمیگردونه اگر هر دو بیت صفر باشن 0 برمی گرده مثال:
نکته:از OR میتونیم برای تنظیم یک یا چند بیت استفاده کنیم
#or
#command
#operand
برای پشتیبانی از عبارت های منطقی، با انجام عمل بیتی OR استفاده میشه اگر بیت های مچینگ از هر یک یا هر دو عملوند یکی
باشه عملگر OR بیتی 1 رو برمیگردونه اگر هر دو بیت صفر باشن 0 برمی گرده مثال:
Operand1: 0101
Operand2: 0011
After OR -> Operand1: 0111
#or
#command
#operand
👍5
دستورالعمل XOR
عملیات XOR بیتی را اجرا میکند عملیات XOR مقدار بیت حاصل رو به یک تنظیم میکنه و فقط اگر بیت های مربوط به عملوند Operand متفاوت باشن اگر بیت های مربوط به عملوند ها یکسان باشن هر دو صفر میشن یا هر دو یک بیت حاصل 0 میشه مثال:
Operand1: 0101
Operand2: 0011
After XOR -> Operand1 0110
نکته: XOR کردن یک عملوند به خودی خود عملوند را به 0 تغییر میده این برای پاک
کردن یک رجیستر استفاده میشه
XOR EAX,EAX
#xor
#command
#operand
عملیات XOR بیتی را اجرا میکند عملیات XOR مقدار بیت حاصل رو به یک تنظیم میکنه و فقط اگر بیت های مربوط به عملوند Operand متفاوت باشن اگر بیت های مربوط به عملوند ها یکسان باشن هر دو صفر میشن یا هر دو یک بیت حاصل 0 میشه مثال:
Operand1: 0101
Operand2: 0011
After XOR -> Operand1 0110
نکته: XOR کردن یک عملوند به خودی خود عملوند را به 0 تغییر میده این برای پاک
کردن یک رجیستر استفاده میشه
XOR EAX,EAX
#xor
#command
#operand
👍5
ساختار شرطی در زبان اسمبلی
اجرای شرط ها به زبان اسمبلی توسط چندین دستورالعمل حلقه و branching
پرش انجام میشه این دستورالعمل ها میتونن جریان کنترل رو داخل یک برنامه
تغییر بدن اجرای شرط ها در دو سناریو مشاهده میشن مثال:
#اسمبلی
#jump_conditional
#jump_unconditional
#loop
#حلقه
اجرای شرط ها به زبان اسمبلی توسط چندین دستورالعمل حلقه و branching
پرش انجام میشه این دستورالعمل ها میتونن جریان کنترل رو داخل یک برنامه
تغییر بدن اجرای شرط ها در دو سناریو مشاهده میشن مثال:
روش غير شرطی Jump unconditional
توسط دســتورالعمل JMP انجام میشه اجرای شرط ها اغلب شامل انتقال
كنترل به آدرس دستورالعملیه كه از دستورالعمل اجرای الان پیروی
نمی کنه انتقال کنترل ممکنه رو به جلو باشه برای اجرای مجموعه
جدیدی از دستورالعمل یا قبلی اجرای دوباره همون مراحل
پرش شرطی jump Conditional#assembly
بســته به شــرایط توســط مجموعــه ای از دســتورالعمل هــای پرش j condition انجام میشه دستورالعمل های شرطی کنترل رو با
شکستن جریان پی در پی انتقال میدن و اونا رو با تغییر مقدار افست در IP انجام میدن
#اسمبلی
#jump_conditional
#jump_unconditional
#loop
#حلقه
👍7
دستورالعمل CMP
دو عملوند رو مقایســه میکنه معمولا در اجرای شرطی مورد اســتفاده قرار میگیره این دستورالعمل اساسا برای مقایسه این که آیا عملوند برابره یا نه یک عملوند رو از عملوند دیگه کم میکنه که باعث اختلال در عملوند های منبع یا مقصد نمیشه از اون به همراه دستورالعمل پرش شرطی برای تصمیم گیری استفاده میشه مثال CMP:
خب حالا CMP چکار میکنه دو فیلد داده عددی رو مقایسه میکنه عملوند مقصد میتونه در ثبات یا در حافظه باشه عملوند منبع میتونه یک داده ثابت فوری ثبات یا حافظه باشه بیش تر برای مقایسه این که یک مقدار شمارنده به تعداد دفعاتی که یک حلقه برای اجرا نیاز داره رسیده استفاده میشه
#cmp
#command
#operand
دو عملوند رو مقایســه میکنه معمولا در اجرای شرطی مورد اســتفاده قرار میگیره این دستورالعمل اساسا برای مقایسه این که آیا عملوند برابره یا نه یک عملوند رو از عملوند دیگه کم میکنه که باعث اختلال در عملوند های منبع یا مقصد نمیشه از اون به همراه دستورالعمل پرش شرطی برای تصمیم گیری استفاده میشه مثال CMP:
CMP operand1,operand2Operand1 = 10
Operand2 = 20
CMP 10,5خب حالا CMP چکار میکنه دو فیلد داده عددی رو مقایسه میکنه عملوند مقصد میتونه در ثبات یا در حافظه باشه عملوند منبع میتونه یک داده ثابت فوری ثبات یا حافظه باشه بیش تر برای مقایسه این که یک مقدار شمارنده به تعداد دفعاتی که یک حلقه برای اجرا نیاز داره رسیده استفاده میشه
#cmp
#command
#operand
👍15🔥1
دوستان ری اکشن بزنید که قوی تر بریم جلو و اگه میتونید لطفا کانال رو Share کنید
👍15
پرش غير شرطی Jump Unconditional
همان طور که قبلا گفتیم این کار با دستور JMP انجام میشه اجرای شرط ها
اغلب شــامل انتقال كنترل به آدرس دستورالعملی اســت كه از دستورالعمل اجرای
كنونی پیروی نمی کنه انتقال کنترل ممکنه رو به جلو باشــه برای اجرای مجموعه جدیدی از دستورالعمل یا قبلی اجرایی دوباره همان مراحل دســتورالعمل JMP اسم لیبلی رو در اختیار شما قرار میده که سریعا جریان کنترل
انتقال داده بشه سینتکس دستورالعمل JMP به شکل زیر است:
JMP label
#jmp
#unconditional
#پرش
#غیرشرطی
همان طور که قبلا گفتیم این کار با دستور JMP انجام میشه اجرای شرط ها
اغلب شــامل انتقال كنترل به آدرس دستورالعملی اســت كه از دستورالعمل اجرای
كنونی پیروی نمی کنه انتقال کنترل ممکنه رو به جلو باشــه برای اجرای مجموعه جدیدی از دستورالعمل یا قبلی اجرایی دوباره همان مراحل دســتورالعمل JMP اسم لیبلی رو در اختیار شما قرار میده که سریعا جریان کنترل
انتقال داده بشه سینتکس دستورالعمل JMP به شکل زیر است:
JMP label
#jmp
#unconditional
#پرش
#غیرشرطی
👍5
پرش شرطی Jump Conditional
اگر برخی از شــروط مشــخص در پرش شرطی براورده شن جریان کنترل به
دستورالعمل هدف منتقل میشه بسته به شرایط و داده ها دستورالعمل های پرش شــرطی متعددی وجود داره برخی از اونا رو در عکس زیر میتونید ببینید
#شرطی
#conditional
#jmp
اگر برخی از شــروط مشــخص در پرش شرطی براورده شن جریان کنترل به
دستورالعمل هدف منتقل میشه بسته به شرایط و داده ها دستورالعمل های پرش شــرطی متعددی وجود داره برخی از اونا رو در عکس زیر میتونید ببینید
#شرطی
#conditional
#jmp
👍4
در عکس زیر دســتورالعمل های پرش شرطی مورد اســتفاده در داده های بدون علامت
استفاده شدن برای عملیات منطقی کاربرد دارن
استفاده شدن برای عملیات منطقی کاربرد دارن
❤🔥6👍2
اعداد در زبان اسمبلی
داده های عددی به طور کلی در سیستم دودویی نمایش داده میشن دستورالعمل
های حسابی روی داده های باینری عمل میکنن وقتی اعداد روی صفحه نمایش
داده میشن یا از صفحه کلید وارد میشن به شکل ASCII هستن
داده های عددی به طور کلی در سیستم دودویی نمایش داده میشن دستورالعمل
های حسابی روی داده های باینری عمل میکنن وقتی اعداد روی صفحه نمایش
داده میشن یا از صفحه کلید وارد میشن به شکل ASCII هستن
👍3
اعداد دودویی را میتوان به چند شکل نشان داد:
فرم ASCII
فرم دهی (BCD) Binary Coded Decimal
نمایش ASCII
فرم ASCII
فرم دهی (BCD) Binary Coded Decimal
نمایش ASCII
👍4