انواع مکانیزمهای لایسنس
🔹 نرمافزارها از روشهای مختلفی برای کنترل دسترسی و اعتبارسنجی لایسنس استفاده میکنن رایجترین روشها اینان:
✅ کلید سریال (Serial Key)
نرمافزار از کاربر یک کلید لایسنس درخواست میکنه و اون رو اعتبارسنجی میکنه
معمولاً با الگوریتمهایی مثل RSA، SHA، MD5 یا XOR بررسی میشه
✅ فعالسازی آنلاین (Online Activation)
نرمافزار برای تایید لایسنس به سرور شرکت سازنده متصل میشه
این روش معمولاً از HTTP API، WebSockets یا RPC استفاده میکنه
✅ قفل سختافزاری (Hardware Locking)
لایسنس به شماره سریال CPU، هارد دیسک یا MAC Address وابسته است
تغییر سختافزار باعث غیرفعال شدن لایسنس میشه
✅ دونگل USB (USB Dongle)
یک قطعه سختافزاری برای فعالسازی نرمافزار استفاده میشه
معمولاً از دستورات خاصی در درایور Kernel Mode استفاده میکنه
✅ محافظت از کد (Obfuscation & Packing)
چرا برخی نرم افزار ها از پکر ها یا اوبفاسکیشن استفاده میکنن؟
برخی نرمافزارها از پکرها و اوبفاسکیشن استفاده میکنن تا کرک کردن سختتر بشه
#obfuscation
#bypass
#license
🔹 نرمافزارها از روشهای مختلفی برای کنترل دسترسی و اعتبارسنجی لایسنس استفاده میکنن رایجترین روشها اینان:
✅ کلید سریال (Serial Key)
نرمافزار از کاربر یک کلید لایسنس درخواست میکنه و اون رو اعتبارسنجی میکنه
معمولاً با الگوریتمهایی مثل RSA، SHA، MD5 یا XOR بررسی میشه
✅ فعالسازی آنلاین (Online Activation)
نرمافزار برای تایید لایسنس به سرور شرکت سازنده متصل میشه
این روش معمولاً از HTTP API، WebSockets یا RPC استفاده میکنه
✅ قفل سختافزاری (Hardware Locking)
لایسنس به شماره سریال CPU، هارد دیسک یا MAC Address وابسته است
تغییر سختافزار باعث غیرفعال شدن لایسنس میشه
✅ دونگل USB (USB Dongle)
یک قطعه سختافزاری برای فعالسازی نرمافزار استفاده میشه
معمولاً از دستورات خاصی در درایور Kernel Mode استفاده میکنه
✅ محافظت از کد (Obfuscation & Packing)
چرا برخی نرم افزار ها از پکر ها یا اوبفاسکیشن استفاده میکنن؟
برخی نرمافزارها از پکرها و اوبفاسکیشن استفاده میکنن تا کرک کردن سختتر بشه
#obfuscation
#bypass
#license
🔥13❤1👏1
مراحل کرک کردن یک نرمافزار
📌 برای کرک کردن باید مسیر اجرای لایسنس رو پیدا کنیم و اون رو بایپس کنیم
🔍 مرحله 1: بررسی اولیه نرمافزار
✅ بررسی کن که نرمافزار کلید سریال قبول میکنه یا نیاز به اتصال اینترنت داره؟
✅ فایلهای اجرایی (.EXE یا .DLL) رو با PEiD یا Detect It Easy (DIE) اسکن کن تا ببینی آیا پک شده (Packed) یا نه.
🛠 مرحله ۲: پیدا کردن توابع لایسنس در اسمبلی
✅ فایل اجرایی رو در IDA Pro یا x64dbg باز کن و دنبال توابع strcmp, strcmpi, RegQueryValueEx, IsDebuggerPresent بگرد
✅ روی strcmp یا memcmp بریکپوینت بذار و مقدار کلید درست رو پیدا کن
🚀 مرحله ۳: بایپس کردن چک لایسنس
✅ مقدار EAX رو تغییر بده تا نتیجه cmp برابر true بشه.
✅ با NOP کردن شرط JNZ یا JZ میتونی چک لایسنس رو حذف کنی
MOV EAX, 1 ; مقدار بررسی لایسنس رو به True تغییر بده
NOP ; حذف پرش غیرمجاز
#crack
#bypass
📌 برای کرک کردن باید مسیر اجرای لایسنس رو پیدا کنیم و اون رو بایپس کنیم
🔍 مرحله 1: بررسی اولیه نرمافزار
✅ بررسی کن که نرمافزار کلید سریال قبول میکنه یا نیاز به اتصال اینترنت داره؟
✅ فایلهای اجرایی (.EXE یا .DLL) رو با PEiD یا Detect It Easy (DIE) اسکن کن تا ببینی آیا پک شده (Packed) یا نه.
🛠 مرحله ۲: پیدا کردن توابع لایسنس در اسمبلی
✅ فایل اجرایی رو در IDA Pro یا x64dbg باز کن و دنبال توابع strcmp, strcmpi, RegQueryValueEx, IsDebuggerPresent بگرد
✅ روی strcmp یا memcmp بریکپوینت بذار و مقدار کلید درست رو پیدا کن
🚀 مرحله ۳: بایپس کردن چک لایسنس
✅ مقدار EAX رو تغییر بده تا نتیجه cmp برابر true بشه.
✅ با NOP کردن شرط JNZ یا JZ میتونی چک لایسنس رو حذف کنی
MOV EAX, 1 ; مقدار بررسی لایسنس رو به True تغییر بده
NOP ; حذف پرش غیرمجاز
#crack
#bypass
👍12❤1🔥1👏1
کرک کردن نرمافزارهای آنلاین
🔹 بعضی نرمافزارها برای فعالسازی به سرور متصل میشن برای کرک کردن این نرمافزارها باید ترافیک رو مانیتور کنیم و تغییر بدیم
📌 روشهای کرک کردن نرمافزارهای آنلاین:
✅ مانیتورینگ HTTP/S با Burp Suite یا Fiddler
ببین درخواست به چه API ارسال میشه و پاسخ سرور رو جعل کن
✅ ساخت سرور جعلی (Fake License Server)
میتونی با ابزارهایی مثل mitmproxy یک سرور فیک بسازی و نرمافزار رو گول بزنی
✅ پچ کردن درخواستهای لایسنس در دیباگر
درخواست HTTP رو با x64dbg یا IDA Pro پیدا کن و مقدار لایسنس رو تغییر بده
#crack
#reverse
🔹 بعضی نرمافزارها برای فعالسازی به سرور متصل میشن برای کرک کردن این نرمافزارها باید ترافیک رو مانیتور کنیم و تغییر بدیم
📌 روشهای کرک کردن نرمافزارهای آنلاین:
✅ مانیتورینگ HTTP/S با Burp Suite یا Fiddler
ببین درخواست به چه API ارسال میشه و پاسخ سرور رو جعل کن
✅ ساخت سرور جعلی (Fake License Server)
میتونی با ابزارهایی مثل mitmproxy یک سرور فیک بسازی و نرمافزار رو گول بزنی
✅ پچ کردن درخواستهای لایسنس در دیباگر
درخواست HTTP رو با x64dbg یا IDA Pro پیدا کن و مقدار لایسنس رو تغییر بده
#crack
#reverse
❤9👏3
شناخت سطح حمله (Attack Surface)
اولین قدم اینه که بفهمیم اپلیکیشن چه نقاط ورودی (entry point)هایی داره:
✅ ورودی کاربر (فرمها، فیلدها، فایلهای ورودی)
✅ ارتباط با شبکه (پورتها، سوکتها، APIها)
✅ Registeryو فایلهای سیستمی
✅ COM objects و DLLها
✅ Named Pipes و فایلهای موقت
#Attack
#Attack_Surface
#Application
اولین قدم اینه که بفهمیم اپلیکیشن چه نقاط ورودی (entry point)هایی داره:
✅ ورودی کاربر (فرمها، فیلدها، فایلهای ورودی)
✅ ارتباط با شبکه (پورتها، سوکتها، APIها)
✅ Registeryو فایلهای سیستمی
✅ COM objects و DLLها
✅ Named Pipes و فایلهای موقت
#Attack
#Attack_Surface
#Application
❤9
بررسی رفتار اپلیکیشن با ابزارهای دینامیک
ابزارهایی که در حین اجرای برنامه استفاده میشن تا ببینیم دقیقا چیکار میکنه:
🔹 Procmon – بررسی فعالیت رجیستری و فایل
🔹 Wireshark – تحلیل ترافیک شبکه
🔹 Process Hacker / Process Explorer – مانیتور کردن پروسسها
🔹 Dependency Walker – بررسی وابستگیهای DLL
🔹 PE-sieve / Scylla – بررسی تزریق کد یا آنپک
#Dynamic
#Application
ابزارهایی که در حین اجرای برنامه استفاده میشن تا ببینیم دقیقا چیکار میکنه:
🔹 Procmon – بررسی فعالیت رجیستری و فایل
🔹 Wireshark – تحلیل ترافیک شبکه
🔹 Process Hacker / Process Explorer – مانیتور کردن پروسسها
🔹 Dependency Walker – بررسی وابستگیهای DLL
🔹 PE-sieve / Scylla – بررسی تزریق کد یا آنپک
#Dynamic
#Application
🔥8👍1
آنالیز فایل اجرایی (Static Analysis)
قبل از اجرا فایل رو بررسی میکنیم:
✅ با PEiD یا Detect It Easy چک میکنیم فایل پکر شده یا نه
✅ با Ghidra یا IDA Pro توابع ورودی و حساس رو تحلیل میکنیم
✅ دنبال فانکشنهایی مثل strcpy, memcpy, CreateProcess, WinExec, LoadLibrary میگردیم
✅ اگر از فایل یا رجیستری اطلاعات میخونه بررسی میکنیم قابل تزریق هستن یا نه
#Analys
#File
قبل از اجرا فایل رو بررسی میکنیم:
✅ با PEiD یا Detect It Easy چک میکنیم فایل پکر شده یا نه
✅ با Ghidra یا IDA Pro توابع ورودی و حساس رو تحلیل میکنیم
✅ دنبال فانکشنهایی مثل strcpy, memcpy, CreateProcess, WinExec, LoadLibrary میگردیم
✅ اگر از فایل یا رجیستری اطلاعات میخونه بررسی میکنیم قابل تزریق هستن یا نه
#Analys
#File
👍8🔥3
پیدا کردن آسیبپذیریهای رایج
برخی از آسیبپذیریهای پرتکرار در اپلیکیشنهای ویندوزی:
Buffer Overflow
تابعهایی که بدون بررسی سایز کپی میکنن مثل strcpy, gets, memcpy
DLL Hijacking
اگر برنامه DLLها رو از مسیر نادرست بارگذاری کنه میشه یه DLL مخرب جایگزین کرد
Insecure File Permissions
وقتی فایلها یا رجیستریها دسترسی نوشتن برای همه دارن
Command Injection / Code Execution
برنامه ورودی کاربر رو مستقیم به تابعی مثل system() پاس میده
Unquoted Service Path
مسیر سرویسهایی که بینشون فاصله هست و کوتیشن ندارن
Named Pipe Hijacking
استفاده نادرست از Named Pipeها میتونه باعث privilege escalation بشه
برخی از آسیبپذیریهای پرتکرار در اپلیکیشنهای ویندوزی:
Buffer Overflow
تابعهایی که بدون بررسی سایز کپی میکنن مثل strcpy, gets, memcpy
DLL Hijacking
اگر برنامه DLLها رو از مسیر نادرست بارگذاری کنه میشه یه DLL مخرب جایگزین کرد
Insecure File Permissions
وقتی فایلها یا رجیستریها دسترسی نوشتن برای همه دارن
Command Injection / Code Execution
برنامه ورودی کاربر رو مستقیم به تابعی مثل system() پاس میده
Unquoted Service Path
مسیر سرویسهایی که بینشون فاصله هست و کوتیشن ندارن
Named Pipe Hijacking
استفاده نادرست از Named Pipeها میتونه باعث privilege escalation بشه
🔥7❤1
بهرهبرداری (Exploitation) و PoC نوشتن
بعد از پیدا کردن آسیبپذیری، باید اثباتش کنیم:
✅ ساخت PoC برای buffer overflow با ابزارهایی مثل Immunity Debugger
✅ نوشتن DLL جعلی برای حمله DLL Hijacking
✅ ساخت فایل .bat یا .exe برای اجرا با دسترسی بالا
✅ استفاده از ابزارهایی مثل Metasploit, Exploit Pack, یا msfvenom برای payload سازی
بعد از پیدا کردن آسیبپذیری، باید اثباتش کنیم:
✅ ساخت PoC برای buffer overflow با ابزارهایی مثل Immunity Debugger
✅ نوشتن DLL جعلی برای حمله DLL Hijacking
✅ ساخت فایل .bat یا .exe برای اجرا با دسترسی بالا
✅ استفاده از ابزارهایی مثل Metasploit, Exploit Pack, یا msfvenom برای payload سازی
🔥5❤1
https://medium.com/@ps.sujith/decompile-and-recompile-apk-using-apktool-beginners-guide-4ad03c2c5b8f
Medium
Decompile and Recompile APK using APKTOOL : Beginners Guide
This post is not intended for piracy and other non-legal uses . Warning:APK decompiliation using Apktool might not work properly for apps…
❤3
Arm Assembly Internals and Reverse Engineering.pdf
14.4 MB
نویسنده: William Hohl & Christopher Hinds
مناسب برای: کسانی که میخوان از پایه ARM Assembly رو یاد بگیرن
ویژگیها:
آموزش از سطح مبتدی تا پیشرفته
توضیح رجیسترها، دستورها، حافظه، توابع، وقفهها و...
تمرینهای کاربردی
بیشتر روی ARMv7 تمرکز داره، ولی به ARMv8 هم اشاره میکنه
مناسب برای: کسانی که میخوان از پایه ARM Assembly رو یاد بگیرن
ویژگیها:
آموزش از سطح مبتدی تا پیشرفته
توضیح رجیسترها، دستورها، حافظه، توابع، وقفهها و...
تمرینهای کاربردی
بیشتر روی ARMv7 تمرکز داره، ولی به ARMv8 هم اشاره میکنه
🔥2👏1
ی رودمپ برا مهندسی معکوس نوشتم خیلی وقته البته بیشتر جاها هستش اگه خواستید بگید بزارم
Anonymous Poll
97%
👍🏻
3%
👎🏻
❤13
ReverseEngineering pinned «ی رودمپ برا مهندسی معکوس نوشتم خیلی وقته البته بیشتر جاها هستش اگه خواستید بگید بزارم»
ReverseEngineering
ی رودمپ برا مهندسی معکوس نوشتم خیلی وقته البته بیشتر جاها هستش اگه خواستید بگید بزارم
Roadmap Reverse Engineering
بخش اول – پیشنیازها
1 برنامهنویسی سطح پایین
C/C++ یاد بگیرید چون اکثر برنامههای باینری با این زبانها نوشته میشن
مفاهیم مثل: pointer، stack، heap، buffer، function call.
منابع:
Learn-C.org
کتاب: C Programming Language – Kernighan & Ritchie
2 آشنایی با معماری سیستمها
OS Basics (memory layout، syscalls، ELF/PE)
مفاهیم virtual memory، interrupts، stack frame
منابع:
Operating Systems: Three Easy Pieces
لینوکس یا ویندوز؟ هر دو! ولی شروع با لینوکس راحتتره.
بخش دوم – مهندسی معکوس x86/x64
1 یادگیری اسمبلی x86/x64
دستورها: mov, call, jmp, push/pop, cmp, ret, ...
مفاهیم stack frame، calling convention، registerها (EAX, RAX, ...)
ابزارها:
NASM
Online Disassembler
منابع:
کتاب: PC Assembly Language – Paul Carter
دوره: OpenSecurityTraining – Intro x86
2 کار با دیاسمبلر و دیباگر
IDA Free, Ghidra, x64dbg, Radare2, Cutter
تمرین:
Crackmes (crackmes.one)
انجام آنالیز دستی PE fileها با IDA و Ghidra
یاد بگیرید:
Function prologues
آشنایی با anti-debugging ساده
3 مهندسی معکوس پیشرفته x86/x64
آنپکینگ، آنکریپتینگ
تحلیل obfuscation
تحلیل malware ساده
منابع:
کتاب: Practical Malware Analysis
کتاب: Reverse Engineering for Beginners – Dennis Yurichev
بخش سوم – مهندسی معکوس ARM
1 معماری ARM و تفاوتها با x86
Registerها (R0-R15, SP, LR, PC)
Instruction Set: MOV, ADD, LDR, STR, BL, BX, ...
Thumb و ARM mode
منابع:
کتاب: ARM Assembly Language – William Hohl
سایت: azeria-labs.com (خیلی خوب برای شروعه)
2 تحلیل باینریهای ARM
فریمور دیوایسها یا اپهای اندروید (so files)
ابزار: Ghidra, IDA, Radare2, QEMU, gdb-multiarch
تمرین:
استخراج فایلهای فریمور از دستگاهها
مهندسی معکوس apk و so
3 مهندسی معکوس پیشرفته ARM
تکنیکهای بایپس anti-debugging در موبایل
hooking با Frida یا Xposed
بررسی امنیت اپهای موبایل (اندروید مخصوصاً)
منابع:
کتاب: Android Hacker’s Handbook
سایت: frida.re
بخش چهارم – ابزارهای مکمل و تمرین
ابزارهای دیگر:
Binary Ninja (پولی) – برای تحلیل سریع و تمیز
Frida – Hook و dynamic analysis
Angr – تحلیل سمبلیک
Unicorn/Qiling – اجرای باینری بهصورت امولاتوری
تمرینهای مکرر:
picoCTF
CTFtime
reversing.kr
Root-Me.org
بخش پنجم – آنپکینگ ضدضد مهندسی معکوس و ابزارسازی
1 شناخت انواع پکینگ
UPX، Themida، VMProtect، custom packers
شناسایی packers و آنپکینگ دستی
ابزارها:
PEiD / Detect It Easy
x64dbg برای dump کردن فایل بعد از unpack
Scylla / ScyllaHide
منابع:
کتاب: The IDA Pro Book – Chris Eagle
پستهای وبلاگ Malware Unicorn
2 ضد دیباگینگ و ضد آنالیز
anti-debug APIها: IsDebuggerPresent, NtQueryInformationProcess
کنترل زمان، Thread hiding، SEH abuse، TLS callbacks
ابزار برای بایپس:
ScyllaHide
TitanHide
Patch کردن باینری با x64dbg یا IDA
3 ابزارسازی برای تحلیل باینری
با Python یا Rust ابزار بنویس برای:
آنپکینگ خودکار
استخراج توابع مشکوک
log runtime behavior با Frida
منابع:
پروژههای باز روی GitHub (مثل Capstone + Unicorn combo)
Reverse Engineering StackExchange
بخش ششم – مهندسی معکوس سطح سیستم و کرنل
1 درایورها و کرنل ویندوز
ساختار درایور، IOCTL، DeviceIoControl
دیباگ با WinDbg
2 مهاجرت از یوزر به کرنل
پیدا کردن آسیبپذیریهای درایورها
Exploit نوشتن برای سیستمکالهای آسیبپذیر
منابع:
Windows Internals (Mark Russinovich)
کتاب: Rootkits: Subverting the Windows Kernel
بخش هفتم – تحلیل فریمور و IoT
1 کار با فریمورهای IoT
آنپک کردن imageها (binwalk, firmware-mod-kit)
بررسی سیستمفایلهای استخراجشده
آنالیز ARM یا MIPS باینریها
ابزار:
binwalk
ghidra + qemu
angr + FirmAE برای fuzzing
منبع توپ:
https://firmware.re
Blog: devttys0.com
#roadmap
بخش اول – پیشنیازها
1 برنامهنویسی سطح پایین
C/C++ یاد بگیرید چون اکثر برنامههای باینری با این زبانها نوشته میشن
مفاهیم مثل: pointer، stack، heap، buffer، function call.
منابع:
Learn-C.org
کتاب: C Programming Language – Kernighan & Ritchie
2 آشنایی با معماری سیستمها
OS Basics (memory layout، syscalls، ELF/PE)
مفاهیم virtual memory، interrupts، stack frame
منابع:
Operating Systems: Three Easy Pieces
لینوکس یا ویندوز؟ هر دو! ولی شروع با لینوکس راحتتره.
بخش دوم – مهندسی معکوس x86/x64
1 یادگیری اسمبلی x86/x64
دستورها: mov, call, jmp, push/pop, cmp, ret, ...
مفاهیم stack frame، calling convention، registerها (EAX, RAX, ...)
ابزارها:
NASM
Online Disassembler
منابع:
کتاب: PC Assembly Language – Paul Carter
دوره: OpenSecurityTraining – Intro x86
2 کار با دیاسمبلر و دیباگر
IDA Free, Ghidra, x64dbg, Radare2, Cutter
تمرین:
Crackmes (crackmes.one)
انجام آنالیز دستی PE fileها با IDA و Ghidra
یاد بگیرید:
Function prologues
آشنایی با anti-debugging ساده
3 مهندسی معکوس پیشرفته x86/x64
آنپکینگ، آنکریپتینگ
تحلیل obfuscation
تحلیل malware ساده
منابع:
کتاب: Practical Malware Analysis
کتاب: Reverse Engineering for Beginners – Dennis Yurichev
بخش سوم – مهندسی معکوس ARM
1 معماری ARM و تفاوتها با x86
Registerها (R0-R15, SP, LR, PC)
Instruction Set: MOV, ADD, LDR, STR, BL, BX, ...
Thumb و ARM mode
منابع:
کتاب: ARM Assembly Language – William Hohl
سایت: azeria-labs.com (خیلی خوب برای شروعه)
2 تحلیل باینریهای ARM
فریمور دیوایسها یا اپهای اندروید (so files)
ابزار: Ghidra, IDA, Radare2, QEMU, gdb-multiarch
تمرین:
استخراج فایلهای فریمور از دستگاهها
مهندسی معکوس apk و so
3 مهندسی معکوس پیشرفته ARM
تکنیکهای بایپس anti-debugging در موبایل
hooking با Frida یا Xposed
بررسی امنیت اپهای موبایل (اندروید مخصوصاً)
منابع:
کتاب: Android Hacker’s Handbook
سایت: frida.re
بخش چهارم – ابزارهای مکمل و تمرین
ابزارهای دیگر:
Binary Ninja (پولی) – برای تحلیل سریع و تمیز
Frida – Hook و dynamic analysis
Angr – تحلیل سمبلیک
Unicorn/Qiling – اجرای باینری بهصورت امولاتوری
تمرینهای مکرر:
picoCTF
CTFtime
reversing.kr
Root-Me.org
بخش پنجم – آنپکینگ ضدضد مهندسی معکوس و ابزارسازی
1 شناخت انواع پکینگ
UPX، Themida، VMProtect، custom packers
شناسایی packers و آنپکینگ دستی
ابزارها:
PEiD / Detect It Easy
x64dbg برای dump کردن فایل بعد از unpack
Scylla / ScyllaHide
منابع:
کتاب: The IDA Pro Book – Chris Eagle
پستهای وبلاگ Malware Unicorn
2 ضد دیباگینگ و ضد آنالیز
anti-debug APIها: IsDebuggerPresent, NtQueryInformationProcess
کنترل زمان، Thread hiding، SEH abuse، TLS callbacks
ابزار برای بایپس:
ScyllaHide
TitanHide
Patch کردن باینری با x64dbg یا IDA
3 ابزارسازی برای تحلیل باینری
با Python یا Rust ابزار بنویس برای:
آنپکینگ خودکار
استخراج توابع مشکوک
log runtime behavior با Frida
منابع:
پروژههای باز روی GitHub (مثل Capstone + Unicorn combo)
Reverse Engineering StackExchange
بخش ششم – مهندسی معکوس سطح سیستم و کرنل
1 درایورها و کرنل ویندوز
ساختار درایور، IOCTL، DeviceIoControl
دیباگ با WinDbg
2 مهاجرت از یوزر به کرنل
پیدا کردن آسیبپذیریهای درایورها
Exploit نوشتن برای سیستمکالهای آسیبپذیر
منابع:
Windows Internals (Mark Russinovich)
کتاب: Rootkits: Subverting the Windows Kernel
بخش هفتم – تحلیل فریمور و IoT
1 کار با فریمورهای IoT
آنپک کردن imageها (binwalk, firmware-mod-kit)
بررسی سیستمفایلهای استخراجشده
آنالیز ARM یا MIPS باینریها
ابزار:
binwalk
ghidra + qemu
angr + FirmAE برای fuzzing
منبع توپ:
https://firmware.re
Blog: devttys0.com
#roadmap
🔥38👍5❤4🤣1
کامل و جامع ترین رودمپ ریورس به همراه انواع معماری(Arm x64 x86) به همراه رفرنس و تمرین و کتاب و همه چی رو سعی کردم براتون بزارم عشق کنید ری اکشن رو بترکونید
❤52👍3🔥3
دوستان حمایت کنید اگه حمایت نکنید منم نمیتونم ادامه بدم چون انگیزه ای نیست خیلی ممنون دمتون گرم
❤52👎4🥰3🍾2🗿2👍1💋1