PDA

View Full Version : سوال: آیا در VB.NET امکان ساخت فیل DLL ی که بطور اتوماتیک اکشن هایی را انجام بدهد وجود دارد؟



autosystem
چهارشنبه 27 آذر 1398, 10:38 صبح
با سلام،
من بارها دیده ام که کرک برخی از نرم افزارها اینگونه است که یک فایل DLL را که جزء فایلهای خود نرم افزار هم نیست در پوشه نرم افزار کپی می کنند و این فایل باعث می شود که نرم افزار کرک شود! انگار که این فایل بصورت اتوماتیک مثلا هر چند دقیقه یکبار اجرا می شود و فایلهای نرم افزار را Patch می کند! و درصورتی که نباشد نرم افزار کار نمی کند و به حالت اولیه(دمو) بر می گردد. می خواستم بدانم آیا واقعا امکان ساخت چنین فایلهایی در VB.NET وجود دارد؟
با سپاس

the king
چهارشنبه 27 آذر 1398, 11:19 صبح
با سلام،
من بارها دیده ام که کرک برخی از نرم افزارها اینگونه است که یک فایل DLL را که جزء فایلهای خود نرم افزار هم نیست در پوشه نرم افزار کپی می کنند و این فایل باعث می شود که نرم افزار کرک شود! انگار که این فایل بصورت اتوماتیک مثلا هر چند دقیقه یکبار اجرا می شود و فایلهای نرم افزار را Patch می کند! و درصورتی که نباشد نرم افزار کار نمی کند و به حالت اولیه(دمو) بر می گردد. می خواستم بدانم آیا واقعا امکان ساخت چنین فایلهایی در VB.NET وجود دارد؟
با سپاس
اون فایل های DLL بصورت خودکار اجرا نمیشن. هر نرم افزاری در حالت عادی و بدون کرک هم از یکسری فایل های کتابخانه ای استفاده میکنه و اگه فایل DLL اشتراکی باشه بصورت پیشفرض در مسیر های سیستمی مثل C:\Windows\System32 قرار داره و از اونجا فراخوانی میشه.
مثلا برنامه مستقیم یا غیر مستقیم میخواسته با متد GetUserNameEx کتابخانه secur32.dll نام کاربر رو چک کنه، ولی با کپی کردن یک فایل secur32.dll جعلی که یک متد مشابه GetUserNameEx داره، فقط نام کاربری خاصی رو دریافت می کنه.
با کپی کردن یک فایل DLL همنام در کنار فایل اجرایی، چون اولویت جستجو برای DLL از همون مسیر کنار فایل اجرایی شروع میشه دیگه سراغ DLL اصلی نمیره.
حالا ممکنه اون DLL که کنار فایل اجرایی کپی میشه در حد یک Wrapper ساده باشه یا یک نسخه کامل و ویرایش شده از یک DLL اصلی باشه.
بصورت عادی نه VB.NET و نه #C متد هاشون رو Export نمی کنند اما با کمک ابزار های جانبی مثل DllExport (https://github.com/3F/DllExport) که روال کامپایل رو تغییر میده، میشه فایل های DLL ای که متد Export میکنند ساخت.
ولی اینکه این قابلیت برای جایگزینی همه جور DLL ای جواب بده، بعید میدونم، احتمالا نه. VB.NET زبان و NET. پلتفرم چندان مناسبی برای اینکار نیست.

