ايران ويج

نسخه‌ی کامل: ساخت پوشه اي كه باز نشه (سوال)
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام. چطور مي شه پوشه اي ساخت كه به هيچ وجه باز نشه؟ ولي بتونن از طريق برنامه داخلش فايل كپي كنن.
روش 1:شما باید security و permission پوشه رو تغییر بدین
روش2: استفاده از hook api
روش اول خیلی راحت تره میتونین permission مربوط به user جاری رو deny کنین و برنامهتون رو با runass یا create process as logon در حالت administrator بالا بیارین
(۱۳-مرداد-۱۳۸۸, ۰۹:۲۷:۲۹)lord_viper نوشته است: [ -> ]روش 1:شما باید security و permission پوشه رو تغییر بدین
روش2: استفاده از hook api
روش اول خیلی راحت تره میتونین permission مربوط به user جاری رو deny کنین و برنامهتون رو با runass یا create process as logon در حالت administrator بالا بیارین

از جوابتون ممنون. ولي اصلا متوجه نشدم اگه مي شه روش كارش رو بگين.
Lord_viper جان ، فکر کنم روش دوم رو ایشون بهتر بتونن پیاده کنن تا روش اول ! ولی بدی این روش اینه که بعضی آنتی ها (احتمالا" 99%) ممکنه بهش گیر بدن!
(۱۳-مرداد-۱۳۸۸, ۱۲:۳۵:۲۳)Fireninja نوشته است: [ -> ]Lord_viper جان ، فکر کنم روش دوم رو ایشون بهتر بتونن پیاده کنن تا روش اول ! ولی بدی این روش اینه که بعضی آنتی ها (احتمالا" 99%) ممکنه بهش گیر بدن!

مي شه اين روش رو توضيح بدي؟
روش دوم پیاده سازیش به این اسونی نیست چون شما باید اشنایی کامل به ساختار فایلهای PE و همین طور معماری ویندوز در اجرا و مدیریت برنامه ها روی Ram داشته باشین تا یه HookApi رو پیاده سازی کنین

اما روش اول راحتره

کد:
procedure SetSecurityRights(cFile : string);

var
pDACL: PACL;
pEA: PEXPLICIT_ACCESS_A;
R: DWORD;
begin
pEA := AllocMem(SizeOf(EXPLICIT_ACCESS));
BuildExplicitAccessWithName(pEA, 'EVERYONE',
GENERIC_READ,GRANT_ACCESS, NO_INHERITANCE);
R := SetEntriesInAcl(1, pEA, nil, pDACL);
if R = ERROR_SUCCESS then
begin
if SetNamedSecurityInfo(pchar(cFile),
SE_FILE_OBJECT,DACL_SECURITY_INFORMATION, nil, nil, pDACL, nil) <>
ERROR_SUCCESS then
ShowMessage('SetNamedSecurityInfo failed: ' +
SysErrorMessage(GetLastError));
LocalFree(Cardinal(pDACL));
end
else ShowMessage('SetEntriesInAcl failed: ' + SysErrorMessage(R));
end;
تو این روش با تغییر security مربوط به folder از اون پوشه و اطلاعاتش محافظت میکنین به طور کامل از توابع api استفاده میشه اول یه EXPLICIT_ACCESS خالی بوجو میارین و با استفاده از تابع BuildExplicitAccessWithName اونو مقدار دهی میکنین مثلا EVERYONE یعنی تمام user ها شما میتونین اینجا هر user که مد نظرته رو بزاری و GENERIC_READ نوع دسترسی رو مشخص میکنه برای حذف کردن در انجا از خواندن جلوگیری میکنه و با استفاده از SetNamedSecurityInfo شما مقدار جدید EXPLICIT_ACCESS رو به فایلتون cFile یا پوشتون پاس میدین
(۱۴-مرداد-۱۳۸۸, ۰۰:۰۰:۵۶)lord_viper نوشته است: [ -> ]روش دوم پیاده سازیش به این اسونی نیست چون شما باید اشنایی کامل به ساختار فایلهای PE و همین طور معماری ویندوز در اجرا و مدیریت برنامه ها روی Ram داشته باشین تا یه HookApi رو پیاده سازی کنین

اما روش اول راحتره

کد:
procedure SetSecurityRights(cFile : string);

var
pDACL: PACL;
pEA: PEXPLICIT_ACCESS_A;
R: DWORD;
begin
pEA := AllocMem(SizeOf(EXPLICIT_ACCESS));
BuildExplicitAccessWithName(pEA, 'EVERYONE',
GENERIC_READ,GRANT_ACCESS, NO_INHERITANCE);
R := SetEntriesInAcl(1, pEA, nil, pDACL);
if R = ERROR_SUCCESS then
begin
if SetNamedSecurityInfo(pchar(cFile),
SE_FILE_OBJECT,DACL_SECURITY_INFORMATION, nil, nil, pDACL, nil) <>
ERROR_SUCCESS then
ShowMessage('SetNamedSecurityInfo failed: ' +
SysErrorMessage(GetLastError));
LocalFree(Cardinal(pDACL));
end
else ShowMessage('SetEntriesInAcl failed: ' + SysErrorMessage(R));
end;
تو این روش با تغییر security مربوط به folder از اون پوشه و اطلاعاتش محافظت میکنین به طور کامل از توابع api استفاده میشه اول یه EXPLICIT_ACCESS خالی بوجو میارین و با استفاده از تابع BuildExplicitAccessWithName اونو مقدار دهی میکنین مثلا EVERYONE یعنی تمام user ها شما میتونین اینجا هر user که مد نظرته رو بزاری و GENERIC_READ نوع دسترسی رو مشخص میکنه برای حذف کردن در انجا از خواندن جلوگیری میکنه و با استفاده از SetNamedSecurityInfo شما مقدار جدید EXPLICIT_ACCESS رو به فایلتون cFile یا پوشتون پاس میدین

از جوابت ممنون. ولي بعضي از جاهاي اين كد مشكل داره و خطا مي ده. حالا اگه مي شه يه نمونه برنامه اي رو اينجا بزاري ممنون مي شم.
(۱۴-مرداد-۱۳۸۸, ۱۳:۲۴:۵۴)shedayat نوشته است: [ -> ]...
از جوابت ممنون. ولي بعضي از جاهاي اين كد مشكل داره و خطا مي ده. حالا اگه مي شه يه نمونه برنامه اي رو اينجا بزاري ممنون مي شم.

معلومه که خطا می ده! شما برای Visual Basic 6.0 می خواستی ولی مبین به Delphi فکر کنم نوشته.
جناب مبین (Lord_Viper) گرامی. می تونی به زبان VB هم کدش رو بذاری؟ چون منم دنبال این کد می گشتم.

(در هر صورت قابل توجه : اینجا انجمن ویژوال بیسیک ه!!!)
و خداوند گوگل را افرید
کد:
http://www.xtremevbtalk.com/showthread.php?t=184924
http://www.neowin.net/forum/lofiversion/index.php/t146013.html
http://support.microsoft.com/kb/295004/de
http://support.microsoft.com/kb/295004