امتیاز موضوع:
  • 2 رأی - میانگین امتیازات: 3.5
  • 1
  • 2
  • 3
  • 4
  • 5
چند سئوال!
نویسنده پیام
The.Ghost غایب
مدیر بازنشسته
*****

ارسال‌ها: 461
موضوع‌ها: 201
تاریخ عضویت: مهر ۱۳۸۸

تشکرها : 674
( 354 تشکر در 158 ارسال )
ارسال: #1
Question  چند سئوال!
با سلام خدمت دوستان عزیز ایران ویج. Wink

چند تا سئوال داشتم که اگه دوستان لطفا کنند و پاسخ بدهند خیلی ممنون و متشکر میشم.Heart

1. عملکر AS چه کارهایی را انجام میدهد لطفا یک مثال هم بزنید؟

2. در دستور زیر چرا نوشته به صورت یونیکد ذخیره نمی شود و فقط اسکی می توان نوشت یعنی نمیشه به زبانی به جزء زبان انگلیسی متن را ذخیره کرد؟
کد:
procedure TForm1.Button1Click(Sender: TObject);
var
  F: TextFile;
  p:String;
begin
p:='D:\12.txt';
AssignFile(F,P);
Rewrite(F);
Writeln(F,'www.yahoo.com');
Writeln(F,'?????????????'); // !!!!!!
CloseFile(F);
end;

3. کلمه Out در تعریف یک روال و یا تابع چه کاری را انجام میده و فرقش با کلمه Var در چیست؟

4. تابعد Assigned() چه کار را انجام میده؟

5. چطور میشه Process برنامه خودمان را قفل کنیم که دستور زیر براش اجراء نشه؟؟
کد:
CreateProcess(nil,pchar('D:\Ali.exe'),nil,nil,False,CREATE_SUSPENDED,nil,nil,SI,PI);
منظورم برای جلوگیری از Injection هست.

با تشکر فراوان. Rolleyes

Assembly Language 039

۱۳-خرداد-۱۳۹۲, ۰۰:۲۲:۴۷
ارسال‌ها
پاسخ
veyskarami غایب
مدیر بازنشسته
*****

ارسال‌ها: 861
موضوع‌ها: 82
تاریخ عضویت: مرداد ۱۳۸۴

تشکرها : 477
( 2479 تشکر در 611 ارسال )
ارسال: #2
RE: چند سئوال!
جلوگیری از کد اینجکتشن هیچ ربطی به تابع CreateProcess نداره...
این تابع صرفا برای ایجاد یک پروسه هست
قفل کردن پروسه هم روشهای زیادی براش هست که مهم ترینش هوک کردن توابع زیر در سطح یوزر یا بسته به نیاز در سطح کرنل هستش
در سطح یوزر صرفا کار با ارسال هوک از طریق یک Dll یا به صورت ارسال مستقیم کد اماکن پذیر هستش
در سطح کرنل هم که مسلما مستلزم نوشتن درایور و هوک کردن توابع زیر هست

توابعی که برای قفل کردن پروسه معمولا هوک میشن:

OpenProcess (تابع سطح یوزر): که برای گرفتن هندل پروسه ها و در مرحله بعدی بستن اون به کار میره
NtOpenProcess (معمولا در سطح یوزر و کرنل هوک میشه) : با وظایف فوق...
ZwOpenProcess (در سطح کرنل هوک میشه) با وظایف فوق...

TerminateProcess (تابع سطح یوزر): که برای بستن پروسه استفاده میشه
NtTerminateProcess (معمولا در سطوح یوزر و کرنل هوک میشه): وظایف فوق...
ZwTerminateProcess (در سطح کرنل هوک میشه): و با وظایف فوق...

این برای جلوگیری از بسته شدن پروسه هست

اما برای جلوگیری از اینجکت شدن باید توابعی که باعث اجرای کد تو پروسه های دیگه میشه رو هوک کرد که مهم ترین و کلیدی ترین اون توابع ، تابع CreateRemoteThread در سطح یوزر هست و البته تابع SeDebugPrivilage هم برای حفاظت بیشتر از رسیدن به دسترسی های بالا بهتره که هوک بشه.

برای جلوگیری از اجرای توابع سطح کرنل هم بهتره که تابع ZwLoadDriver رو هم هوک کنیم که اگه زمانی برنامه های مشکوک خواست از طریق کرنل پروسه رو ببنده، حداقل کاربر بتون لود شدن درایور رو تشخیص بده...

۱۴-خرداد-۱۳۹۲, ۰۱:۳۲:۲۷
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : babyy, The.Ghost, nImaarek
lord_viper غایب
مدیر کل انجمن
*****

ارسال‌ها: 3,949
موضوع‌ها: 352
تاریخ عضویت: بهمن ۱۳۸۴

تشکرها : 5193
( 9875 تشکر در 2650 ارسال )
ارسال: #3
RE: چند سئوال!
(۱۳-خرداد-۱۳۹۲, ۰۰:۲۲:۴۷)The.Ghost نوشته است: 1. عملکر AS چه کارهایی را انجام میدهد لطفا یک مثال هم بزنید؟
as یعنی مثل و مانند مثلا شما چندین کنترل در زمان اجرا ساختین و یک تابع به عنوان رویداد به اونها نسبت دادید برای اینکه بفهمید کدام یک از کنترلها داره این رویداد رو فراخوانی میکنه برای این کار مثلا اگه button باشه به این صورت عمل میکنیم
کد:
if (sender as tbutton).caption='click' then
{code}
نقل قول: 2. در دستور زیر چرا نوشته به صورت یونیکد ذخیره نمی شود و فقط اسکی می توان نوشت یعنی نمیشه به زبانی به جزء زبان انگلیسی متن را ذخیره کرد؟
کد:
procedure TForm1.Button1Click(Sender: TObject);
var
  F: TextFile;
  p:String;
begin
p:='D:\12.txt';
AssignFile(F,P);
Rewrite(F);
Writeln(F,'www.yahoo.com');
Writeln(F,'?????????????'); // !!!!!!
CloseFile(F);
end;
این کدها صرفا جهت reusablity و تعامل با پاسکال تو دلفی هنوز وجود داره و اصلا برای کار با فایلها نوشتن در انها مناسب نیست به جای این توابع میتونین از توابع بهتری استفاده کنید(به نوعی این توابع منسوخ شدند)
نقل قول: 3. کلمه Out در تعریف یک روال و یا تابع چه کاری را انجام میده و فرقش با کلمه Var در چیست؟
شما تو دلفی این قابلیت رو دارید که یک متغییر رو از داخل تابع به بیرون از تابع ارسال کنین که با out مشخص میشه یا مقدار یک متغییر خارجی که به تابع پاس داده میشه رو درون تابع تغییر بدین
نقل قول: 4. تابعد Assigned() چه کار را انجام میده؟
این تابع چک میکنه ایا یک رفرنس یا ابجکت نول nil هست یا مقدار داره

[تصویر:  xshon.png]
از آن نماز که خود هیچ از آن نمی فهمی خدا چه فایده و بهره اکتساب کند
تفاخری نبود مر خدای عالم را که چون تو ابلهی او را خدا حساب کند
۱۴-خرداد-۱۳۹۲, ۱۸:۰۳:۱۱
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : babyy, aKaReZa75, The.Ghost


پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS