PDA

View Full Version : سوال: دریافت اطلاعات و مسیر فایل ها از clipboard



qasemf
شنبه 21 تیر 1399, 07:59 صبح
سلام دوستان یه چالشی واسم ایجاد شده که اپ انتقال داده و یا فایل خود ویندوز یا teracopy چطور کار میکنه؟
اگه دقت کرده باشین زمانی که یه فایلی رو انتخاب میکنیم یا کپی میکنیم اون فایل داخل clipboard ذخیره میشه و زمانی که کلید ctrl+v رو میزنیم اپ انتقال فایل ظاهر میشه و دیتا رو انتقال میده حالا سوال من اینه که چطور وقتی اپ لود نشده دیتا از clipboard گرفته میشه و یا اصلا چطور زمانی که ctrl+Vرو میزنیم اپ میاد بالا؟ اصلا همین واسم جالبه چطور این اتفاق میافته خواهش میکنم اگر کسی میدونه راهنمایی کنه ممنون

ShayanFiroozi
شنبه 21 تیر 1399, 22:00 عصر
سلام دوست عزیز

ما در Scope کلی و در سطح سیستم عامل مبحثی داریم به نام Hooking یا همون Override کردن بعضی از مشخصه های سیستم عامل(که البته خود سیستم عامل معمولا این اجازه رو به ما میده نه اینکه ما به زور یا با حقه این کار رو کنیم).

مثل آنتی ویروس ها ، چطور قبل از اینکه به یک فایل Access بشه اون رو اسکن میکنه و اگر ویروس بود مثلا پاکش میکنه ؟ در واقع اون کلیه Access های فایل ها رو در سیستم عامل Hook میکنه واسه همینه که یه مقدار سیستم کند میشه.

شما میتونین در Global Scope سیستم عامل Hook تعریف کنین ، مثلا وقتی کلید F1 فشار داده شد سیستم عامل اول اونو به شما منتقل میکنه و بعد روی نرم افزاری که کلید F1 فشار داده شده،که تقریبا همه KeyLogger ها اینجوری کار میکنن.

برای Hooking در سطح سیستم عامل شما باید از API های ویندوز استفاده کنین.

شما میتونین Keyboard , Clipboard , Mouse و خیلی چیزای دیگه رو Monitor کنین.

این لینک به شما کمک بیشتری میکنه و نمونه کد جزئی هم در اختیارتون میذاره (https://stackoverflow.com/questions/621577/clipboard-event-c-sharp)

امیدوارم توضیحات کامل بوده باشه.

qasemf
یک شنبه 22 تیر 1399, 00:21 صبح
سپاس فراوان بابت پاسخی که دادید حدسم درست بود ولی نمیدونستم چطوری باید این کارو انجام بدم راهنمایی به جایی بود فقط این بحث مانیتور کردن رو خیلی جاهای دیگه هم دیدم ولی مفهومش رو متوجه نشدم یعنی چی؟

ShayanFiroozi
یک شنبه 22 تیر 1399, 11:57 صبح
یعنی شما در سطح سیستم عامل یک نگهبان یا قلاب (Hook) میذارین ، که هر کسی اگر مقلا خواست به یه فایل دسترسی داشته باشه یا یه کلید ترکیبی رو فشار بده اول Hook شما متوجه میشه بعد نرم افزار Host(نرم افزاری که اون رویداد توش واقعا اتفاق افتاده)

qasemf
یک شنبه 22 تیر 1399, 13:27 عصر
که اینطور ...یعنی hook میفهمه که مثلا کاربر الان کلید ctrl+cرو زده درسته؟ بعد از اینکه hook متوجه شد به برنامه چی میگیم؟ منظورم اینه که چه پارامتری ارسال میکنیم ؟ فقط میگیم کاربر ctrl+ cزده؟

ShayanFiroozi
دوشنبه 23 تیر 1399, 07:44 صبح
بله درسته ، چون مدیریت همه اینا با سیستم عامل هستش و شما در سطح سیستم عامل و با اجازه خودش Hook زدین،
و اینکه بعدش چه اتفاقی باید بیفته بستگی به هدف نرم افزار شما داره ، ممکنه بگین اگر کسی CTRL + V رو فشار داد سیستم رو ShutDown کن !!!

qasemf
دوشنبه 23 تیر 1399, 12:21 عصر
صحیح بعد حالا این hook رو کجا باید بنویسم؟

ShayanFiroozi
سه شنبه 24 تیر 1399, 07:38 صبح
با استفاده از Windows API در نرم افزار خودتون ، لینکی رو که ارسال کردم ببیید به چه شکلی از WinAPI برای Hook استفاده کرده ، البه این بسیار ساده و ابتداییه. در موارد کاربردی و صنعتی پیچیده تر از این حرفاست. ببینید دقیقا یه چیزی مثل رویداد هاست در سی شارپ با این تفاوت که در سطح سیستم عامل گوش به زنگ میشه ولی رویداد ها در سطح نرم افزار شما.

qasemf
سه شنبه 24 تیر 1399, 08:48 صبح
دیگه ابهامی نیست خیلی ممنون از کمکتون