autosystem
چهارشنبه 27 آذر 1398, 14:39 عصر
اون فایل های DLL بصورت خودکار اجرا نمیشن. هر نرم افزاری در حالت عادی و بدون کرک هم از یکسری فایل های کتابخانه ای استفاده میکنه و اگه فایل DLL اشتراکی باشه بصورت پیشفرض در مسیر های سیستمی مثل C:\Windows\System32 قرار داره و از اونجا فراخوانی میشه.
مثلا برنامه مستقیم یا غیر مستقیم میخواسته با متد GetUserNameEx کتابخانه secur32.dll نام کاربر رو چک کنه، ولی با کپی کردن یک فایل secur32.dll جعلی که یک متد مشابه GetUserNameEx داره، فقط نام کاربری خاصی رو دریافت می کنه.
با کپی کردن یک فایل DLL همنام در کنار فایل اجرایی، چون اولویت جستجو برای DLL از همون مسیر کنار فایل اجرایی شروع میشه دیگه سراغ DLL اصلی نمیره.
حالا ممکنه اون DLL که کنار فایل اجرایی کپی میشه در حد یک Wrapper ساده باشه یا یک نسخه کامل و ویرایش شده از یک DLL اصلی باشه.
بصورت عادی نه VB.NET و نه #C متد هاشون رو Export نمی کنند اما با کمک ابزار های جانبی مثل DllExport (https://github.com/3F/DllExport) که روال کامپایل رو تغییر میده، میشه فایل های DLL ای که متد Export میکنند ساخت.
ولی اینکه این قابلیت برای جایگزینی همه جور DLL ای جواب بده، بعید میدونم، احتمالا نه. VB.NET زبان و NET. پلتفرم چندان مناسبی برای اینکار نیست.

با تشکر از توضیحات کاملتون. راستش ما یک نرم افزار خارجی داریم که کرک شده و در واقع چند فایل DLL داره که اینها پچ شده اند. من برای این نرم افزار قفل سخت افزاری گذاشتم به این شکل که یک فایل فعالسازی با VB.NET درست کردم که اول قفل را شناسایی می کنه و بعد درصورت صحت، عملیات پچ را انجام میده. خب با این کار دیگه بعد از نصب نیازی به قفل نیست. من دنبال راهگاری هستم که عملکرد نرم افزار هم به وجود قفل وابسته بشه. مثلا یک سرویسی روی ویندوز نصب بشه و هر یک ساعت یکبار وجود قفل سخت افزاری را بررسی کنه و اگر نبود دوباره فایلهای پچ شده را به حالت اول برگزدونه و نرم افزار همان حالت اورجینال یا دمو را پیدا کنه؟ به نظرتون چیکار باید کرد؟

the king
چهارشنبه 27 آذر 1398, 15:25 عصر
با تشکر از توضیحات کاملتون. راستش ما یک نرم افزار خارجی داریم که کرک شده و در واقع چند فایل DLL داره که اینها پچ شده اند. من برای این نرم افزار قفل سخت افزاری گذاشتم به این شکل که یک فایل فعالسازی با VB.NET درست کردم که اول قفل را شناسایی می کنه و بعد درصورت صحت، عملیات پچ را انجام میده. خب با این کار دیگه بعد از نصب نیازی به قفل نیست. من دنبال راهگاری هستم که عملکرد نرم افزار هم به وجود قفل وابسته بشه. مثلا یک سرویسی روی ویندوز نصب بشه و هر یک ساعت یکبار وجود قفل سخت افزاری را بررسی کنه و اگر نبود دوباره فایلهای پچ شده را به حالت اول برگزدونه و نرم افزار همان حالت اورجینال یا دمو را پیدا کنه؟ به نظرتون چیکار باید کرد؟
گزینه موثری سراغ ندارم که پیشنهاد کنم.
مشکل سرویس اینه که غیر فعال کردن مشکلی برای برنامه کرک شده ایجاد نمی کنه و کاربر میتونه بدون مشکل سرویس شما رو غیر فعال کنه و بررسی قفل رو دور بزنه.
از طرف دیگه وقتی برنامه در حالت کرک شده است میشه از فایلهاش کپی گرفت و فرقی نمی کنه که شما با چه طریقی و با چه شرط و شروطی این کرک رو انجام داده بودید.

autosystem
چهارشنبه 27 آذر 1398, 20:43 عصر
گزینه موثری سراغ ندارم که پیشنهاد کنم.
مشکل سرویس اینه که غیر فعال کردن مشکلی برای برنامه کرک شده ایجاد نمی کنه و کاربر میتونه بدون مشکل سرویس شما رو غیر فعال کنه و بررسی قفل رو دور بزنه.
از طرف دیگه وقتی برنامه در حالت کرک شده است میشه از فایلهاش کپی گرفت و فرقی نمی کنه که شما با چه طریقی و با چه شرط و شروطی این کرک رو انجام داده بودید.
بله درسته ممنون از توضیحات شما