با سلام خدمت دوستان عزیز ایران ویج.
چند تا سئوال داشتم که اگه دوستان لطفا کنند و پاسخ بدهند خیلی ممنون و متشکر میشم.
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 هست.
با تشکر فراوان.
جلوگیری از کد اینجکتشن هیچ ربطی به تابع CreateProcess نداره...
این تابع صرفا برای ایجاد یک پروسه هست
قفل کردن پروسه هم روشهای زیادی براش هست که مهم ترینش هوک کردن توابع زیر در سطح یوزر یا بسته به نیاز در سطح کرنل هستش
در سطح یوزر صرفا کار با ارسال هوک از طریق یک Dll یا به صورت ارسال مستقیم کد اماکن پذیر هستش
در سطح کرنل هم که مسلما مستلزم نوشتن درایور و هوک کردن توابع زیر هست
توابعی که برای قفل کردن پروسه معمولا هوک میشن:
OpenProcess (تابع سطح یوزر): که برای گرفتن هندل پروسه ها و در مرحله بعدی بستن اون به کار میره
NtOpenProcess (معمولا در سطح یوزر و کرنل هوک میشه) : با وظایف فوق...
ZwOpenProcess (در سطح کرنل هوک میشه) با وظایف فوق...
TerminateProcess (تابع سطح یوزر): که برای بستن پروسه استفاده میشه
NtTerminateProcess (معمولا در سطوح یوزر و کرنل هوک میشه): وظایف فوق...
ZwTerminateProcess (در سطح کرنل هوک میشه): و با وظایف فوق...
این برای جلوگیری از بسته شدن پروسه هست
اما برای جلوگیری از اینجکت شدن باید توابعی که باعث اجرای کد تو پروسه های دیگه میشه رو هوک کرد که مهم ترین و کلیدی ترین اون توابع ، تابع CreateRemoteThread در سطح یوزر هست و البته تابع SeDebugPrivilage هم برای حفاظت بیشتر از رسیدن به دسترسی های بالا بهتره که هوک بشه.
برای جلوگیری از اجرای توابع سطح کرنل هم بهتره که تابع ZwLoadDriver رو هم هوک کنیم که اگه زمانی برنامه های مشکوک خواست از طریق کرنل پروسه رو ببنده، حداقل کاربر بتون لود شدن درایور رو تشخیص بده...
(۱۳-خرداد-۱۳۹۲, ۰۰:۲۲:۴۷)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 هست یا مقدار داره