<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title><![CDATA[delphi4arab منتديات دلفي للعرب - دلفي والتعامل مع النظام و الذاكرة]]></title>
		<link>https://delphi4arab.net/forum/</link>
		<description><![CDATA[delphi4arab منتديات دلفي للعرب - https://delphi4arab.net/forum]]></description>
		<pubDate>Thu, 12 Nov 2026 00:08:15 +0000</pubDate>
		<generator>MyBB</generator>
		<item>
			<title><![CDATA[سؤال حول كتابة Plugin  لتجاوز دالة IsDebuggerPresent]]></title>
			<link>https://delphi4arab.net/forum/showthread.php?tid=10732</link>
			<pubDate>Wed, 01 Apr 2020 19:09:33 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://delphi4arab.net/forum/member.php?action=profile&uid=4656">Rever7eR</a>]]></dc:creator>
			<guid isPermaLink="false">https://delphi4arab.net/forum/showthread.php?tid=10732</guid>
			<description><![CDATA[السلام عليكم ورحمة الله و بركاته <br />
<br />
أردت كتابة اضافة للمنقح لتجاوز دالة IsDebuggerPresent وواجهتني بعض المشاكل . <br />
الفكرة كالتالي <br />
<br />
1- جلب مقبض الملف المحمل الى المنقح لنسميه Target مثلا <br />
2- استعمال الدالة NtQueryInformationProcess<br />
<br />
<br />
<div style="text-align: left;" class="mycode_align"><div class="codeblock phpcodeblock"><div class="title">PHP كود :</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">__kernel_entry&nbsp;NTSTATUS&nbsp;NtQueryInformationProcess</span><span style="color: #007700">(<br /></span><span style="color: #0000BB"> &nbsp;IN&nbsp;HANDLE &nbsp; &nbsp; &nbsp; &nbsp;  &nbsp;ProcessHandle</span><span style="color: #007700">,<br /></span><span style="color: #0000BB"> &nbsp;IN&nbsp;PROCESSINFOCLASS&nbsp;ProcessInformationClass</span><span style="color: #007700">,<br /></span><span style="color: #0000BB"> &nbsp;OUT&nbsp;PVOID &nbsp; &nbsp; &nbsp; &nbsp;  &nbsp;ProcessInformation</span><span style="color: #007700">,<br /></span><span style="color: #0000BB"> &nbsp;IN&nbsp;ULONG &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ProcessInformationLength</span><span style="color: #007700">,<br /></span><span style="color: #0000BB"> &nbsp;OUT&nbsp;PULONG &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ReturnLength<br /></span><span style="color: #007700">);&nbsp;<br /></span></code></div></div></div></div>
<br />
<br />
<br />
البنية ProcessInformationClass تقوم بجلب مؤشر للبنية PEB التي تحوي على ال BeingDebugged Flag و الذي تستعمله الدالة IsDebuggerPresent في التعرف على المنقح !<br />
3- التغيير على البايت BeingDebugged  يحتاج دالة WriteProcessMemory على ما أعتقد ؟<br />
4- استعمال الدالة  ReadProcessMemory لقراءة البنية PEB<br />
5- اكمال سير البرنامج<br />
هل تحليلي صحيح ؟<br />
<br />
المشاكل التي واجهتني حتى الان هي : <br />
<br />
كيف احصل على مقبض ملف تنفيذي و هو قيد التنقيح ؟ <br />
<br />
كيف استعمل دالة WriteProcessMemory للتغيير على البايت BeingDebugged ؟<br />
<br />
(قمت بالتجربة سابقا و فشلت في تغييرها , بدل القيمة 1 مثلا احصل عى قيمة عشوائية مثل 99...) طبعا القيمة غير مهمة مادامت لا تساوي الصفر , لكن اريد ان احصل على القيمة التي احددها انا , و ليس قيمة عشوائية ان شاء الله تكون مفهومة<br />
<br />
<br />
<br />
<img src="https://i.imgur.com/YkFGPPD.png" loading="lazy"  alt="[صورة: YkFGPPD.png]" class="mycode_img" /><br />
<br />
<br />
حاليا اقوم بتجربة على ملف تنفيذي خارجي سميته Target و يستعمل الدالة IsDebuggerPresent<br />
<br />
<br />
<div style="text-align: left;" class="mycode_align"><div class="codeblock phpcodeblock"><div class="title">PHP كود :</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">type<br /> &nbsp;</span><span style="color: #FF8000">//-----------------------------------------<br />&nbsp;</span><span style="color: #0000BB">PEB&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">record<br /> &nbsp; &nbsp;Reserved1</span><span style="color: #007700">:&nbsp;array&nbsp;[</span><span style="color: #0000BB">0&nbsp;</span><span style="color: #007700">..&nbsp;</span><span style="color: #0000BB">1</span><span style="color: #007700">]&nbsp;</span><span style="color: #0000BB">of&nbsp;Byte</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;BeingDebugged</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">Byte</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;Reserved2</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">Byte</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;Reserved3</span><span style="color: #007700">:&nbsp;array&nbsp;[</span><span style="color: #0000BB">0&nbsp;</span><span style="color: #007700">..&nbsp;</span><span style="color: #0000BB">1</span><span style="color: #007700">]&nbsp;</span><span style="color: #0000BB">of&nbsp;Pointer</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;Ldr</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">Pointer</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;Reserved4</span><span style="color: #007700">:&nbsp;array&nbsp;[</span><span style="color: #0000BB">0&nbsp;</span><span style="color: #007700">..&nbsp;</span><span style="color: #0000BB">102</span><span style="color: #007700">]&nbsp;</span><span style="color: #0000BB">of&nbsp;Byte</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;Reserved5</span><span style="color: #007700">:&nbsp;array&nbsp;[</span><span style="color: #0000BB">0&nbsp;</span><span style="color: #007700">..&nbsp;</span><span style="color: #0000BB">51</span><span style="color: #007700">]&nbsp;</span><span style="color: #0000BB">of&nbsp;Pointer</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;PostProcessInitRoutine</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">Pointer</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;Reserved6</span><span style="color: #007700">:&nbsp;array&nbsp;[</span><span style="color: #0000BB">0&nbsp;</span><span style="color: #007700">..&nbsp;</span><span style="color: #0000BB">127</span><span style="color: #007700">]&nbsp;</span><span style="color: #0000BB">of&nbsp;Byte</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;Reserved7</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">Pointer</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;SessionId</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">ULONG</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp;end</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp;</span><span style="color: #FF8000">//-----------------------------------------<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;PROCESS_BASIC_INFORMATION&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">record<br /> &nbsp; &nbsp;Reserved1</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">Pointer</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;PebBaseAddress</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">Pointer</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;Reserved2</span><span style="color: #007700">:&nbsp;array&nbsp;[</span><span style="color: #0000BB">0&nbsp;</span><span style="color: #007700">..&nbsp;</span><span style="color: #0000BB">1</span><span style="color: #007700">]&nbsp;</span><span style="color: #0000BB">of&nbsp;Pointer</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;UniqueProcessId</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">cardinal</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;Reserved3</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">Pointer</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp;end</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp;</span><span style="color: #FF8000">//-----------------------------------------<br /></span><span style="color: #007700">function&nbsp;</span><span style="color: #0000BB">NtQueryInformationProcess</span><span style="color: #007700">(</span><span style="color: #0000BB">ProcessHandle</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">THANDLE</span><span style="color: #007700">;&nbsp;</span><span style="color: #0000BB">ProcessInformationClass</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">DWORD</span><span style="color: #007700">;&nbsp;</span><span style="color: #0000BB">ProcessInformation</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">Pointer</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">ProcessInformationLength</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">ULONG</span><span style="color: #007700">;&nbsp;</span><span style="color: #0000BB">ReturnLength</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">PULONG</span><span style="color: #007700">):&nbsp;</span><span style="color: #0000BB">LongInt</span><span style="color: #007700">;&nbsp;</span><span style="color: #0000BB">stdcall</span><span style="color: #007700">;&nbsp;</span><span style="color: #0000BB">external&nbsp;</span><span style="color: #DD0000">'ntdll.dll'</span><span style="color: #007700">;<br /><br /></span><span style="color: #0000BB">procedure&nbsp;TForm1</span><span style="color: #007700">.</span><span style="color: #0000BB">Button1Click</span><span style="color: #007700">(</span><span style="color: #0000BB">Sender</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">TObject</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp;</span><span style="color: #007700">var<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;TargetHandle&nbsp;</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">THandle</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;ProcessBasicInfo&nbsp;</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">PROCESS_BASIC_INFORMATION</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;length</span><span style="color: #007700">:</span><span style="color: #0000BB">cardinal</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;buf&nbsp;</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">PAnsiChar</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;EB&nbsp;</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">PEB</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;buffer&nbsp;</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">byte</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">begin<br /> &nbsp; &nbsp;TargetHandle&nbsp;</span><span style="color: #007700">:=&nbsp;</span><span style="color: #0000BB">findwindow</span><span style="color: #007700">(</span><span style="color: #0000BB">nil</span><span style="color: #007700">,</span><span style="color: #DD0000">'Target'</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;memo1</span><span style="color: #007700">.</span><span style="color: #0000BB">Lines</span><span style="color: #007700">.</span><span style="color: #0000BB">add</span><span style="color: #007700">(</span><span style="color: #DD0000">'handle&nbsp;:&nbsp;&#36;'&nbsp;</span><span style="color: #007700">+</span><span style="color: #0000BB">IntToHex</span><span style="color: #007700">(</span><span style="color: #0000BB">TargetHandle</span><span style="color: #007700">,</span><span style="color: #0000BB">8</span><span style="color: #007700">));<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;NtQueryInformationProcess</span><span style="color: #007700">(</span><span style="color: #0000BB">TargetHandle</span><span style="color: #007700">,</span><span style="color: #0000BB">0</span><span style="color: #007700">,@</span><span style="color: #0000BB">ProcessBasicInfo</span><span style="color: #007700">,</span><span style="color: #0000BB">sizeof</span><span style="color: #007700">(</span><span style="color: #0000BB">ProcessBasicInfo</span><span style="color: #007700">),@</span><span style="color: #0000BB">length</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;memo1</span><span style="color: #007700">.</span><span style="color: #0000BB">lines</span><span style="color: #007700">.</span><span style="color: #0000BB">Add</span><span style="color: #007700">(</span><span style="color: #DD0000">'Pointer&nbsp;to&nbsp;PEB &nbsp;:&nbsp;&#36;'&nbsp;</span><span style="color: #007700">+&nbsp;</span><span style="color: #0000BB">Format</span><span style="color: #007700">(</span><span style="color: #DD0000">'%p'</span><span style="color: #007700">,&nbsp;[</span><span style="color: #0000BB">ProcessBasicInfo</span><span style="color: #007700">.</span><span style="color: #0000BB">PebBaseAddress</span><span style="color: #007700">]));<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;ReadProcessMemory</span><span style="color: #007700">(</span><span style="color: #0000BB">TargetHandle</span><span style="color: #007700">,&nbsp;@</span><span style="color: #0000BB">ProcessBasicInfo</span><span style="color: #007700">.</span><span style="color: #0000BB">PebBaseAddress</span><span style="color: #007700">,&nbsp;@</span><span style="color: #0000BB">EB</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">sizeof</span><span style="color: #007700">(</span><span style="color: #0000BB">PEB</span><span style="color: #007700">),&nbsp;</span><span style="color: #0000BB">length</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;Memo1</span><span style="color: #007700">.</span><span style="color: #0000BB">Lines</span><span style="color: #007700">.</span><span style="color: #0000BB">Add</span><span style="color: #007700">(</span><span style="color: #DD0000">'Being&nbsp;Debugged&nbsp;:&nbsp;'&nbsp;</span><span style="color: #007700">+&nbsp;</span><span style="color: #0000BB">IntToStr</span><span style="color: #007700">(</span><span style="color: #0000BB">EB</span><span style="color: #007700">.</span><span style="color: #0000BB">BeingDebugged</span><span style="color: #007700">));<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;end</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">end</span><span style="color: #007700">.&nbsp;<br /></span></code></div></div></div></div>]]></description>
			<content:encoded><![CDATA[السلام عليكم ورحمة الله و بركاته <br />
<br />
أردت كتابة اضافة للمنقح لتجاوز دالة IsDebuggerPresent وواجهتني بعض المشاكل . <br />
الفكرة كالتالي <br />
<br />
1- جلب مقبض الملف المحمل الى المنقح لنسميه Target مثلا <br />
2- استعمال الدالة NtQueryInformationProcess<br />
<br />
<br />
<div style="text-align: left;" class="mycode_align"><div class="codeblock phpcodeblock"><div class="title">PHP كود :</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">__kernel_entry&nbsp;NTSTATUS&nbsp;NtQueryInformationProcess</span><span style="color: #007700">(<br /></span><span style="color: #0000BB"> &nbsp;IN&nbsp;HANDLE &nbsp; &nbsp; &nbsp; &nbsp;  &nbsp;ProcessHandle</span><span style="color: #007700">,<br /></span><span style="color: #0000BB"> &nbsp;IN&nbsp;PROCESSINFOCLASS&nbsp;ProcessInformationClass</span><span style="color: #007700">,<br /></span><span style="color: #0000BB"> &nbsp;OUT&nbsp;PVOID &nbsp; &nbsp; &nbsp; &nbsp;  &nbsp;ProcessInformation</span><span style="color: #007700">,<br /></span><span style="color: #0000BB"> &nbsp;IN&nbsp;ULONG &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ProcessInformationLength</span><span style="color: #007700">,<br /></span><span style="color: #0000BB"> &nbsp;OUT&nbsp;PULONG &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ReturnLength<br /></span><span style="color: #007700">);&nbsp;<br /></span></code></div></div></div></div>
<br />
<br />
<br />
البنية ProcessInformationClass تقوم بجلب مؤشر للبنية PEB التي تحوي على ال BeingDebugged Flag و الذي تستعمله الدالة IsDebuggerPresent في التعرف على المنقح !<br />
3- التغيير على البايت BeingDebugged  يحتاج دالة WriteProcessMemory على ما أعتقد ؟<br />
4- استعمال الدالة  ReadProcessMemory لقراءة البنية PEB<br />
5- اكمال سير البرنامج<br />
هل تحليلي صحيح ؟<br />
<br />
المشاكل التي واجهتني حتى الان هي : <br />
<br />
كيف احصل على مقبض ملف تنفيذي و هو قيد التنقيح ؟ <br />
<br />
كيف استعمل دالة WriteProcessMemory للتغيير على البايت BeingDebugged ؟<br />
<br />
(قمت بالتجربة سابقا و فشلت في تغييرها , بدل القيمة 1 مثلا احصل عى قيمة عشوائية مثل 99...) طبعا القيمة غير مهمة مادامت لا تساوي الصفر , لكن اريد ان احصل على القيمة التي احددها انا , و ليس قيمة عشوائية ان شاء الله تكون مفهومة<br />
<br />
<br />
<br />
<img src="https://i.imgur.com/YkFGPPD.png" loading="lazy"  alt="[صورة: YkFGPPD.png]" class="mycode_img" /><br />
<br />
<br />
حاليا اقوم بتجربة على ملف تنفيذي خارجي سميته Target و يستعمل الدالة IsDebuggerPresent<br />
<br />
<br />
<div style="text-align: left;" class="mycode_align"><div class="codeblock phpcodeblock"><div class="title">PHP كود :</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">type<br /> &nbsp;</span><span style="color: #FF8000">//-----------------------------------------<br />&nbsp;</span><span style="color: #0000BB">PEB&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">record<br /> &nbsp; &nbsp;Reserved1</span><span style="color: #007700">:&nbsp;array&nbsp;[</span><span style="color: #0000BB">0&nbsp;</span><span style="color: #007700">..&nbsp;</span><span style="color: #0000BB">1</span><span style="color: #007700">]&nbsp;</span><span style="color: #0000BB">of&nbsp;Byte</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;BeingDebugged</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">Byte</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;Reserved2</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">Byte</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;Reserved3</span><span style="color: #007700">:&nbsp;array&nbsp;[</span><span style="color: #0000BB">0&nbsp;</span><span style="color: #007700">..&nbsp;</span><span style="color: #0000BB">1</span><span style="color: #007700">]&nbsp;</span><span style="color: #0000BB">of&nbsp;Pointer</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;Ldr</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">Pointer</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;Reserved4</span><span style="color: #007700">:&nbsp;array&nbsp;[</span><span style="color: #0000BB">0&nbsp;</span><span style="color: #007700">..&nbsp;</span><span style="color: #0000BB">102</span><span style="color: #007700">]&nbsp;</span><span style="color: #0000BB">of&nbsp;Byte</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;Reserved5</span><span style="color: #007700">:&nbsp;array&nbsp;[</span><span style="color: #0000BB">0&nbsp;</span><span style="color: #007700">..&nbsp;</span><span style="color: #0000BB">51</span><span style="color: #007700">]&nbsp;</span><span style="color: #0000BB">of&nbsp;Pointer</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;PostProcessInitRoutine</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">Pointer</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;Reserved6</span><span style="color: #007700">:&nbsp;array&nbsp;[</span><span style="color: #0000BB">0&nbsp;</span><span style="color: #007700">..&nbsp;</span><span style="color: #0000BB">127</span><span style="color: #007700">]&nbsp;</span><span style="color: #0000BB">of&nbsp;Byte</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;Reserved7</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">Pointer</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;SessionId</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">ULONG</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp;end</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp;</span><span style="color: #FF8000">//-----------------------------------------<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;PROCESS_BASIC_INFORMATION&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">record<br /> &nbsp; &nbsp;Reserved1</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">Pointer</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;PebBaseAddress</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">Pointer</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;Reserved2</span><span style="color: #007700">:&nbsp;array&nbsp;[</span><span style="color: #0000BB">0&nbsp;</span><span style="color: #007700">..&nbsp;</span><span style="color: #0000BB">1</span><span style="color: #007700">]&nbsp;</span><span style="color: #0000BB">of&nbsp;Pointer</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;UniqueProcessId</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">cardinal</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;Reserved3</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">Pointer</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp;end</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp;</span><span style="color: #FF8000">//-----------------------------------------<br /></span><span style="color: #007700">function&nbsp;</span><span style="color: #0000BB">NtQueryInformationProcess</span><span style="color: #007700">(</span><span style="color: #0000BB">ProcessHandle</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">THANDLE</span><span style="color: #007700">;&nbsp;</span><span style="color: #0000BB">ProcessInformationClass</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">DWORD</span><span style="color: #007700">;&nbsp;</span><span style="color: #0000BB">ProcessInformation</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">Pointer</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">ProcessInformationLength</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">ULONG</span><span style="color: #007700">;&nbsp;</span><span style="color: #0000BB">ReturnLength</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">PULONG</span><span style="color: #007700">):&nbsp;</span><span style="color: #0000BB">LongInt</span><span style="color: #007700">;&nbsp;</span><span style="color: #0000BB">stdcall</span><span style="color: #007700">;&nbsp;</span><span style="color: #0000BB">external&nbsp;</span><span style="color: #DD0000">'ntdll.dll'</span><span style="color: #007700">;<br /><br /></span><span style="color: #0000BB">procedure&nbsp;TForm1</span><span style="color: #007700">.</span><span style="color: #0000BB">Button1Click</span><span style="color: #007700">(</span><span style="color: #0000BB">Sender</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">TObject</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp;</span><span style="color: #007700">var<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;TargetHandle&nbsp;</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">THandle</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;ProcessBasicInfo&nbsp;</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">PROCESS_BASIC_INFORMATION</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;length</span><span style="color: #007700">:</span><span style="color: #0000BB">cardinal</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;buf&nbsp;</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">PAnsiChar</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;EB&nbsp;</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">PEB</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;buffer&nbsp;</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">byte</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">begin<br /> &nbsp; &nbsp;TargetHandle&nbsp;</span><span style="color: #007700">:=&nbsp;</span><span style="color: #0000BB">findwindow</span><span style="color: #007700">(</span><span style="color: #0000BB">nil</span><span style="color: #007700">,</span><span style="color: #DD0000">'Target'</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;memo1</span><span style="color: #007700">.</span><span style="color: #0000BB">Lines</span><span style="color: #007700">.</span><span style="color: #0000BB">add</span><span style="color: #007700">(</span><span style="color: #DD0000">'handle&nbsp;:&nbsp;&#36;'&nbsp;</span><span style="color: #007700">+</span><span style="color: #0000BB">IntToHex</span><span style="color: #007700">(</span><span style="color: #0000BB">TargetHandle</span><span style="color: #007700">,</span><span style="color: #0000BB">8</span><span style="color: #007700">));<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;NtQueryInformationProcess</span><span style="color: #007700">(</span><span style="color: #0000BB">TargetHandle</span><span style="color: #007700">,</span><span style="color: #0000BB">0</span><span style="color: #007700">,@</span><span style="color: #0000BB">ProcessBasicInfo</span><span style="color: #007700">,</span><span style="color: #0000BB">sizeof</span><span style="color: #007700">(</span><span style="color: #0000BB">ProcessBasicInfo</span><span style="color: #007700">),@</span><span style="color: #0000BB">length</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;memo1</span><span style="color: #007700">.</span><span style="color: #0000BB">lines</span><span style="color: #007700">.</span><span style="color: #0000BB">Add</span><span style="color: #007700">(</span><span style="color: #DD0000">'Pointer&nbsp;to&nbsp;PEB &nbsp;:&nbsp;&#36;'&nbsp;</span><span style="color: #007700">+&nbsp;</span><span style="color: #0000BB">Format</span><span style="color: #007700">(</span><span style="color: #DD0000">'%p'</span><span style="color: #007700">,&nbsp;[</span><span style="color: #0000BB">ProcessBasicInfo</span><span style="color: #007700">.</span><span style="color: #0000BB">PebBaseAddress</span><span style="color: #007700">]));<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;ReadProcessMemory</span><span style="color: #007700">(</span><span style="color: #0000BB">TargetHandle</span><span style="color: #007700">,&nbsp;@</span><span style="color: #0000BB">ProcessBasicInfo</span><span style="color: #007700">.</span><span style="color: #0000BB">PebBaseAddress</span><span style="color: #007700">,&nbsp;@</span><span style="color: #0000BB">EB</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">sizeof</span><span style="color: #007700">(</span><span style="color: #0000BB">PEB</span><span style="color: #007700">),&nbsp;</span><span style="color: #0000BB">length</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;Memo1</span><span style="color: #007700">.</span><span style="color: #0000BB">Lines</span><span style="color: #007700">.</span><span style="color: #0000BB">Add</span><span style="color: #007700">(</span><span style="color: #DD0000">'Being&nbsp;Debugged&nbsp;:&nbsp;'&nbsp;</span><span style="color: #007700">+&nbsp;</span><span style="color: #0000BB">IntToStr</span><span style="color: #007700">(</span><span style="color: #0000BB">EB</span><span style="color: #007700">.</span><span style="color: #0000BB">BeingDebugged</span><span style="color: #007700">));<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;end</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">end</span><span style="color: #007700">.&nbsp;<br /></span></code></div></div></div></div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[إستدعاء & إستخدام الدالة ZwTerminateProcess من User Mode]]></title>
			<link>https://delphi4arab.net/forum/showthread.php?tid=9594</link>
			<pubDate>Sun, 22 Jul 2018 09:26:33 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://delphi4arab.net/forum/member.php?action=profile&uid=925">Agmcz</a>]]></dc:creator>
			<guid isPermaLink="false">https://delphi4arab.net/forum/showthread.php?tid=9594</guid>
			<description><![CDATA[السلام عليكم ورحمة الله وبركاته<br />
<br />
إستدعاء دوال Native API مباشرة من User Mode بدون تصريح<br />
بالإعتماد على Syscall Number<br />
<br />
ومنه إجراء لإستخدام الدالة ZwTerminateProcess مع دعم متعدد لأنظمة التشغيل (XP/ 7/ 8/ 8.1/ 10 Win 32Bit)<br />
تم التجربة على كل من الأنظمة (XP/7/8.1/10)<br />
<br />
إقباس الفكرة كان من هنا <a href="http://www.delphi4arab.net/forum/showthread.php?tid=2704" target="_blank" rel="noopener" class="mycode_url">إستدعاء &amp; إستخدام Native Api من الـ User Mode</a><br />
<br />
<div class="codeblock phpcodeblock"><div class="title">PHP كود :</div><div class="body"><div dir="ltr"><code><span style="color: #007700">function&nbsp;</span><span style="color: #0000BB">ZwTerminateProcess</span><span style="color: #007700">(</span><span style="color: #0000BB">hProcess</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">DWORD</span><span style="color: #007700">;&nbsp;</span><span style="color: #0000BB">uCode</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">DWORD</span><span style="color: #007700">):&nbsp;</span><span style="color: #0000BB">NTSTATUS</span><span style="color: #007700">;&nbsp;</span><span style="color: #0000BB">stdcall</span><span style="color: #007700">;&nbsp;</span><span style="color: #0000BB">assembler</span><span style="color: #007700">;<br />{<br />&nbsp;&nbsp;</span><span style="color: #0000BB">Coded&nbsp;By&nbsp;Agmcz<br />&nbsp;&nbsp;Support&nbsp;</span><span style="color: #007700">for&nbsp;</span><span style="color: #0000BB">all&nbsp;operating&nbsp;systems&nbsp;</span><span style="color: #007700">[</span><span style="color: #0000BB">XP</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">7</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">8</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">8.1</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">10</span><span style="color: #007700">;&nbsp;</span><span style="color: #0000BB">32bit</span><span style="color: #007700">]<br />&nbsp;&nbsp;</span><span style="color: #0000BB">Tested&nbsp;on&nbsp;Windows&nbsp;XP</span><span style="color: #007700">/</span><span style="color: #0000BB">7</span><span style="color: #007700">/</span><span style="color: #0000BB">8.1</span><span style="color: #007700">/</span><span style="color: #0000BB">10.<br /></span><span style="color: #007700">}<br /></span><span style="color: #0000BB">asm<br /></span><span style="color: #007700">{</span><span style="color: #0000BB">&#36;IFDEF&nbsp;WIN32</span><span style="color: #007700">}<br />&nbsp;&nbsp;</span><span style="color: #0000BB">MOV&nbsp;EAX</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">FS</span><span style="color: #007700">:[</span><span style="color: #0000BB">&#36;C0</span><span style="color: #007700">]<br />&nbsp;&nbsp;</span><span style="color: #0000BB">CMP&nbsp;EAX</span><span style="color: #007700">,&nbsp;&#36;</span><span style="color: #0000BB">0<br />&nbsp;&nbsp;JNZ&nbsp;</span><span style="color: #007700">@Exit<br />&nbsp;&nbsp;</span><span style="color: #0000BB">MOV&nbsp;EAX</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">FS</span><span style="color: #007700">:[&#36;</span><span style="color: #0000BB">30</span><span style="color: #007700">]<br />&nbsp;&nbsp;</span><span style="color: #0000BB">MOV&nbsp;EAX</span><span style="color: #007700">,&nbsp;[</span><span style="color: #0000BB">EAX</span><span style="color: #007700">+</span><span style="color: #0000BB">&#36;A4</span><span style="color: #007700">]<br />&nbsp;&nbsp;</span><span style="color: #0000BB">SUB&nbsp;EAX</span><span style="color: #007700">,&nbsp;&#36;</span><span style="color: #0000BB">5<br />&nbsp;&nbsp;JE&nbsp;</span><span style="color: #007700">@</span><span style="color: #0000BB">WinXP<br />&nbsp;&nbsp;DEC&nbsp;EAX<br />&nbsp;&nbsp;JE&nbsp;</span><span style="color: #007700">@</span><span style="color: #0000BB">Win8_81<br />&nbsp;&nbsp;SUB&nbsp;EAX</span><span style="color: #007700">,&nbsp;&#36;</span><span style="color: #0000BB">4<br />&nbsp;&nbsp;JNE&nbsp;</span><span style="color: #007700">@</span><span style="color: #0000BB">Sys<br />&nbsp;&nbsp;MOV&nbsp;EAX</span><span style="color: #007700">,&nbsp;&#36;</span><span style="color: #0000BB">0024<br />&nbsp;&nbsp;JMP&nbsp;</span><span style="color: #007700">@</span><span style="color: #0000BB">Sys<br />&nbsp;&nbsp;</span><span style="color: #007700">@</span><span style="color: #0000BB">Win8_81</span><span style="color: #007700">:<br />&nbsp;&nbsp;</span><span style="color: #0000BB">MOV&nbsp;EAX</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">EBX<br />&nbsp;&nbsp;MOV&nbsp;EAX</span><span style="color: #007700">,&nbsp;[</span><span style="color: #0000BB">EAX</span><span style="color: #007700">+</span><span style="color: #0000BB">&#36;A8</span><span style="color: #007700">]<br />&nbsp;&nbsp;</span><span style="color: #0000BB">DEC&nbsp;EAX<br />&nbsp;&nbsp;JE&nbsp;</span><span style="color: #007700">@</span><span style="color: #0000BB">Win7<br />&nbsp;&nbsp;DEC&nbsp;EAX<br />&nbsp;&nbsp;SUB&nbsp;EAX</span><span style="color: #007700">,&nbsp;&#36;</span><span style="color: #0000BB">2<br />&nbsp;&nbsp;JAE&nbsp;</span><span style="color: #007700">@</span><span style="color: #0000BB">Sys<br />&nbsp;&nbsp;MOV&nbsp;EAX</span><span style="color: #007700">,&nbsp;&#36;</span><span style="color: #0000BB">0023<br />&nbsp;&nbsp;JMP&nbsp;</span><span style="color: #007700">@</span><span style="color: #0000BB">Sys<br />&nbsp;&nbsp;</span><span style="color: #007700">@</span><span style="color: #0000BB">Win7</span><span style="color: #007700">:<br />&nbsp;&nbsp;</span><span style="color: #0000BB">MOV&nbsp;EAX</span><span style="color: #007700">,&nbsp;&#36;</span><span style="color: #0000BB">0172<br />&nbsp;&nbsp;JMP&nbsp;</span><span style="color: #007700">@</span><span style="color: #0000BB">Sys<br />&nbsp;&nbsp;</span><span style="color: #007700">@</span><span style="color: #0000BB">WinXP</span><span style="color: #007700">:<br />&nbsp;&nbsp;</span><span style="color: #0000BB">MOV&nbsp;EAX</span><span style="color: #007700">,&nbsp;&#36;</span><span style="color: #0000BB">0101<br />&nbsp;&nbsp;</span><span style="color: #007700">@</span><span style="color: #0000BB">Sys</span><span style="color: #007700">:<br />&nbsp;&nbsp;</span><span style="color: #0000BB">LEA&nbsp;EDX</span><span style="color: #007700">,[</span><span style="color: #0000BB">EBP</span><span style="color: #007700">+&#36;</span><span style="color: #0000BB">8</span><span style="color: #007700">]<br />&nbsp;&nbsp;</span><span style="color: #0000BB">INT&nbsp;</span><span style="color: #007700">&#36;</span><span style="color: #0000BB">2E<br />&nbsp;&nbsp;</span><span style="color: #007700">@Exit:<br />{</span><span style="color: #0000BB">&#36;ENDIF</span><span style="color: #007700">}<br /></span><span style="color: #0000BB">end</span><span style="color: #007700">;&nbsp;<br /></span></code></div></div></div>]]></description>
			<content:encoded><![CDATA[السلام عليكم ورحمة الله وبركاته<br />
<br />
إستدعاء دوال Native API مباشرة من User Mode بدون تصريح<br />
بالإعتماد على Syscall Number<br />
<br />
ومنه إجراء لإستخدام الدالة ZwTerminateProcess مع دعم متعدد لأنظمة التشغيل (XP/ 7/ 8/ 8.1/ 10 Win 32Bit)<br />
تم التجربة على كل من الأنظمة (XP/7/8.1/10)<br />
<br />
إقباس الفكرة كان من هنا <a href="http://www.delphi4arab.net/forum/showthread.php?tid=2704" target="_blank" rel="noopener" class="mycode_url">إستدعاء &amp; إستخدام Native Api من الـ User Mode</a><br />
<br />
<div class="codeblock phpcodeblock"><div class="title">PHP كود :</div><div class="body"><div dir="ltr"><code><span style="color: #007700">function&nbsp;</span><span style="color: #0000BB">ZwTerminateProcess</span><span style="color: #007700">(</span><span style="color: #0000BB">hProcess</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">DWORD</span><span style="color: #007700">;&nbsp;</span><span style="color: #0000BB">uCode</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">DWORD</span><span style="color: #007700">):&nbsp;</span><span style="color: #0000BB">NTSTATUS</span><span style="color: #007700">;&nbsp;</span><span style="color: #0000BB">stdcall</span><span style="color: #007700">;&nbsp;</span><span style="color: #0000BB">assembler</span><span style="color: #007700">;<br />{<br />&nbsp;&nbsp;</span><span style="color: #0000BB">Coded&nbsp;By&nbsp;Agmcz<br />&nbsp;&nbsp;Support&nbsp;</span><span style="color: #007700">for&nbsp;</span><span style="color: #0000BB">all&nbsp;operating&nbsp;systems&nbsp;</span><span style="color: #007700">[</span><span style="color: #0000BB">XP</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">7</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">8</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">8.1</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">10</span><span style="color: #007700">;&nbsp;</span><span style="color: #0000BB">32bit</span><span style="color: #007700">]<br />&nbsp;&nbsp;</span><span style="color: #0000BB">Tested&nbsp;on&nbsp;Windows&nbsp;XP</span><span style="color: #007700">/</span><span style="color: #0000BB">7</span><span style="color: #007700">/</span><span style="color: #0000BB">8.1</span><span style="color: #007700">/</span><span style="color: #0000BB">10.<br /></span><span style="color: #007700">}<br /></span><span style="color: #0000BB">asm<br /></span><span style="color: #007700">{</span><span style="color: #0000BB">&#36;IFDEF&nbsp;WIN32</span><span style="color: #007700">}<br />&nbsp;&nbsp;</span><span style="color: #0000BB">MOV&nbsp;EAX</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">FS</span><span style="color: #007700">:[</span><span style="color: #0000BB">&#36;C0</span><span style="color: #007700">]<br />&nbsp;&nbsp;</span><span style="color: #0000BB">CMP&nbsp;EAX</span><span style="color: #007700">,&nbsp;&#36;</span><span style="color: #0000BB">0<br />&nbsp;&nbsp;JNZ&nbsp;</span><span style="color: #007700">@Exit<br />&nbsp;&nbsp;</span><span style="color: #0000BB">MOV&nbsp;EAX</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">FS</span><span style="color: #007700">:[&#36;</span><span style="color: #0000BB">30</span><span style="color: #007700">]<br />&nbsp;&nbsp;</span><span style="color: #0000BB">MOV&nbsp;EAX</span><span style="color: #007700">,&nbsp;[</span><span style="color: #0000BB">EAX</span><span style="color: #007700">+</span><span style="color: #0000BB">&#36;A4</span><span style="color: #007700">]<br />&nbsp;&nbsp;</span><span style="color: #0000BB">SUB&nbsp;EAX</span><span style="color: #007700">,&nbsp;&#36;</span><span style="color: #0000BB">5<br />&nbsp;&nbsp;JE&nbsp;</span><span style="color: #007700">@</span><span style="color: #0000BB">WinXP<br />&nbsp;&nbsp;DEC&nbsp;EAX<br />&nbsp;&nbsp;JE&nbsp;</span><span style="color: #007700">@</span><span style="color: #0000BB">Win8_81<br />&nbsp;&nbsp;SUB&nbsp;EAX</span><span style="color: #007700">,&nbsp;&#36;</span><span style="color: #0000BB">4<br />&nbsp;&nbsp;JNE&nbsp;</span><span style="color: #007700">@</span><span style="color: #0000BB">Sys<br />&nbsp;&nbsp;MOV&nbsp;EAX</span><span style="color: #007700">,&nbsp;&#36;</span><span style="color: #0000BB">0024<br />&nbsp;&nbsp;JMP&nbsp;</span><span style="color: #007700">@</span><span style="color: #0000BB">Sys<br />&nbsp;&nbsp;</span><span style="color: #007700">@</span><span style="color: #0000BB">Win8_81</span><span style="color: #007700">:<br />&nbsp;&nbsp;</span><span style="color: #0000BB">MOV&nbsp;EAX</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">EBX<br />&nbsp;&nbsp;MOV&nbsp;EAX</span><span style="color: #007700">,&nbsp;[</span><span style="color: #0000BB">EAX</span><span style="color: #007700">+</span><span style="color: #0000BB">&#36;A8</span><span style="color: #007700">]<br />&nbsp;&nbsp;</span><span style="color: #0000BB">DEC&nbsp;EAX<br />&nbsp;&nbsp;JE&nbsp;</span><span style="color: #007700">@</span><span style="color: #0000BB">Win7<br />&nbsp;&nbsp;DEC&nbsp;EAX<br />&nbsp;&nbsp;SUB&nbsp;EAX</span><span style="color: #007700">,&nbsp;&#36;</span><span style="color: #0000BB">2<br />&nbsp;&nbsp;JAE&nbsp;</span><span style="color: #007700">@</span><span style="color: #0000BB">Sys<br />&nbsp;&nbsp;MOV&nbsp;EAX</span><span style="color: #007700">,&nbsp;&#36;</span><span style="color: #0000BB">0023<br />&nbsp;&nbsp;JMP&nbsp;</span><span style="color: #007700">@</span><span style="color: #0000BB">Sys<br />&nbsp;&nbsp;</span><span style="color: #007700">@</span><span style="color: #0000BB">Win7</span><span style="color: #007700">:<br />&nbsp;&nbsp;</span><span style="color: #0000BB">MOV&nbsp;EAX</span><span style="color: #007700">,&nbsp;&#36;</span><span style="color: #0000BB">0172<br />&nbsp;&nbsp;JMP&nbsp;</span><span style="color: #007700">@</span><span style="color: #0000BB">Sys<br />&nbsp;&nbsp;</span><span style="color: #007700">@</span><span style="color: #0000BB">WinXP</span><span style="color: #007700">:<br />&nbsp;&nbsp;</span><span style="color: #0000BB">MOV&nbsp;EAX</span><span style="color: #007700">,&nbsp;&#36;</span><span style="color: #0000BB">0101<br />&nbsp;&nbsp;</span><span style="color: #007700">@</span><span style="color: #0000BB">Sys</span><span style="color: #007700">:<br />&nbsp;&nbsp;</span><span style="color: #0000BB">LEA&nbsp;EDX</span><span style="color: #007700">,[</span><span style="color: #0000BB">EBP</span><span style="color: #007700">+&#36;</span><span style="color: #0000BB">8</span><span style="color: #007700">]<br />&nbsp;&nbsp;</span><span style="color: #0000BB">INT&nbsp;</span><span style="color: #007700">&#36;</span><span style="color: #0000BB">2E<br />&nbsp;&nbsp;</span><span style="color: #007700">@Exit:<br />{</span><span style="color: #0000BB">&#36;ENDIF</span><span style="color: #007700">}<br /></span><span style="color: #0000BB">end</span><span style="color: #007700">;&nbsp;<br /></span></code></div></div></div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[الحصول على اسم الـ cpu]]></title>
			<link>https://delphi4arab.net/forum/showthread.php?tid=7869</link>
			<pubDate>Sat, 21 May 2016 20:26:11 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://delphi4arab.net/forum/member.php?action=profile&uid=356">أبو معاذ</a>]]></dc:creator>
			<guid isPermaLink="false">https://delphi4arab.net/forum/showthread.php?tid=7869</guid>
			<description><![CDATA[السلام عليكم ورحمة الله وبركاته ،<br />
كما هو مشار إليه في العنوان :<br />
وجدتها ، استفدت منها ، قلت لعل هناك من يستفيد منها ، فنقلتها لكم : <img src="https://delphi4arab.net/forum/images/smilies/blush.png" alt="Blush" title="Blush" class="smilie smilie_12" /> <br />
<br />
<div class="codeblock"><div class="title">كود :</div><div class="body" dir="ltr"><code>function CPUname: string; 
var 
  Reg: TRegistry;
begin 
  CPUname := ''; 
  Reg := TRegistry.Create; 
  try 
    Reg.RootKey := HKEY_LOCAL_MACHINE; 
    if Reg.OpenKey('&#92;Hardware&#92;Description&#92;System&#92;CentralProcessor&#92;0', False) then 
      CPUname := Reg.ReadString('Identifier'); 
  finally 
    Reg.Free; 
  end; 
end;</code></div></div>]]></description>
			<content:encoded><![CDATA[السلام عليكم ورحمة الله وبركاته ،<br />
كما هو مشار إليه في العنوان :<br />
وجدتها ، استفدت منها ، قلت لعل هناك من يستفيد منها ، فنقلتها لكم : <img src="https://delphi4arab.net/forum/images/smilies/blush.png" alt="Blush" title="Blush" class="smilie smilie_12" /> <br />
<br />
<div class="codeblock"><div class="title">كود :</div><div class="body" dir="ltr"><code>function CPUname: string; 
var 
  Reg: TRegistry;
begin 
  CPUname := ''; 
  Reg := TRegistry.Create; 
  try 
    Reg.RootKey := HKEY_LOCAL_MACHINE; 
    if Reg.OpenKey('&#92;Hardware&#92;Description&#92;System&#92;CentralProcessor&#92;0', False) then 
      CPUname := Reg.ReadString('Identifier'); 
  finally 
    Reg.Free; 
  end; 
end;</code></div></div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[دالة التعرف على رقم التلسلي الفزيائي القرص الصلب]]></title>
			<link>https://delphi4arab.net/forum/showthread.php?tid=7781</link>
			<pubDate>Sun, 01 May 2016 09:52:14 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://delphi4arab.net/forum/member.php?action=profile&uid=356">أبو معاذ</a>]]></dc:creator>
			<guid isPermaLink="false">https://delphi4arab.net/forum/showthread.php?tid=7781</guid>
			<description><![CDATA[السلام عليكم ورحمة الله وبركاته ،<br />
منذ مدة و أنا أبحث عن دالة استخراج رقم القرص الصلب ، دون استعمال مكون خارجي ،<br />
وجدت على الكود ، عبارة عن برنامج :  Console Application <br />
ولكن يمكن تطويره .<br />
جربته عندي في نظام الويندوز 7 64 بت ، تمت العملية بنجاح .<br />
أضعه هنا بين يدي إخواني ،<br />
و أرجو من الإخوة تجربته على جميع الأنظمة و أنواع القرص الصلب ، و إفادتنا بالنتيجة. <img src="https://delphi4arab.net/forum/images/smilies/lightbulb.png" alt="Idea" title="Idea" class="smilie smilie_18" /> <br />
<br />
<div class="codeblock"><div class="title">كود :</div><div class="body" dir="ltr"><code>program Project1;

{&#36;APPTYPE CONSOLE}

uses
  SysUtils,
  ActiveX,
  ComObj,
  Variants;
var MonSerie1 , MonSerie : string ;
function GetDiskSerial(const Drive:AnsiChar):string;
var
  FSWbemLocator  : OLEVariant;
  objWMIService  : OLEVariant;
  colDiskDrives  : OLEVariant;
  colLogicalDisks: OLEVariant;
  colPartitions  : OLEVariant;
  objDiskDrive   : OLEVariant;
  objPartition   : OLEVariant;
  objLogicalDisk : OLEVariant;
  oEnumDiskDrive : IEnumvariant;
  oEnumPartition : IEnumvariant;
  oEnumLogical   : IEnumvariant;
  iValue         : LongWord;
  DeviceID       : string;
begin;
  Result:='';
  FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
  objWMIService := FSWbemLocator.ConnectServer('localhost', 'root&#92;CIMV2', '', ''); //Connect to the WMI
  colDiskDrives := objWMIService.ExecQuery('SELECT * FROM Win32_DiskDrive','WQL',0);
  oEnumDiskDrive:= IUnknown(colDiskDrives._NewEnum) as IEnumVariant;
  while oEnumDiskDrive.Next(1, objDiskDrive, iValue) = 0 do
  begin
   DeviceID        := StringReplace(objDiskDrive.DeviceID,'&#92;','&#92;&#92;',[rfReplaceAll]); //Escape the `&#92;` chars in the DeviceID value because the '&#92;' is a reserved character in WMI.
   colPartitions   := objWMIService.ExecQuery(Format('ASSOCIATORS OF {Win32_DiskDrive.DeviceID="%s"} WHERE AssocClass = Win32_DiskDriveToDiskPartition',[DeviceID]));//link the Win32_DiskDrive class with the Win32_DiskDriveToDiskPartition class
   oEnumPartition  := IUnknown(colPartitions._NewEnum) as IEnumVariant;
    while oEnumPartition.Next(1, objPartition, iValue) = 0 do
     begin
        colLogicalDisks := objWMIService.ExecQuery('ASSOCIATORS OF {Win32_DiskPartition.DeviceID="'+objPartition.DeviceID+'"} WHERE AssocClass = Win32_LogicalDiskToPartition'); //link the Win32_DiskPartition class with theWin32_LogicalDiskToPartition class.
        oEnumLogical  := IUnknown(colLogicalDisks._NewEnum) as IEnumVariant;
          while oEnumLogical.Next(1, objLogicalDisk, iValue) = 0 do
          begin
            if objLogicalDisk.DeviceID=(Drive+':')  then //compare the device id
            begin
                Result:=objDiskDrive.SerialNumber;
                Exit;
            end;
           objLogicalDisk:=Unassigned;
          end;
        objPartition:=Unassigned;
     end;
  end;
end;


begin
 try
    CoInitialize(nil);
    try
      MonSerie1 := GetDiskSerial('C');
      MonSerie := TrimLeft(TrimRight(MonSerie1));
      Writeln(MonSerie);
      Readln;
    finally
    CoUninitialize;
    end;
 except
    on E:Exception do
    begin
        Writeln(E.Classname, ':', E.Message);
        Readln;
    end;
  end;
end.</code></div></div>]]></description>
			<content:encoded><![CDATA[السلام عليكم ورحمة الله وبركاته ،<br />
منذ مدة و أنا أبحث عن دالة استخراج رقم القرص الصلب ، دون استعمال مكون خارجي ،<br />
وجدت على الكود ، عبارة عن برنامج :  Console Application <br />
ولكن يمكن تطويره .<br />
جربته عندي في نظام الويندوز 7 64 بت ، تمت العملية بنجاح .<br />
أضعه هنا بين يدي إخواني ،<br />
و أرجو من الإخوة تجربته على جميع الأنظمة و أنواع القرص الصلب ، و إفادتنا بالنتيجة. <img src="https://delphi4arab.net/forum/images/smilies/lightbulb.png" alt="Idea" title="Idea" class="smilie smilie_18" /> <br />
<br />
<div class="codeblock"><div class="title">كود :</div><div class="body" dir="ltr"><code>program Project1;

{&#36;APPTYPE CONSOLE}

uses
  SysUtils,
  ActiveX,
  ComObj,
  Variants;
var MonSerie1 , MonSerie : string ;
function GetDiskSerial(const Drive:AnsiChar):string;
var
  FSWbemLocator  : OLEVariant;
  objWMIService  : OLEVariant;
  colDiskDrives  : OLEVariant;
  colLogicalDisks: OLEVariant;
  colPartitions  : OLEVariant;
  objDiskDrive   : OLEVariant;
  objPartition   : OLEVariant;
  objLogicalDisk : OLEVariant;
  oEnumDiskDrive : IEnumvariant;
  oEnumPartition : IEnumvariant;
  oEnumLogical   : IEnumvariant;
  iValue         : LongWord;
  DeviceID       : string;
begin;
  Result:='';
  FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
  objWMIService := FSWbemLocator.ConnectServer('localhost', 'root&#92;CIMV2', '', ''); //Connect to the WMI
  colDiskDrives := objWMIService.ExecQuery('SELECT * FROM Win32_DiskDrive','WQL',0);
  oEnumDiskDrive:= IUnknown(colDiskDrives._NewEnum) as IEnumVariant;
  while oEnumDiskDrive.Next(1, objDiskDrive, iValue) = 0 do
  begin
   DeviceID        := StringReplace(objDiskDrive.DeviceID,'&#92;','&#92;&#92;',[rfReplaceAll]); //Escape the `&#92;` chars in the DeviceID value because the '&#92;' is a reserved character in WMI.
   colPartitions   := objWMIService.ExecQuery(Format('ASSOCIATORS OF {Win32_DiskDrive.DeviceID="%s"} WHERE AssocClass = Win32_DiskDriveToDiskPartition',[DeviceID]));//link the Win32_DiskDrive class with the Win32_DiskDriveToDiskPartition class
   oEnumPartition  := IUnknown(colPartitions._NewEnum) as IEnumVariant;
    while oEnumPartition.Next(1, objPartition, iValue) = 0 do
     begin
        colLogicalDisks := objWMIService.ExecQuery('ASSOCIATORS OF {Win32_DiskPartition.DeviceID="'+objPartition.DeviceID+'"} WHERE AssocClass = Win32_LogicalDiskToPartition'); //link the Win32_DiskPartition class with theWin32_LogicalDiskToPartition class.
        oEnumLogical  := IUnknown(colLogicalDisks._NewEnum) as IEnumVariant;
          while oEnumLogical.Next(1, objLogicalDisk, iValue) = 0 do
          begin
            if objLogicalDisk.DeviceID=(Drive+':')  then //compare the device id
            begin
                Result:=objDiskDrive.SerialNumber;
                Exit;
            end;
           objLogicalDisk:=Unassigned;
          end;
        objPartition:=Unassigned;
     end;
  end;
end;


begin
 try
    CoInitialize(nil);
    try
      MonSerie1 := GetDiskSerial('C');
      MonSerie := TrimLeft(TrimRight(MonSerie1));
      Writeln(MonSerie);
      Readln;
    finally
    CoUninitialize;
    end;
 except
    on E:Exception do
    begin
        Writeln(E.Classname, ':', E.Message);
        Readln;
    end;
  end;
end.</code></div></div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[أمثلة للتعامل مع النظام]]></title>
			<link>https://delphi4arab.net/forum/showthread.php?tid=3941</link>
			<pubDate>Fri, 02 Mar 2012 11:33:22 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://delphi4arab.net/forum/member.php?action=profile&uid=161">kachwahed</a>]]></dc:creator>
			<guid isPermaLink="false">https://delphi4arab.net/forum/showthread.php?tid=3941</guid>
			<description><![CDATA[<span style="color: Black;" class="mycode_color">السلام عليكم<br />
كنت أبحث ملفات مصدرية مشابهة لعمل الأداة DevCon <br />
<div class="codeblock"><div class="title">كود :</div><div class="body" dir="ltr"><code>http://support.microsoft.com/kb/311272</code></div></div>فوجدت بعض الأمثلة (تبدو قديمة) لـ Markus Fuchs على <span style="color: Blue;" class="mycode_color">دلفي 5</span> <img src="https://delphi4arab.net/forum/images/smilies/smile.png" alt="Smile" title="Smile" class="smilie smilie_1" /><br />
<div class="codeblock"><div class="title">كود :</div><div class="body" dir="ltr"><code>http://www.yeahware.com/</code></div></div>أصلحت بعض الهفوات مثل:<br />
<div class="codeblock"><div class="title">كود :</div><div class="body" dir="ltr"><code>var
  vi: TOSVersionInfo;
begin
  vi.dwOSVersionInfoSize := SizeOf(TOSVersionInfo);//&lt;- Initialize vi
  GetVersionEx(vi);</code></div></div>وعدلت عليها لتوافق دلفي 7<br />
حذفت الانذارات في بعض الأمثلة لتسريع الـ Compile<br />
حذف التطبيقات وتركت السورس في المرفق<br />
ينقص من هذا:<br />
<div class="codeblock"><div class="title">كود :</div><div class="body" dir="ltr"><code>http://www.yeahware.com/download/enable.zip</code></div></div>لأنه يستخدم نسخة معدلة من SetupAPI مختلفة وثقيلة <img src="https://delphi4arab.net/forum/images/smilies/smile.png" alt="Smile" title="Smile" class="smilie smilie_1" /><br />
بالتوفيق.</span><br />
<br />
<img src="https://delphi4arab.net/forum/images/attachtypes/" title="7zip Compressed File" border="0" alt=".7z" />
&nbsp;&nbsp;<a href="attachment.php?aid=2083" target="_blank" title="">MarkusExamples.7z</a> (الحجم : 312.87 ك ب / التحميلات : 419)
]]></description>
			<content:encoded><![CDATA[<span style="color: Black;" class="mycode_color">السلام عليكم<br />
كنت أبحث ملفات مصدرية مشابهة لعمل الأداة DevCon <br />
<div class="codeblock"><div class="title">كود :</div><div class="body" dir="ltr"><code>http://support.microsoft.com/kb/311272</code></div></div>فوجدت بعض الأمثلة (تبدو قديمة) لـ Markus Fuchs على <span style="color: Blue;" class="mycode_color">دلفي 5</span> <img src="https://delphi4arab.net/forum/images/smilies/smile.png" alt="Smile" title="Smile" class="smilie smilie_1" /><br />
<div class="codeblock"><div class="title">كود :</div><div class="body" dir="ltr"><code>http://www.yeahware.com/</code></div></div>أصلحت بعض الهفوات مثل:<br />
<div class="codeblock"><div class="title">كود :</div><div class="body" dir="ltr"><code>var
  vi: TOSVersionInfo;
begin
  vi.dwOSVersionInfoSize := SizeOf(TOSVersionInfo);//&lt;- Initialize vi
  GetVersionEx(vi);</code></div></div>وعدلت عليها لتوافق دلفي 7<br />
حذفت الانذارات في بعض الأمثلة لتسريع الـ Compile<br />
حذف التطبيقات وتركت السورس في المرفق<br />
ينقص من هذا:<br />
<div class="codeblock"><div class="title">كود :</div><div class="body" dir="ltr"><code>http://www.yeahware.com/download/enable.zip</code></div></div>لأنه يستخدم نسخة معدلة من SetupAPI مختلفة وثقيلة <img src="https://delphi4arab.net/forum/images/smilies/smile.png" alt="Smile" title="Smile" class="smilie smilie_1" /><br />
بالتوفيق.</span><br />
<br />
<img src="https://delphi4arab.net/forum/images/attachtypes/" title="7zip Compressed File" border="0" alt=".7z" />
&nbsp;&nbsp;<a href="attachment.php?aid=2083" target="_blank" title="">MarkusExamples.7z</a> (الحجم : 312.87 ك ب / التحميلات : 419)
]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[اتفاقيات الاستدعاء Calling Conventions مع المناهج]]></title>
			<link>https://delphi4arab.net/forum/showthread.php?tid=3574</link>
			<pubDate>Mon, 07 Nov 2011 15:40:16 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://delphi4arab.net/forum/member.php?action=profile&uid=161">kachwahed</a>]]></dc:creator>
			<guid isPermaLink="false">https://delphi4arab.net/forum/showthread.php?tid=3574</guid>
			<description><![CDATA[<span style="color: Black;" class="mycode_color">السلام عليكم ورحمة الله<br />
Calling Conventions أو "اتفاقيات الاستدعاء" (الترجمة مباشرة وحرفية وقد لا توحي بالمقصود)<br />
يقصد بها طريقة تمرير المعلمات (Parameters) إلى المناهج (Routine)<br />
<div class="codeblock"><div class="title">كود :</div><div class="body" dir="ltr"><code>http://en.wikipedia.org/wiki/Calling_convention</code></div></div>وهي في إصدارات دلفي 32bit خمسة شهيرة: register, pascal, cdecl, stdcall, safecall<br />
مثال تمرير باستخدام cdecl:<br />
<div class="codeblock"><div class="title">كود :</div><div class="body" dir="ltr"><code>function MyFunction(X, Y: Real): Real; [color=Blue]cdecl[/color];</code></div></div>من ملفات الـ Help في دلفي نستخلص ما يلي:<br />
تحدد طرق تمرير الملعمات (الباراميترات):<br />
1- ترتيب إرسال القيم (من اليمين إلى اليسار أو العكس)<br />
2- إزالة (أو عدم إزالة) المغيرات من المكدس (Stack) بعد الخروج من المنهج<br />
3- طريقة التعامل مع الاستثناءات وإصدار رسائل الأخطاء Exception<br />
4- موضع تخزين المعلمات (في المكدس أو في سجلات الـ CPU)<br />
<br />
التوجيه الافتراضي في دلفي هو register، إذا لم تكتب أي شيء فكأنك كتبت register بعد اسم المنهج.<br />
<br />
<br />
<span style="color: Blue;" class="mycode_color">التوجيه، 		ترتيب الإرسال،		المسؤول عن حذف المتغيرات،	موضع التخزين</span><br />
register	،        من اليسار إلى اليمين،	المنهج نفسه،					السجلات<br />
pascal،		من اليسار إلى اليمين،	المنهج نفسه،					المكدس<br />
cdecl،		من اليمين إلى اليسار،	مستدعي المنهج،				المكدس<br />
stdcall،		من اليمين إلى اليسار،	المنهج نفسه،					المكدس<br />
safecall،	        من اليمين إلى اليسار،	المنهج نفسه،					المكدس<br />
<br />
ملاحظات:<br />
- يستخدم التوجيه register حتى ثلاث سجلات لتخزين المعلمات، وهو أسرع عند التنفيذ طبعا<br />
- التوجيه safecall يستخدم لتوجيه رسائل الاستثناءات، في بيئة Windows يتم إشعار واجهات COM (التي تورث من IDispatch) لإثارة الاستثناءات<br />
- عند التعامل مع API يستخدم عادة stdcall أو safecall<br />
- توجيه pascal لا زال فعال لأغراض التوافقية (Compatibility)، في حين التوجيهات near و far و export لم تعد تعمل وتركت لنفس السبب (مخصصة لبيئة 16 bit).<br />
<br />
انتهى.<br />
<br />
Peter Below يشرح بشكل مماثل (بمثال) نفس الفكرة:<br />
<div class="codeblock"><div class="title">كود :</div><div class="body" dir="ltr"><code>http://www.swissdelphicenter.ch/torry/showcode.php?id=1233</code></div></div><br />
الآن شيء غريب!<br />
أعتقد أن ترتيب تمرير المعلمات ينبغي أن يتم التفصيل فيه<br />
صحيح إذا كتبنا:<br />
<div class="codeblock phpcodeblock"><div class="title">PHP كود :</div><div class="body"><div dir="ltr"><code><span style="color: #007700">function&nbsp;</span><span style="color: #0000BB">MyFunction</span><span style="color: #007700">(</span><span style="color: #0000BB">X</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">Y</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">Real</span><span style="color: #007700">):&nbsp;</span><span style="color: #0000BB">Real</span><span style="color: #007700">;&nbsp;</span><span style="color: #0000BB">register</span><span style="color: #007700">;&nbsp;<br /></span></code></div></div></div>فإن تمرير المعلمات سيكون من اليسار إلى اليمين<br />
أي: بدء بـ x ثم y وليس العكس<br />
لكن هذا من حيث وصول القيم إلى MyFunction (أي دفعها إلى المكدس) ولكن ليس من حيث جلب قيم X و Y<br />
يتضح ذلك إذا حاولنا مع دالتين تأتيان بقيمين X و Y<br />
<div class="codeblock phpcodeblock"><div class="title">PHP كود :</div><div class="body"><div dir="ltr"><code><span style="color: #007700">function&nbsp;</span><span style="color: #0000BB">MyFunction</span><span style="color: #007700">(</span><span style="color: #0000BB">getX</span><span style="color: #007700">(),&nbsp;</span><span style="color: #0000BB">getY</span><span style="color: #007700">():&nbsp;</span><span style="color: #0000BB">Real</span><span style="color: #007700">):&nbsp;</span><span style="color: #0000BB">Real</span><span style="color: #007700">;&nbsp;</span><span style="color: #0000BB">register</span><span style="color: #007700">;&nbsp;<br /></span></code></div></div></div>تخيل أن هناك أوامر تنفذ في getX() وgetY() أيهما سينفذ أولا!<br />
الذي لاحظت أن جميع التوجهات يُؤتى بها من اليمين إلى اليسار (ما عدا pascal)<br />
ثم توجه إلى المنهج كما هو مألوف<br />
المثال في المرفق يوضح الفكرة.<br />
<br />
إذا أخطأ في شيء فلا تترددوا بالتعقيب <img src="https://delphi4arab.net/forum/images/smilies/smile.png" alt="Smile" title="Smile" class="smilie smilie_1" /></span><br />
<br />
<img src="https://delphi4arab.net/forum/images/attachtypes/" title="7zip Compressed File" border="0" alt=".7z" />
&nbsp;&nbsp;<a href="attachment.php?aid=1936" target="_blank" title="">CallingConventions.7z</a> (الحجم : 531 بايت / التحميلات : 74)
]]></description>
			<content:encoded><![CDATA[<span style="color: Black;" class="mycode_color">السلام عليكم ورحمة الله<br />
Calling Conventions أو "اتفاقيات الاستدعاء" (الترجمة مباشرة وحرفية وقد لا توحي بالمقصود)<br />
يقصد بها طريقة تمرير المعلمات (Parameters) إلى المناهج (Routine)<br />
<div class="codeblock"><div class="title">كود :</div><div class="body" dir="ltr"><code>http://en.wikipedia.org/wiki/Calling_convention</code></div></div>وهي في إصدارات دلفي 32bit خمسة شهيرة: register, pascal, cdecl, stdcall, safecall<br />
مثال تمرير باستخدام cdecl:<br />
<div class="codeblock"><div class="title">كود :</div><div class="body" dir="ltr"><code>function MyFunction(X, Y: Real): Real; [color=Blue]cdecl[/color];</code></div></div>من ملفات الـ Help في دلفي نستخلص ما يلي:<br />
تحدد طرق تمرير الملعمات (الباراميترات):<br />
1- ترتيب إرسال القيم (من اليمين إلى اليسار أو العكس)<br />
2- إزالة (أو عدم إزالة) المغيرات من المكدس (Stack) بعد الخروج من المنهج<br />
3- طريقة التعامل مع الاستثناءات وإصدار رسائل الأخطاء Exception<br />
4- موضع تخزين المعلمات (في المكدس أو في سجلات الـ CPU)<br />
<br />
التوجيه الافتراضي في دلفي هو register، إذا لم تكتب أي شيء فكأنك كتبت register بعد اسم المنهج.<br />
<br />
<br />
<span style="color: Blue;" class="mycode_color">التوجيه، 		ترتيب الإرسال،		المسؤول عن حذف المتغيرات،	موضع التخزين</span><br />
register	،        من اليسار إلى اليمين،	المنهج نفسه،					السجلات<br />
pascal،		من اليسار إلى اليمين،	المنهج نفسه،					المكدس<br />
cdecl،		من اليمين إلى اليسار،	مستدعي المنهج،				المكدس<br />
stdcall،		من اليمين إلى اليسار،	المنهج نفسه،					المكدس<br />
safecall،	        من اليمين إلى اليسار،	المنهج نفسه،					المكدس<br />
<br />
ملاحظات:<br />
- يستخدم التوجيه register حتى ثلاث سجلات لتخزين المعلمات، وهو أسرع عند التنفيذ طبعا<br />
- التوجيه safecall يستخدم لتوجيه رسائل الاستثناءات، في بيئة Windows يتم إشعار واجهات COM (التي تورث من IDispatch) لإثارة الاستثناءات<br />
- عند التعامل مع API يستخدم عادة stdcall أو safecall<br />
- توجيه pascal لا زال فعال لأغراض التوافقية (Compatibility)، في حين التوجيهات near و far و export لم تعد تعمل وتركت لنفس السبب (مخصصة لبيئة 16 bit).<br />
<br />
انتهى.<br />
<br />
Peter Below يشرح بشكل مماثل (بمثال) نفس الفكرة:<br />
<div class="codeblock"><div class="title">كود :</div><div class="body" dir="ltr"><code>http://www.swissdelphicenter.ch/torry/showcode.php?id=1233</code></div></div><br />
الآن شيء غريب!<br />
أعتقد أن ترتيب تمرير المعلمات ينبغي أن يتم التفصيل فيه<br />
صحيح إذا كتبنا:<br />
<div class="codeblock phpcodeblock"><div class="title">PHP كود :</div><div class="body"><div dir="ltr"><code><span style="color: #007700">function&nbsp;</span><span style="color: #0000BB">MyFunction</span><span style="color: #007700">(</span><span style="color: #0000BB">X</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">Y</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">Real</span><span style="color: #007700">):&nbsp;</span><span style="color: #0000BB">Real</span><span style="color: #007700">;&nbsp;</span><span style="color: #0000BB">register</span><span style="color: #007700">;&nbsp;<br /></span></code></div></div></div>فإن تمرير المعلمات سيكون من اليسار إلى اليمين<br />
أي: بدء بـ x ثم y وليس العكس<br />
لكن هذا من حيث وصول القيم إلى MyFunction (أي دفعها إلى المكدس) ولكن ليس من حيث جلب قيم X و Y<br />
يتضح ذلك إذا حاولنا مع دالتين تأتيان بقيمين X و Y<br />
<div class="codeblock phpcodeblock"><div class="title">PHP كود :</div><div class="body"><div dir="ltr"><code><span style="color: #007700">function&nbsp;</span><span style="color: #0000BB">MyFunction</span><span style="color: #007700">(</span><span style="color: #0000BB">getX</span><span style="color: #007700">(),&nbsp;</span><span style="color: #0000BB">getY</span><span style="color: #007700">():&nbsp;</span><span style="color: #0000BB">Real</span><span style="color: #007700">):&nbsp;</span><span style="color: #0000BB">Real</span><span style="color: #007700">;&nbsp;</span><span style="color: #0000BB">register</span><span style="color: #007700">;&nbsp;<br /></span></code></div></div></div>تخيل أن هناك أوامر تنفذ في getX() وgetY() أيهما سينفذ أولا!<br />
الذي لاحظت أن جميع التوجهات يُؤتى بها من اليمين إلى اليسار (ما عدا pascal)<br />
ثم توجه إلى المنهج كما هو مألوف<br />
المثال في المرفق يوضح الفكرة.<br />
<br />
إذا أخطأ في شيء فلا تترددوا بالتعقيب <img src="https://delphi4arab.net/forum/images/smilies/smile.png" alt="Smile" title="Smile" class="smilie smilie_1" /></span><br />
<br />
<img src="https://delphi4arab.net/forum/images/attachtypes/" title="7zip Compressed File" border="0" alt=".7z" />
&nbsp;&nbsp;<a href="attachment.php?aid=1936" target="_blank" title="">CallingConventions.7z</a> (الحجم : 531 بايت / التحميلات : 74)
]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[إستدعاء & إستخدام Native Api من الـ User Mode]]></title>
			<link>https://delphi4arab.net/forum/showthread.php?tid=2704</link>
			<pubDate>Thu, 13 Jan 2011 17:42:17 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://delphi4arab.net/forum/member.php?action=profile&uid=190">TF6M</a>]]></dc:creator>
			<guid isPermaLink="false">https://delphi4arab.net/forum/showthread.php?tid=2704</guid>
			<description><![CDATA[<span style="color: Navy;" class="mycode_color"><span style="color: Black;" class="mycode_color">السلام عليكم و رحمة الله و بركاته</span><br />
<br />
- يمكن إستدعاء روتينات Nt</span><span style="color: Navy;" class="mycode_color"><span style="color: Red;" class="mycode_color">xxx  </span>من الـ User Mode , دون الحاجة إلى تصريح تصدير الدالة من <span style="color: Red;" class="mycode_color">NtDLL</span><br />
آلية العملية بسيطة , يتم الإنتهاء من الـ SysTem Call الى قلب النظام (Win32.sys &amp; NtosKrnl.exe)<br />
حيث يحدد طبيعة الإستدعاء (Gui or Native) , على أساس قيمة <span style="color: Red;" class="mycode_color">ServiceTable </span>(<a href="http://img146.imageshack.us/img146/4219/sst.gif" target="_blank" rel="noopener" class="mycode_url">.</a>)<br />
<br />
- يتم تمرير بيانات الإستدعاء عن طريق <span style="color: Red;" class="mycode_color">SysEnter </span>= &#36;2E  , تعتبر بوابة الكيرنل مود و كتعريف بسيط</span> <span style="color: Navy;" class="mycode_color"><br />
هي عبارة عن روتين ينفذ عن إستدعاء Ntxxx/Zwxxx  أو عند تنفيذ المقاطعة </span><span style="color: Navy;" class="mycode_color"><span style="color: Red;" class="mycode_color">Int &#36;2E</span></span><span style="color: Navy;" class="mycode_color"> من اليوزر مود</span><span style="color: Navy;" class="mycode_color">(<a href="http://img145.imageshack.us/img145/2189/downloadpw.png" target="_blank" rel="noopener" class="mycode_url">..</a>)</span><br />
<br />
<span style="color: Navy;" class="mycode_color">- للـ SysEnter , بارامتران الأول يسجل في EAX و الثاني في الـ EDX<br />
<span style="color: Red;" class="mycode_color">EAX </span>سيؤشر إلى ترتيب الدالة المستهدفية أو الموافقة لـ SysCall في ServiceTable<br />
<span style="color: Red;" class="mycode_color">EDX </span>سيؤشر إلى بارامترات الدالة المستهدفة المحجوزة في الـ Stack </span><br />
<br />
<span style="color: Navy;" class="mycode_color">- مثال , دالة</span> <span style="color: Red;" class="mycode_color">NtTerminateProcess </span><span style="color: Navy;" class="mycode_color">,</span> <span style="color: Navy;" class="mycode_color">تنقيح المكتبة NtDLL  بـ IDA Pro</span><br />
<div class="codeblock"><div class="title">كود :</div><div class="body" dir="ltr"><code>.text:7C91DE50                 public ZwTerminateProcess
.text:7C91DE50 ZwTerminateProcess proc near            
.text:7C91DE50                                         
.text:7C91DE50                 mov     eax, [COLOR=Red]101h[/COLOR]       ; NtTerminateProcess
.text:7C91DE55                 mov     edx, [COLOR=Red]7FFE0300h[/COLOR]
.text:7C91DE5A                 call    dword ptr [edx]
.text:7C91DE5C                 retn    8
.text:7C91DE5C ZwTerminateProcess endp</code></div></div><span style="color: Black;" class="mycode_color"><span style="color: Navy;" class="mycode_color">- الفكرة واضحة الآن , يكفي دفع ببرامترات الدالة :</span><br />
</span><div class="codeblock"><div class="title">كود :</div><div class="body" dir="ltr"><code>Asm
 push [COLOR=Blue]Dword(-1)[/COLOR]
 Push[COLOR=Blue] 0[/COLOR]
 mov  eax, [COLOR=Red]101h[/COLOR] // TerminateProcess
 mov  edx,[COLOR=Red]&#36;7FFE0300[/COLOR]
 call dword ptr [edx]
 ret  8
 End;</code></div></div><span style="color: Black;" class="mycode_color"><span style="color: Navy;" class="mycode_color">- الأن يمكن الإستغناء على إعادة تصريح التصدير &amp; مساحة أقل &amp; سرعة تنفيذ (Inline) .<br />
- أيضا يمكن إستغلال الطريقة من الكيرنل مود , لم أحضر مثال بعد </span></span><img src="http://www.delphi4arab.net/forum/images/icons/icon10.gif" loading="lazy"  alt="[صورة: icon10.gif]" class="mycode_img" /> .<br />
 <span style="color: Black;" class="mycode_color">بالتوفيق,,</span>]]></description>
			<content:encoded><![CDATA[<span style="color: Navy;" class="mycode_color"><span style="color: Black;" class="mycode_color">السلام عليكم و رحمة الله و بركاته</span><br />
<br />
- يمكن إستدعاء روتينات Nt</span><span style="color: Navy;" class="mycode_color"><span style="color: Red;" class="mycode_color">xxx  </span>من الـ User Mode , دون الحاجة إلى تصريح تصدير الدالة من <span style="color: Red;" class="mycode_color">NtDLL</span><br />
آلية العملية بسيطة , يتم الإنتهاء من الـ SysTem Call الى قلب النظام (Win32.sys &amp; NtosKrnl.exe)<br />
حيث يحدد طبيعة الإستدعاء (Gui or Native) , على أساس قيمة <span style="color: Red;" class="mycode_color">ServiceTable </span>(<a href="http://img146.imageshack.us/img146/4219/sst.gif" target="_blank" rel="noopener" class="mycode_url">.</a>)<br />
<br />
- يتم تمرير بيانات الإستدعاء عن طريق <span style="color: Red;" class="mycode_color">SysEnter </span>= &#36;2E  , تعتبر بوابة الكيرنل مود و كتعريف بسيط</span> <span style="color: Navy;" class="mycode_color"><br />
هي عبارة عن روتين ينفذ عن إستدعاء Ntxxx/Zwxxx  أو عند تنفيذ المقاطعة </span><span style="color: Navy;" class="mycode_color"><span style="color: Red;" class="mycode_color">Int &#36;2E</span></span><span style="color: Navy;" class="mycode_color"> من اليوزر مود</span><span style="color: Navy;" class="mycode_color">(<a href="http://img145.imageshack.us/img145/2189/downloadpw.png" target="_blank" rel="noopener" class="mycode_url">..</a>)</span><br />
<br />
<span style="color: Navy;" class="mycode_color">- للـ SysEnter , بارامتران الأول يسجل في EAX و الثاني في الـ EDX<br />
<span style="color: Red;" class="mycode_color">EAX </span>سيؤشر إلى ترتيب الدالة المستهدفية أو الموافقة لـ SysCall في ServiceTable<br />
<span style="color: Red;" class="mycode_color">EDX </span>سيؤشر إلى بارامترات الدالة المستهدفة المحجوزة في الـ Stack </span><br />
<br />
<span style="color: Navy;" class="mycode_color">- مثال , دالة</span> <span style="color: Red;" class="mycode_color">NtTerminateProcess </span><span style="color: Navy;" class="mycode_color">,</span> <span style="color: Navy;" class="mycode_color">تنقيح المكتبة NtDLL  بـ IDA Pro</span><br />
<div class="codeblock"><div class="title">كود :</div><div class="body" dir="ltr"><code>.text:7C91DE50                 public ZwTerminateProcess
.text:7C91DE50 ZwTerminateProcess proc near            
.text:7C91DE50                                         
.text:7C91DE50                 mov     eax, [COLOR=Red]101h[/COLOR]       ; NtTerminateProcess
.text:7C91DE55                 mov     edx, [COLOR=Red]7FFE0300h[/COLOR]
.text:7C91DE5A                 call    dword ptr [edx]
.text:7C91DE5C                 retn    8
.text:7C91DE5C ZwTerminateProcess endp</code></div></div><span style="color: Black;" class="mycode_color"><span style="color: Navy;" class="mycode_color">- الفكرة واضحة الآن , يكفي دفع ببرامترات الدالة :</span><br />
</span><div class="codeblock"><div class="title">كود :</div><div class="body" dir="ltr"><code>Asm
 push [COLOR=Blue]Dword(-1)[/COLOR]
 Push[COLOR=Blue] 0[/COLOR]
 mov  eax, [COLOR=Red]101h[/COLOR] // TerminateProcess
 mov  edx,[COLOR=Red]&#36;7FFE0300[/COLOR]
 call dword ptr [edx]
 ret  8
 End;</code></div></div><span style="color: Black;" class="mycode_color"><span style="color: Navy;" class="mycode_color">- الأن يمكن الإستغناء على إعادة تصريح التصدير &amp; مساحة أقل &amp; سرعة تنفيذ (Inline) .<br />
- أيضا يمكن إستغلال الطريقة من الكيرنل مود , لم أحضر مثال بعد </span></span><img src="http://www.delphi4arab.net/forum/images/icons/icon10.gif" loading="lazy"  alt="[صورة: icon10.gif]" class="mycode_img" /> .<br />
 <span style="color: Black;" class="mycode_color">بالتوفيق,,</span>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[GetOSinfo تحديد نسخة النظام & BuildNumber]]></title>
			<link>https://delphi4arab.net/forum/showthread.php?tid=2585</link>
			<pubDate>Mon, 22 Nov 2010 00:43:29 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://delphi4arab.net/forum/member.php?action=profile&uid=190">TF6M</a>]]></dc:creator>
			<guid isPermaLink="false">https://delphi4arab.net/forum/showthread.php?tid=2585</guid>
			<description><![CDATA[السلام عليكم و رحمة الله و بركاته<br />
- تحديد  نسخة النظام المستخدم من الكيرنل , RtlGetVersion   &amp; NtBuilder <br />
<div class="codeblock phpcodeblock"><div class="title">PHP كود :</div><div class="body"><div dir="ltr"><code><span style="color: #007700">{*******************************************************}<br />{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Open&nbsp;source&nbsp;sample</span><span style="color: #007700">.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Free&nbsp;to&nbsp;</span><span style="color: #007700">use.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Coded&nbsp;By&nbsp;TF6M&nbsp;</span><span style="color: #007700">|&nbsp;</span><span style="color: #0000BB">22</span><span style="color: #007700">-</span><span style="color: #0000BB">11</span><span style="color: #007700">-</span><span style="color: #0000BB">2010&nbsp;Www</span><span style="color: #007700">.</span><span style="color: #0000BB">Delphi4Arab</span><span style="color: #007700">.</span><span style="color: #0000BB">Com&nbsp;&nbsp;</span><span style="color: #007700">}<br />{*******************************************************}<br /></span><span style="color: #0000BB">Unit&nbsp;GetOSinfo</span><span style="color: #007700">;<br />{</span><span style="color: #0000BB">&#36;WARNINGS&nbsp;OFF</span><span style="color: #007700">}{</span><span style="color: #0000BB">&#36;HINTS&nbsp;OFF</span><span style="color: #007700">}<br />{</span><span style="color: #0000BB">&#36;OPTIMIZATION&nbsp;ON</span><span style="color: #007700">}{</span><span style="color: #0000BB">&#36;OverFlowChecks&nbsp;Off</span><span style="color: #007700">}<br />interface<br /><br /></span><span style="color: #0000BB">Uses&nbsp;nt_status</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">ntoskrnl</span><span style="color: #007700">;<br /><br />function&nbsp;</span><span style="color: #0000BB">_DriverEntry</span><span style="color: #007700">(</span><span style="color: #0000BB">DriverObject</span><span style="color: #007700">:</span><span style="color: #0000BB">PDriverObject</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">RegistryPath</span><span style="color: #007700">:</span><span style="color: #0000BB">PUnicodeString<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">):</span><span style="color: #0000BB">NTSTATUS</span><span style="color: #007700">;&nbsp;</span><span style="color: #0000BB">stdcall</span><span style="color: #007700">;<br /><br /></span><span style="color: #0000BB">implementation<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />procedure&nbsp;DriverUnload</span><span style="color: #007700">(</span><span style="color: #0000BB">DriverObject</span><span style="color: #007700">:</span><span style="color: #0000BB">PDriverObject</span><span style="color: #007700">);&nbsp;</span><span style="color: #0000BB">stdcall</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">begin<br />&nbsp;DbgPrint</span><span style="color: #007700">(</span><span style="color: #DD0000">'Unload&nbsp;Routine&nbsp;Called&nbsp;!!!'</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">end</span><span style="color: #007700">;<br /><br />Function&nbsp;</span><span style="color: #0000BB">_DriverEntry</span><span style="color: #007700">(</span><span style="color: #0000BB">DriverObject</span><span style="color: #007700">:</span><span style="color: #0000BB">PDriverObject</span><span style="color: #007700">;</span><span style="color: #0000BB">RegistryPath</span><span style="color: #007700">:</span><span style="color: #0000BB">PUnicodeString</span><span style="color: #007700">):</span><span style="color: #0000BB">NTSTATUS</span><span style="color: #007700">;&nbsp;</span><span style="color: #0000BB">stdcall</span><span style="color: #007700">;<br />Var<br />&nbsp;</span><span style="color: #0000BB">_Rtk</span><span style="color: #007700">:</span><span style="color: #0000BB">RTL_OSVERSIONINFOEXW</span><span style="color: #007700">;<br />&nbsp;</span><span style="color: #0000BB">_Os</span><span style="color: #007700">:</span><span style="color: #0000BB">ANSI_STRING</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">begin<br />&nbsp;DriverObject</span><span style="color: #007700">^.</span><span style="color: #0000BB">DriverUnload</span><span style="color: #007700">:=@</span><span style="color: #0000BB">DriverUnload</span><span style="color: #007700">;<br />&nbsp;</span><span style="color: #0000BB">Result</span><span style="color: #007700">:=&nbsp;</span><span style="color: #0000BB">STATUS_SUCCESS</span><span style="color: #007700">;<br />&nbsp;</span><span style="color: #0000BB">DbgPrint</span><span style="color: #007700">(</span><span style="color: #DD0000">'DriverEntry&nbsp;Routine&nbsp;Called&nbsp;With&nbsp;Code&nbsp;Error&nbsp;:&nbsp;0x%.8X'</span><span style="color: #007700">,</span><span style="color: #0000BB">Result</span><span style="color: #007700">);<br />&nbsp;</span><span style="color: #FF8000">//RtlZeroMemory(@_Rtk,SizeOf(_Rtk));<br />&nbsp;</span><span style="color: #0000BB">_Rtk</span><span style="color: #007700">.</span><span style="color: #0000BB">dwOSVersionInfoSize</span><span style="color: #007700">:=&nbsp;</span><span style="color: #0000BB">SizeOf</span><span style="color: #007700">(</span><span style="color: #0000BB">RTL_OSVERSIONINFOEXW</span><span style="color: #007700">);<br />&nbsp;If&nbsp;</span><span style="color: #0000BB">RtlGetVersion</span><span style="color: #007700">(</span><span style="color: #0000BB">PRTL_OSVERSIONINFOW</span><span style="color: #007700">(@</span><span style="color: #0000BB">_Rtk</span><span style="color: #007700">))&nbsp;=&nbsp;</span><span style="color: #0000BB">STATUS_SUCCESS&nbsp;Then<br />&nbsp;&nbsp;Begin<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">If&nbsp;(</span><span style="color: #0000BB">_Rtk</span><span style="color: #007700">.</span><span style="color: #0000BB">dwMajorVersion&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">5</span><span style="color: #007700">)&nbsp;And&nbsp;(</span><span style="color: #0000BB">_Rtk</span><span style="color: #007700">.</span><span style="color: #0000BB">dwMinorVersion&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">1</span><span style="color: #007700">)&nbsp;</span><span style="color: #0000BB">Then<br />&nbsp;&nbsp;&nbsp;&nbsp;RtlInitAnsiString</span><span style="color: #007700">(@</span><span style="color: #0000BB">_Os</span><span style="color: #007700">,</span><span style="color: #DD0000">'Microsoft&nbsp;Windows&nbsp;XP'</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;If&nbsp;(</span><span style="color: #0000BB">_Rtk</span><span style="color: #007700">.</span><span style="color: #0000BB">dwMajorVersion&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">5</span><span style="color: #007700">)&nbsp;And&nbsp;(</span><span style="color: #0000BB">_Rtk</span><span style="color: #007700">.</span><span style="color: #0000BB">dwMinorVersion&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">2</span><span style="color: #007700">)&nbsp;</span><span style="color: #0000BB">Then<br />&nbsp;&nbsp;&nbsp;&nbsp;RtlInitAnsiString</span><span style="color: #007700">(@</span><span style="color: #0000BB">_Os</span><span style="color: #007700">,</span><span style="color: #DD0000">'Microsoft&nbsp;Windows&nbsp;Server&nbsp;2003'</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;If&nbsp;(</span><span style="color: #0000BB">_Rtk</span><span style="color: #007700">.</span><span style="color: #0000BB">dwMajorVersion&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">6</span><span style="color: #007700">)&nbsp;And&nbsp;(</span><span style="color: #0000BB">_Rtk</span><span style="color: #007700">.</span><span style="color: #0000BB">dwMinorVersion&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">)&nbsp;</span><span style="color: #0000BB">Then<br />&nbsp;&nbsp;&nbsp;&nbsp;RtlInitAnsiString</span><span style="color: #007700">(@</span><span style="color: #0000BB">_Os</span><span style="color: #007700">,</span><span style="color: #DD0000">'Microsoft&nbsp;Windows&nbsp;Vista'</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;If&nbsp;(</span><span style="color: #0000BB">_Rtk</span><span style="color: #007700">.</span><span style="color: #0000BB">dwMajorVersion&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">6</span><span style="color: #007700">)&nbsp;And&nbsp;(</span><span style="color: #0000BB">_Rtk</span><span style="color: #007700">.</span><span style="color: #0000BB">dwMinorVersion&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">1</span><span style="color: #007700">)&nbsp;</span><span style="color: #0000BB">Then<br />&nbsp;&nbsp;&nbsp;&nbsp;RtlInitAnsiString</span><span style="color: #007700">(@</span><span style="color: #0000BB">_Os</span><span style="color: #007700">,</span><span style="color: #DD0000">'Microsoft&nbsp;Windows&nbsp;7'</span><span style="color: #007700">);<br />&nbsp;&nbsp;</span><span style="color: #0000BB">DbgPrint</span><span style="color: #007700">(</span><span style="color: #DD0000">'Your&nbsp;OS&nbsp;Version&nbsp;is&nbsp;%Z&nbsp;&lt;&nbsp;%ld.%ld.%ld&nbsp;&gt;&nbsp;Service&nbsp;Pack&nbsp;%d.%d&nbsp;'<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">,@</span><span style="color: #0000BB">_Os</span><span style="color: #007700">,</span><span style="color: #0000BB">_Rtk</span><span style="color: #007700">.</span><span style="color: #0000BB">dwMajorVersion</span><span style="color: #007700">,</span><span style="color: #0000BB">_Rtk</span><span style="color: #007700">.</span><span style="color: #0000BB">dwMinorVersion</span><span style="color: #007700">,</span><span style="color: #0000BB">_Rtk</span><span style="color: #007700">.</span><span style="color: #0000BB">dwBuildNumber<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">,</span><span style="color: #0000BB">_Rtk</span><span style="color: #007700">.</span><span style="color: #0000BB">wServicePackMajor</span><span style="color: #007700">,</span><span style="color: #0000BB">_Rtk</span><span style="color: #007700">.</span><span style="color: #0000BB">wServicePackMinor</span><span style="color: #007700">);<br />&nbsp;&nbsp;</span><span style="color: #0000BB">End</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">end</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">end</span><span style="color: #007700">.&nbsp;<br /></span></code></div></div></div>- إعادة تعريف للـ RtlGetVersion  : الملفات المصدرية غير مرفقة مع Meerkat<br />
<br />
<div class="codeblock"><div class="title">كود :</div><div class="body" dir="ltr"><code>Type
  _OSVERSIONINFOW = Record
   dwOSVersionInfoSize :ULONG;
   dwMajorVersion :ULONG ;
   dwMinorVersion :ULONG ;
   dwBuildNumber  :ULONG ;
   dwPlatformId   :ULONG ;
   szCSDVersion   :Array [0..127] Of WCHAR;
 End;
RTL_OSVERSIONINFOW = _OSVERSIONINFOW;
PRTL_OSVERSIONINFOW = ^RTL_OSVERSIONINFOW;

Function RtlGetVersion(lpVersionInformation :PRTL_OSVERSIONINFOW ) :NTSTATUS;StdCall;

implementation

Function RtlGetVersion; external NtKernel name '_RtlGetVersion';</code></div></div>القيم الممكنة <a href="http://en.wikipedia.org/wiki/Windows_NT" target="_blank" rel="noopener" class="mycode_url">هنا </a>: <br />
<br />
<div class="codeblock phpcodeblock"><div class="title">PHP كود :</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">NT&nbsp;3.1&nbsp;&nbsp;</span><span style="color: #007700">-&nbsp;</span><span style="color: #0000BB">528<br />NT&nbsp;3.5&nbsp;&nbsp;</span><span style="color: #007700">-&nbsp;</span><span style="color: #0000BB">807<br />NT&nbsp;3.51&nbsp;</span><span style="color: #007700">-</span><span style="color: #0000BB">1057<br />NT&nbsp;4&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">-&nbsp;</span><span style="color: #0000BB">1381<br />NT&nbsp;5.2&nbsp;Windows&nbsp;Server&nbsp;2003&nbsp;3790<br />NT&nbsp;5.2&nbsp;Windows&nbsp;XP&nbsp;</span><span style="color: #007700">(</span><span style="color: #0000BB">x64</span><span style="color: #007700">)&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">3790&nbsp;<br />NT&nbsp;6.1&nbsp;Windows&nbsp;7<br />&nbsp;&nbsp;&nbsp;<br />2195&nbsp;</span><span style="color: #007700">-&nbsp;</span><span style="color: #0000BB">Windows&nbsp;2000<br />2600&nbsp;</span><span style="color: #007700">-&nbsp;</span><span style="color: #0000BB">Windows&nbsp;XP<br />3790&nbsp;</span><span style="color: #007700">-&nbsp;</span><span style="color: #0000BB">Windows&nbsp;2003<br />4052&nbsp;</span><span style="color: #007700">-&nbsp;</span><span style="color: #0000BB">Windows&nbsp;Longhorn&nbsp;aka&nbsp;Vista&nbsp;PDC<br />5xxx&nbsp;</span><span style="color: #007700">-&nbsp;</span><span style="color: #0000BB">Windows&nbsp;Vista&nbsp;<br /></span></code></div></div></div><img src="http://img840.imageshack.us/img840/9365/sdfsd.gif" loading="lazy"  alt="[صورة: sdfsd.gif]" class="mycode_img" /><br />
<br />
بالتوفيق,,<br />
<br />
<img src="https://delphi4arab.net/forum/images/attachtypes/rar.png" title="Winrar file" border="0" alt=".rar" />
&nbsp;&nbsp;<a href="attachment.php?aid=1458" target="_blank" title="">GetOSinfo.rar</a> (الحجم : 8.29 ك ب / التحميلات : 82)
]]></description>
			<content:encoded><![CDATA[السلام عليكم و رحمة الله و بركاته<br />
- تحديد  نسخة النظام المستخدم من الكيرنل , RtlGetVersion   &amp; NtBuilder <br />
<div class="codeblock phpcodeblock"><div class="title">PHP كود :</div><div class="body"><div dir="ltr"><code><span style="color: #007700">{*******************************************************}<br />{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Open&nbsp;source&nbsp;sample</span><span style="color: #007700">.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Free&nbsp;to&nbsp;</span><span style="color: #007700">use.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Coded&nbsp;By&nbsp;TF6M&nbsp;</span><span style="color: #007700">|&nbsp;</span><span style="color: #0000BB">22</span><span style="color: #007700">-</span><span style="color: #0000BB">11</span><span style="color: #007700">-</span><span style="color: #0000BB">2010&nbsp;Www</span><span style="color: #007700">.</span><span style="color: #0000BB">Delphi4Arab</span><span style="color: #007700">.</span><span style="color: #0000BB">Com&nbsp;&nbsp;</span><span style="color: #007700">}<br />{*******************************************************}<br /></span><span style="color: #0000BB">Unit&nbsp;GetOSinfo</span><span style="color: #007700">;<br />{</span><span style="color: #0000BB">&#36;WARNINGS&nbsp;OFF</span><span style="color: #007700">}{</span><span style="color: #0000BB">&#36;HINTS&nbsp;OFF</span><span style="color: #007700">}<br />{</span><span style="color: #0000BB">&#36;OPTIMIZATION&nbsp;ON</span><span style="color: #007700">}{</span><span style="color: #0000BB">&#36;OverFlowChecks&nbsp;Off</span><span style="color: #007700">}<br />interface<br /><br /></span><span style="color: #0000BB">Uses&nbsp;nt_status</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">ntoskrnl</span><span style="color: #007700">;<br /><br />function&nbsp;</span><span style="color: #0000BB">_DriverEntry</span><span style="color: #007700">(</span><span style="color: #0000BB">DriverObject</span><span style="color: #007700">:</span><span style="color: #0000BB">PDriverObject</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">RegistryPath</span><span style="color: #007700">:</span><span style="color: #0000BB">PUnicodeString<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">):</span><span style="color: #0000BB">NTSTATUS</span><span style="color: #007700">;&nbsp;</span><span style="color: #0000BB">stdcall</span><span style="color: #007700">;<br /><br /></span><span style="color: #0000BB">implementation<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />procedure&nbsp;DriverUnload</span><span style="color: #007700">(</span><span style="color: #0000BB">DriverObject</span><span style="color: #007700">:</span><span style="color: #0000BB">PDriverObject</span><span style="color: #007700">);&nbsp;</span><span style="color: #0000BB">stdcall</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">begin<br />&nbsp;DbgPrint</span><span style="color: #007700">(</span><span style="color: #DD0000">'Unload&nbsp;Routine&nbsp;Called&nbsp;!!!'</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">end</span><span style="color: #007700">;<br /><br />Function&nbsp;</span><span style="color: #0000BB">_DriverEntry</span><span style="color: #007700">(</span><span style="color: #0000BB">DriverObject</span><span style="color: #007700">:</span><span style="color: #0000BB">PDriverObject</span><span style="color: #007700">;</span><span style="color: #0000BB">RegistryPath</span><span style="color: #007700">:</span><span style="color: #0000BB">PUnicodeString</span><span style="color: #007700">):</span><span style="color: #0000BB">NTSTATUS</span><span style="color: #007700">;&nbsp;</span><span style="color: #0000BB">stdcall</span><span style="color: #007700">;<br />Var<br />&nbsp;</span><span style="color: #0000BB">_Rtk</span><span style="color: #007700">:</span><span style="color: #0000BB">RTL_OSVERSIONINFOEXW</span><span style="color: #007700">;<br />&nbsp;</span><span style="color: #0000BB">_Os</span><span style="color: #007700">:</span><span style="color: #0000BB">ANSI_STRING</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">begin<br />&nbsp;DriverObject</span><span style="color: #007700">^.</span><span style="color: #0000BB">DriverUnload</span><span style="color: #007700">:=@</span><span style="color: #0000BB">DriverUnload</span><span style="color: #007700">;<br />&nbsp;</span><span style="color: #0000BB">Result</span><span style="color: #007700">:=&nbsp;</span><span style="color: #0000BB">STATUS_SUCCESS</span><span style="color: #007700">;<br />&nbsp;</span><span style="color: #0000BB">DbgPrint</span><span style="color: #007700">(</span><span style="color: #DD0000">'DriverEntry&nbsp;Routine&nbsp;Called&nbsp;With&nbsp;Code&nbsp;Error&nbsp;:&nbsp;0x%.8X'</span><span style="color: #007700">,</span><span style="color: #0000BB">Result</span><span style="color: #007700">);<br />&nbsp;</span><span style="color: #FF8000">//RtlZeroMemory(@_Rtk,SizeOf(_Rtk));<br />&nbsp;</span><span style="color: #0000BB">_Rtk</span><span style="color: #007700">.</span><span style="color: #0000BB">dwOSVersionInfoSize</span><span style="color: #007700">:=&nbsp;</span><span style="color: #0000BB">SizeOf</span><span style="color: #007700">(</span><span style="color: #0000BB">RTL_OSVERSIONINFOEXW</span><span style="color: #007700">);<br />&nbsp;If&nbsp;</span><span style="color: #0000BB">RtlGetVersion</span><span style="color: #007700">(</span><span style="color: #0000BB">PRTL_OSVERSIONINFOW</span><span style="color: #007700">(@</span><span style="color: #0000BB">_Rtk</span><span style="color: #007700">))&nbsp;=&nbsp;</span><span style="color: #0000BB">STATUS_SUCCESS&nbsp;Then<br />&nbsp;&nbsp;Begin<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">If&nbsp;(</span><span style="color: #0000BB">_Rtk</span><span style="color: #007700">.</span><span style="color: #0000BB">dwMajorVersion&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">5</span><span style="color: #007700">)&nbsp;And&nbsp;(</span><span style="color: #0000BB">_Rtk</span><span style="color: #007700">.</span><span style="color: #0000BB">dwMinorVersion&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">1</span><span style="color: #007700">)&nbsp;</span><span style="color: #0000BB">Then<br />&nbsp;&nbsp;&nbsp;&nbsp;RtlInitAnsiString</span><span style="color: #007700">(@</span><span style="color: #0000BB">_Os</span><span style="color: #007700">,</span><span style="color: #DD0000">'Microsoft&nbsp;Windows&nbsp;XP'</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;If&nbsp;(</span><span style="color: #0000BB">_Rtk</span><span style="color: #007700">.</span><span style="color: #0000BB">dwMajorVersion&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">5</span><span style="color: #007700">)&nbsp;And&nbsp;(</span><span style="color: #0000BB">_Rtk</span><span style="color: #007700">.</span><span style="color: #0000BB">dwMinorVersion&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">2</span><span style="color: #007700">)&nbsp;</span><span style="color: #0000BB">Then<br />&nbsp;&nbsp;&nbsp;&nbsp;RtlInitAnsiString</span><span style="color: #007700">(@</span><span style="color: #0000BB">_Os</span><span style="color: #007700">,</span><span style="color: #DD0000">'Microsoft&nbsp;Windows&nbsp;Server&nbsp;2003'</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;If&nbsp;(</span><span style="color: #0000BB">_Rtk</span><span style="color: #007700">.</span><span style="color: #0000BB">dwMajorVersion&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">6</span><span style="color: #007700">)&nbsp;And&nbsp;(</span><span style="color: #0000BB">_Rtk</span><span style="color: #007700">.</span><span style="color: #0000BB">dwMinorVersion&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">)&nbsp;</span><span style="color: #0000BB">Then<br />&nbsp;&nbsp;&nbsp;&nbsp;RtlInitAnsiString</span><span style="color: #007700">(@</span><span style="color: #0000BB">_Os</span><span style="color: #007700">,</span><span style="color: #DD0000">'Microsoft&nbsp;Windows&nbsp;Vista'</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;If&nbsp;(</span><span style="color: #0000BB">_Rtk</span><span style="color: #007700">.</span><span style="color: #0000BB">dwMajorVersion&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">6</span><span style="color: #007700">)&nbsp;And&nbsp;(</span><span style="color: #0000BB">_Rtk</span><span style="color: #007700">.</span><span style="color: #0000BB">dwMinorVersion&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">1</span><span style="color: #007700">)&nbsp;</span><span style="color: #0000BB">Then<br />&nbsp;&nbsp;&nbsp;&nbsp;RtlInitAnsiString</span><span style="color: #007700">(@</span><span style="color: #0000BB">_Os</span><span style="color: #007700">,</span><span style="color: #DD0000">'Microsoft&nbsp;Windows&nbsp;7'</span><span style="color: #007700">);<br />&nbsp;&nbsp;</span><span style="color: #0000BB">DbgPrint</span><span style="color: #007700">(</span><span style="color: #DD0000">'Your&nbsp;OS&nbsp;Version&nbsp;is&nbsp;%Z&nbsp;&lt;&nbsp;%ld.%ld.%ld&nbsp;&gt;&nbsp;Service&nbsp;Pack&nbsp;%d.%d&nbsp;'<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">,@</span><span style="color: #0000BB">_Os</span><span style="color: #007700">,</span><span style="color: #0000BB">_Rtk</span><span style="color: #007700">.</span><span style="color: #0000BB">dwMajorVersion</span><span style="color: #007700">,</span><span style="color: #0000BB">_Rtk</span><span style="color: #007700">.</span><span style="color: #0000BB">dwMinorVersion</span><span style="color: #007700">,</span><span style="color: #0000BB">_Rtk</span><span style="color: #007700">.</span><span style="color: #0000BB">dwBuildNumber<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">,</span><span style="color: #0000BB">_Rtk</span><span style="color: #007700">.</span><span style="color: #0000BB">wServicePackMajor</span><span style="color: #007700">,</span><span style="color: #0000BB">_Rtk</span><span style="color: #007700">.</span><span style="color: #0000BB">wServicePackMinor</span><span style="color: #007700">);<br />&nbsp;&nbsp;</span><span style="color: #0000BB">End</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">end</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">end</span><span style="color: #007700">.&nbsp;<br /></span></code></div></div></div>- إعادة تعريف للـ RtlGetVersion  : الملفات المصدرية غير مرفقة مع Meerkat<br />
<br />
<div class="codeblock"><div class="title">كود :</div><div class="body" dir="ltr"><code>Type
  _OSVERSIONINFOW = Record
   dwOSVersionInfoSize :ULONG;
   dwMajorVersion :ULONG ;
   dwMinorVersion :ULONG ;
   dwBuildNumber  :ULONG ;
   dwPlatformId   :ULONG ;
   szCSDVersion   :Array [0..127] Of WCHAR;
 End;
RTL_OSVERSIONINFOW = _OSVERSIONINFOW;
PRTL_OSVERSIONINFOW = ^RTL_OSVERSIONINFOW;

Function RtlGetVersion(lpVersionInformation :PRTL_OSVERSIONINFOW ) :NTSTATUS;StdCall;

implementation

Function RtlGetVersion; external NtKernel name '_RtlGetVersion';</code></div></div>القيم الممكنة <a href="http://en.wikipedia.org/wiki/Windows_NT" target="_blank" rel="noopener" class="mycode_url">هنا </a>: <br />
<br />
<div class="codeblock phpcodeblock"><div class="title">PHP كود :</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">NT&nbsp;3.1&nbsp;&nbsp;</span><span style="color: #007700">-&nbsp;</span><span style="color: #0000BB">528<br />NT&nbsp;3.5&nbsp;&nbsp;</span><span style="color: #007700">-&nbsp;</span><span style="color: #0000BB">807<br />NT&nbsp;3.51&nbsp;</span><span style="color: #007700">-</span><span style="color: #0000BB">1057<br />NT&nbsp;4&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">-&nbsp;</span><span style="color: #0000BB">1381<br />NT&nbsp;5.2&nbsp;Windows&nbsp;Server&nbsp;2003&nbsp;3790<br />NT&nbsp;5.2&nbsp;Windows&nbsp;XP&nbsp;</span><span style="color: #007700">(</span><span style="color: #0000BB">x64</span><span style="color: #007700">)&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">3790&nbsp;<br />NT&nbsp;6.1&nbsp;Windows&nbsp;7<br />&nbsp;&nbsp;&nbsp;<br />2195&nbsp;</span><span style="color: #007700">-&nbsp;</span><span style="color: #0000BB">Windows&nbsp;2000<br />2600&nbsp;</span><span style="color: #007700">-&nbsp;</span><span style="color: #0000BB">Windows&nbsp;XP<br />3790&nbsp;</span><span style="color: #007700">-&nbsp;</span><span style="color: #0000BB">Windows&nbsp;2003<br />4052&nbsp;</span><span style="color: #007700">-&nbsp;</span><span style="color: #0000BB">Windows&nbsp;Longhorn&nbsp;aka&nbsp;Vista&nbsp;PDC<br />5xxx&nbsp;</span><span style="color: #007700">-&nbsp;</span><span style="color: #0000BB">Windows&nbsp;Vista&nbsp;<br /></span></code></div></div></div><img src="http://img840.imageshack.us/img840/9365/sdfsd.gif" loading="lazy"  alt="[صورة: sdfsd.gif]" class="mycode_img" /><br />
<br />
بالتوفيق,,<br />
<br />
<img src="https://delphi4arab.net/forum/images/attachtypes/rar.png" title="Winrar file" border="0" alt=".rar" />
&nbsp;&nbsp;<a href="attachment.php?aid=1458" target="_blank" title="">GetOSinfo.rar</a> (الحجم : 8.29 ك ب / التحميلات : 82)
]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Delphi's Garbage Collector]]></title>
			<link>https://delphi4arab.net/forum/showthread.php?tid=2582</link>
			<pubDate>Sat, 20 Nov 2010 13:22:29 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://delphi4arab.net/forum/member.php?action=profile&uid=161">kachwahed</a>]]></dc:creator>
			<guid isPermaLink="false">https://delphi4arab.net/forum/showthread.php?tid=2582</guid>
			<description><![CDATA[<span style="color: Black;" class="mycode_color">السلام عليكم ورحمة الله<br />
"دلفي لا يملك Garbage Collector" عبارة نسمعها أحيانا كثيرة...<br />
ممن ينتقد دلفي وممن يثني عليه أحيانا!<br />
لماذا؟<br />
لأن من ينتقد دلفي يدعي أن ذلك نقطة ضعف فيه، لأن GC (اختصارا) يسهل البرمجة بتقليص الأسطر، وإراحة المبرمج من تحرير يدوي للمكونات وغير ذلك...<br />
ومن يمدح دلفي بذلك يدعي أن ذلك يقيد من حركة المبرمج وتحريره لأغراضه يدويا يجعله يتحكم في الكود أكثر...<br />
بغض النظر عما إذا كان ذلك بعاطفة من محبي دلفي أو بغيرها، أو هل هناك حاجة لـ GC أم لا...<br />
السؤال: هل يمكن برمجة Garbage Collector؟<br />
<br />
...أولا ماذا تقصد بـ Garbage Collector؟<br />
<br />
باختصار... جامع القمامة (Garbage Collector) هو كائن يقوم بتسيير الذاكرة بحيث يقوم عند إنهاء البرنامج بتحرير المساحات المحجوزة -لإنشاء الأغراض- بشكل تلقائي.<br />
بعبارة أخرى لست بحاجة إلى تحرير الأنماط التي تقوم بإنشائها:<br />
<div class="codeblock phpcodeblock"><div class="title">PHP كود :</div><div class="body"><div dir="ltr"><code><span style="color: #FF8000">//try<br />&nbsp;</span><span style="color: #0000BB">MyObject&nbsp;</span><span style="color: #007700">:=&nbsp;</span><span style="color: #0000BB">TObject</span><span style="color: #007700">.</span><span style="color: #0000BB">Create</span><span style="color: #007700">;<br /></span><span style="color: #FF8000">//finally<br />//&nbsp;&nbsp;MyObject.Free;<br />//end;&nbsp;<br /></span></code></div></div></div>وبالتالي تتخلص من احتمال حصول أي استنزاف مفرط في الذاكرة!<br />
طالع:  من <a href="http://en.wikipedia.org/wiki/Garbage_collection_%28computer_science%29" target="_blank" rel="noopener" class="mycode_url">Wikipedia Garbage Collector</a><br />
الجواب:<br />
- طبعا، يمكن برمجة ذلك، كما يمكن برمجة أي شيء بدلفي <img src="https://delphi4arab.net/forum/images/smilies/smile.png" alt="Smile" title="Smile" class="smilie smilie_1" /><br />
هناك محاولات جيدة قام البعض بها:<br />
<div class="codeblock"><div class="title">كود :</div><div class="body" dir="ltr"><code>http://edn.embarcadero.com/article/28217</code></div></div>السورس مرفق في مثال (دلفي 2006 فما فوق)، أيضا:<br />
API for Boehm Garbage Collector DLL: مكتبة DLL أصلها مكتوبة بـ C ومثال لاستخدام بدلفي<br />
<div class="codeblock"><div class="title">كود :</div><div class="body" dir="ltr"><code>http://cc.embarcadero.com/item/21646</code></div></div>بالتوفيق.</span><br />
<br />
<img src="https://delphi4arab.net/forum/images/attachtypes/rar.png" title="Winrar file" border="0" alt=".rar" />
&nbsp;&nbsp;<a href="attachment.php?aid=1406" target="_blank" title="">Garbage.Collector.BoehmDLL.rar</a> (الحجم : 45.29 ك ب / التحميلات : 73)
<br />
<br />
<img src="https://delphi4arab.net/forum/images/attachtypes/rar.png" title="Winrar file" border="0" alt=".rar" />
&nbsp;&nbsp;<a href="attachment.php?aid=1408" target="_blank" title="">Delphi'sGC.rar</a> (الحجم : 4.07 ك ب / التحميلات : 68)
]]></description>
			<content:encoded><![CDATA[<span style="color: Black;" class="mycode_color">السلام عليكم ورحمة الله<br />
"دلفي لا يملك Garbage Collector" عبارة نسمعها أحيانا كثيرة...<br />
ممن ينتقد دلفي وممن يثني عليه أحيانا!<br />
لماذا؟<br />
لأن من ينتقد دلفي يدعي أن ذلك نقطة ضعف فيه، لأن GC (اختصارا) يسهل البرمجة بتقليص الأسطر، وإراحة المبرمج من تحرير يدوي للمكونات وغير ذلك...<br />
ومن يمدح دلفي بذلك يدعي أن ذلك يقيد من حركة المبرمج وتحريره لأغراضه يدويا يجعله يتحكم في الكود أكثر...<br />
بغض النظر عما إذا كان ذلك بعاطفة من محبي دلفي أو بغيرها، أو هل هناك حاجة لـ GC أم لا...<br />
السؤال: هل يمكن برمجة Garbage Collector؟<br />
<br />
...أولا ماذا تقصد بـ Garbage Collector؟<br />
<br />
باختصار... جامع القمامة (Garbage Collector) هو كائن يقوم بتسيير الذاكرة بحيث يقوم عند إنهاء البرنامج بتحرير المساحات المحجوزة -لإنشاء الأغراض- بشكل تلقائي.<br />
بعبارة أخرى لست بحاجة إلى تحرير الأنماط التي تقوم بإنشائها:<br />
<div class="codeblock phpcodeblock"><div class="title">PHP كود :</div><div class="body"><div dir="ltr"><code><span style="color: #FF8000">//try<br />&nbsp;</span><span style="color: #0000BB">MyObject&nbsp;</span><span style="color: #007700">:=&nbsp;</span><span style="color: #0000BB">TObject</span><span style="color: #007700">.</span><span style="color: #0000BB">Create</span><span style="color: #007700">;<br /></span><span style="color: #FF8000">//finally<br />//&nbsp;&nbsp;MyObject.Free;<br />//end;&nbsp;<br /></span></code></div></div></div>وبالتالي تتخلص من احتمال حصول أي استنزاف مفرط في الذاكرة!<br />
طالع:  من <a href="http://en.wikipedia.org/wiki/Garbage_collection_%28computer_science%29" target="_blank" rel="noopener" class="mycode_url">Wikipedia Garbage Collector</a><br />
الجواب:<br />
- طبعا، يمكن برمجة ذلك، كما يمكن برمجة أي شيء بدلفي <img src="https://delphi4arab.net/forum/images/smilies/smile.png" alt="Smile" title="Smile" class="smilie smilie_1" /><br />
هناك محاولات جيدة قام البعض بها:<br />
<div class="codeblock"><div class="title">كود :</div><div class="body" dir="ltr"><code>http://edn.embarcadero.com/article/28217</code></div></div>السورس مرفق في مثال (دلفي 2006 فما فوق)، أيضا:<br />
API for Boehm Garbage Collector DLL: مكتبة DLL أصلها مكتوبة بـ C ومثال لاستخدام بدلفي<br />
<div class="codeblock"><div class="title">كود :</div><div class="body" dir="ltr"><code>http://cc.embarcadero.com/item/21646</code></div></div>بالتوفيق.</span><br />
<br />
<img src="https://delphi4arab.net/forum/images/attachtypes/rar.png" title="Winrar file" border="0" alt=".rar" />
&nbsp;&nbsp;<a href="attachment.php?aid=1406" target="_blank" title="">Garbage.Collector.BoehmDLL.rar</a> (الحجم : 45.29 ك ب / التحميلات : 73)
<br />
<br />
<img src="https://delphi4arab.net/forum/images/attachtypes/rar.png" title="Winrar file" border="0" alt=".rar" />
&nbsp;&nbsp;<a href="attachment.php?aid=1408" target="_blank" title="">Delphi'sGC.rar</a> (الحجم : 4.07 ك ب / التحميلات : 68)
]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[[Api Hooking [HOT PATCHING , تطبيق بسيط !]]></title>
			<link>https://delphi4arab.net/forum/showthread.php?tid=2290</link>
			<pubDate>Wed, 11 Aug 2010 02:46:36 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://delphi4arab.net/forum/member.php?action=profile&uid=190">TF6M</a>]]></dc:creator>
			<guid isPermaLink="false">https://delphi4arab.net/forum/showthread.php?tid=2290</guid>
			<description><![CDATA[<span style="color: Black;" class="mycode_color">بسم الله الرحمن الرحيم<br />
السلام عليكم و رحمة الله و بركاته</span><br />
<br />
<span style="color: Red;" class="mycode_color">1-</span> <span style="color: Red;" class="mycode_color">مقدمة :</span><span style="font-weight: bold;" class="mycode_b"> <br />
يمكن تصنيف عمليات الـ </span>   <span style="font-weight: bold;" class="mycode_b">Hooking </span><span style="font-weight: bold;" class="mycode_b"> الى قسمين رئيسين :<br />
<img src="http://img64.imageshack.us/img64/929/apih01.jpg" loading="lazy"  alt="[صورة: apih01.jpg]" class="mycode_img" /><br />
<br />
</span>    <div style="text-align: right;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b">مبدأ عملية الـ </span><span style="font-weight: bold;" class="mycode_b">Hooking</span><span style="font-weight: bold;" class="mycode_b">  : تحويل مسار الإستدعاء الأصلي الى عنوان دالتنا الخاصة , التي تحمل</span></div>
  <span style="font-weight: bold;" class="mycode_b">نفس بارامترات الدالة المستهدفة (إستبدال) , أو مجرد مجموعه تعليمات (Codes) .</span><br />
<br />
<img src="http://img821.imageshack.us/img821/4152/apih02.jpg" loading="lazy"  alt="[صورة: apih02.jpg]" class="mycode_img" /><br />
<span style="font-weight: bold;" class="mycode_b"><br />
</span>    <div style="text-align: right;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b">هناك 3 تقنيات (<span style="color: red;" class="mycode_color">عامة</span>) , لعمل </span><span style="font-weight: bold;" class="mycode_b">HooK</span><span style="font-weight: bold;" class="mycode_b"> لــ </span><span style="font-weight: bold;" class="mycode_b">Api</span><span style="font-weight: bold;" class="mycode_b"> :</span></div>
  <div style="text-align: right;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b">Hot Patching </span><span style="font-weight: bold;" class="mycode_b">,</span><span style="font-weight: bold;" class="mycode_b">Inline hooking</span><span style="font-weight: bold;" class="mycode_b"> ,</span><span style="font-weight: bold;" class="mycode_b"> IAT patching</span><span style="font-weight: bold;" class="mycode_b">.</span></div>
  <div style="text-align: right;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b"><span style="font-style: italic;" class="mycode_i"><span style="color: #1f497d;" class="mycode_color"><br />
- كما يمكن عمل حقن لمكتبة الربط الديناميك (</span></span></span><span style="font-weight: bold;" class="mycode_b"><span style="font-style: italic;" class="mycode_i"><span style="color: #1f497d;" class="mycode_color">Inject DLL</span></span></span><span style="font-weight: bold;" class="mycode_b"><span style="font-style: italic;" class="mycode_i"><span style="color: #1f497d;" class="mycode_color">)</span></span></span><span style="font-weight: bold;" class="mycode_b"><span style="font-style: italic;" class="mycode_i"><span style="color: #1f497d;" class="mycode_color"> , <span style="text-decoration: underline;" class="mycode_u">لتغير</span> </span></span></span><span style="font-weight: bold;" class="mycode_b"><span style="font-style: italic;" class="mycode_i"><span style="color: #1f497d;" class="mycode_color">&amp;</span></span></span><span style="font-weight: bold;" class="mycode_b"><span style="font-style: italic;" class="mycode_i"><span style="color: #1f497d;" class="mycode_color"> <span style="text-decoration: underline;" class="mycode_u">مراقبة</span> مسار الإستدعاء </span></span></span><span style="font-weight: bold;" class="mycode_b"><span style="font-style: italic;" class="mycode_i"><span style="color: #1f497d;" class="mycode_color">SysCalls</span></span></span><span style="font-weight: bold;" class="mycode_b"><span style="font-style: italic;" class="mycode_i"><span style="color: #1f497d;" class="mycode_color"> _<br />
</span></span></span>    <div style="text-align: right;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b"><span style="font-style: italic;" class="mycode_i"><span style="color: #1f497d;" class="mycode_color">كـ </span></span></span><span style="font-weight: bold;" class="mycode_b"><span style="font-style: italic;" class="mycode_i"><span style="color: #1f497d;" class="mycode_color">External Thread</span></span></span><span style="font-weight: bold;" class="mycode_b"><span style="font-style: italic;" class="mycode_i"><span style="color: #1f497d;" class="mycode_color"> يمكن التحكم به </span></span></span><span style="font-weight: bold;" class="mycode_b"><span style="font-style: italic;" class="mycode_i"><span style="color: #1f497d;" class="mycode_color">!</span></span></span><span style="font-weight: bold;" class="mycode_b"><span style="font-style: italic;" class="mycode_i"><span style="color: #1f497d;" class="mycode_color">.</span></span></span></div>
  <br />
<span style="color: Red;" class="mycode_color"> 2- ما هو الـ </span><span style="font-weight: bold;" class="mycode_b"><span style="color: Red;" class="mycode_color">Hot Patching ؟ : </span><br />
<br />
</span>      <div style="text-align: right;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b">- مبدأ العملية تحويل القفزة التي تؤدي الى تنفيذ الدالة &amp; الإجراء المستهدف , نحو عنوان آخر <br />
ليتم تنفيذ أوامر مستبدلة تنتهي بقفزة للرجوع لمكان سير</span><span style="font-weight: bold;" class="mycode_b"> البرنامج الأصلي .</span><br />
<br />
- <span style="font-weight: bold;" class="mycode_b"> نأخذ على سبيل المثال الدالة MessageBoxA </span>(برنامج منقح بـ OllyDbg) :<br />
<br />
<img src="http://img580.imageshack.us/img580/9566/aone.jpg" loading="lazy"  alt="[صورة: aone.jpg]" class="mycode_img" /><br />
<br />
   <div style="text-align: right;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b">-</span><span style="font-weight: bold;" class="mycode_b"> نستغل 5 </span><span style="font-weight: bold;" class="mycode_b">bytes</span><span style="font-weight: bold;" class="mycode_b"> , في كتابة تعليمات أو برامترات لإستدعاء إجراء &amp; دالة ما </span><span style="font-weight: bold;" class="mycode_b">!</span><span style="font-weight: bold;" class="mycode_b"> <br />
هكذا قمنا بتحويل مسار الإستدعاء الأصلي .</span></div>
  <br />
-<span style="font-weight: bold;" class="mycode_b"> إذا يمكننا التغير مباشرة من المنقح (تعديل) , أو بإستعمال الدالة </span><span style="font-weight: bold;" class="mycode_b">VirtualProtec</span><span style="font-weight: bold;" class="mycode_b">t</span><span style="font-weight: bold;" class="mycode_b"> , التي تتيح لنا الكتابة في ذاكرة برنامجنا<br />
 (</span><span style="font-weight: bold;" class="mycode_b">inline hooking</span><span style="font-weight: bold;" class="mycode_b">)</span><span style="font-weight: bold;" class="mycode_b">, وذلك بتغير</span><span style="font-weight: bold;" class="mycode_b"> صلاحية الولوج لبلوك معين من برنامجنا المحمل للداكرة (</span><span style="font-weight: bold;" class="mycode_b">VirtualProtec</span><span style="font-weight: bold;" class="mycode_b">tEx</span><span style="font-weight: bold;" class="mycode_b"> من أي<br />
 بروسس محمل ....) , لنقوم بالتعديل </span>!<br />
<br />
<span style="color: Red;" class="mycode_color">3</span><span style="font-weight: bold;" class="mycode_b"><span style="color: Red;" class="mycode_color">- مثال تطبيقي</span> </span><span style="color: Red;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">hot Patching</span><span style="font-weight: bold;" class="mycode_b"> لـدالة </span><span style="font-weight: bold;" class="mycode_b">MessageBoxA</span><span style="font-weight: bold;" class="mycode_b"> بإستخدام </span><span style="font-weight: bold;" class="mycode_b">VirtualProtec</span><span style="font-weight: bold;" class="mycode_b">t</span></span><span style="font-weight: bold;" class="mycode_b"><span style="color: Red;" class="mycode_color"> : </span>(في المرفقات)</span><br />
- الكود واضح &amp; يحتوي على تعليقات من a حتى z .<br />
<br />
<img src="http://img339.imageshack.us/img339/8136/524i.jpg" loading="lazy"  alt="[صورة: 524i.jpg]" class="mycode_img" /><br />
<br />
  <div style="text-align: right;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b"><span style="color: Black;" class="mycode_color">بالتوفيق,,</span><br />
</span></div>
  <br />
<br />
</div>
</div><br />
<br />
<img src="https://delphi4arab.net/forum/images/attachtypes/rar.png" title="Winrar file" border="0" alt=".rar" />
&nbsp;&nbsp;<a href="attachment.php?aid=1348" target="_blank" title="">Hot Patching Use VirtualProtect Function.rar</a> (الحجم : 2.84 ك ب / التحميلات : 357)
]]></description>
			<content:encoded><![CDATA[<span style="color: Black;" class="mycode_color">بسم الله الرحمن الرحيم<br />
السلام عليكم و رحمة الله و بركاته</span><br />
<br />
<span style="color: Red;" class="mycode_color">1-</span> <span style="color: Red;" class="mycode_color">مقدمة :</span><span style="font-weight: bold;" class="mycode_b"> <br />
يمكن تصنيف عمليات الـ </span>   <span style="font-weight: bold;" class="mycode_b">Hooking </span><span style="font-weight: bold;" class="mycode_b"> الى قسمين رئيسين :<br />
<img src="http://img64.imageshack.us/img64/929/apih01.jpg" loading="lazy"  alt="[صورة: apih01.jpg]" class="mycode_img" /><br />
<br />
</span>    <div style="text-align: right;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b">مبدأ عملية الـ </span><span style="font-weight: bold;" class="mycode_b">Hooking</span><span style="font-weight: bold;" class="mycode_b">  : تحويل مسار الإستدعاء الأصلي الى عنوان دالتنا الخاصة , التي تحمل</span></div>
  <span style="font-weight: bold;" class="mycode_b">نفس بارامترات الدالة المستهدفة (إستبدال) , أو مجرد مجموعه تعليمات (Codes) .</span><br />
<br />
<img src="http://img821.imageshack.us/img821/4152/apih02.jpg" loading="lazy"  alt="[صورة: apih02.jpg]" class="mycode_img" /><br />
<span style="font-weight: bold;" class="mycode_b"><br />
</span>    <div style="text-align: right;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b">هناك 3 تقنيات (<span style="color: red;" class="mycode_color">عامة</span>) , لعمل </span><span style="font-weight: bold;" class="mycode_b">HooK</span><span style="font-weight: bold;" class="mycode_b"> لــ </span><span style="font-weight: bold;" class="mycode_b">Api</span><span style="font-weight: bold;" class="mycode_b"> :</span></div>
  <div style="text-align: right;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b">Hot Patching </span><span style="font-weight: bold;" class="mycode_b">,</span><span style="font-weight: bold;" class="mycode_b">Inline hooking</span><span style="font-weight: bold;" class="mycode_b"> ,</span><span style="font-weight: bold;" class="mycode_b"> IAT patching</span><span style="font-weight: bold;" class="mycode_b">.</span></div>
  <div style="text-align: right;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b"><span style="font-style: italic;" class="mycode_i"><span style="color: #1f497d;" class="mycode_color"><br />
- كما يمكن عمل حقن لمكتبة الربط الديناميك (</span></span></span><span style="font-weight: bold;" class="mycode_b"><span style="font-style: italic;" class="mycode_i"><span style="color: #1f497d;" class="mycode_color">Inject DLL</span></span></span><span style="font-weight: bold;" class="mycode_b"><span style="font-style: italic;" class="mycode_i"><span style="color: #1f497d;" class="mycode_color">)</span></span></span><span style="font-weight: bold;" class="mycode_b"><span style="font-style: italic;" class="mycode_i"><span style="color: #1f497d;" class="mycode_color"> , <span style="text-decoration: underline;" class="mycode_u">لتغير</span> </span></span></span><span style="font-weight: bold;" class="mycode_b"><span style="font-style: italic;" class="mycode_i"><span style="color: #1f497d;" class="mycode_color">&amp;</span></span></span><span style="font-weight: bold;" class="mycode_b"><span style="font-style: italic;" class="mycode_i"><span style="color: #1f497d;" class="mycode_color"> <span style="text-decoration: underline;" class="mycode_u">مراقبة</span> مسار الإستدعاء </span></span></span><span style="font-weight: bold;" class="mycode_b"><span style="font-style: italic;" class="mycode_i"><span style="color: #1f497d;" class="mycode_color">SysCalls</span></span></span><span style="font-weight: bold;" class="mycode_b"><span style="font-style: italic;" class="mycode_i"><span style="color: #1f497d;" class="mycode_color"> _<br />
</span></span></span>    <div style="text-align: right;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b"><span style="font-style: italic;" class="mycode_i"><span style="color: #1f497d;" class="mycode_color">كـ </span></span></span><span style="font-weight: bold;" class="mycode_b"><span style="font-style: italic;" class="mycode_i"><span style="color: #1f497d;" class="mycode_color">External Thread</span></span></span><span style="font-weight: bold;" class="mycode_b"><span style="font-style: italic;" class="mycode_i"><span style="color: #1f497d;" class="mycode_color"> يمكن التحكم به </span></span></span><span style="font-weight: bold;" class="mycode_b"><span style="font-style: italic;" class="mycode_i"><span style="color: #1f497d;" class="mycode_color">!</span></span></span><span style="font-weight: bold;" class="mycode_b"><span style="font-style: italic;" class="mycode_i"><span style="color: #1f497d;" class="mycode_color">.</span></span></span></div>
  <br />
<span style="color: Red;" class="mycode_color"> 2- ما هو الـ </span><span style="font-weight: bold;" class="mycode_b"><span style="color: Red;" class="mycode_color">Hot Patching ؟ : </span><br />
<br />
</span>      <div style="text-align: right;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b">- مبدأ العملية تحويل القفزة التي تؤدي الى تنفيذ الدالة &amp; الإجراء المستهدف , نحو عنوان آخر <br />
ليتم تنفيذ أوامر مستبدلة تنتهي بقفزة للرجوع لمكان سير</span><span style="font-weight: bold;" class="mycode_b"> البرنامج الأصلي .</span><br />
<br />
- <span style="font-weight: bold;" class="mycode_b"> نأخذ على سبيل المثال الدالة MessageBoxA </span>(برنامج منقح بـ OllyDbg) :<br />
<br />
<img src="http://img580.imageshack.us/img580/9566/aone.jpg" loading="lazy"  alt="[صورة: aone.jpg]" class="mycode_img" /><br />
<br />
   <div style="text-align: right;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b">-</span><span style="font-weight: bold;" class="mycode_b"> نستغل 5 </span><span style="font-weight: bold;" class="mycode_b">bytes</span><span style="font-weight: bold;" class="mycode_b"> , في كتابة تعليمات أو برامترات لإستدعاء إجراء &amp; دالة ما </span><span style="font-weight: bold;" class="mycode_b">!</span><span style="font-weight: bold;" class="mycode_b"> <br />
هكذا قمنا بتحويل مسار الإستدعاء الأصلي .</span></div>
  <br />
-<span style="font-weight: bold;" class="mycode_b"> إذا يمكننا التغير مباشرة من المنقح (تعديل) , أو بإستعمال الدالة </span><span style="font-weight: bold;" class="mycode_b">VirtualProtec</span><span style="font-weight: bold;" class="mycode_b">t</span><span style="font-weight: bold;" class="mycode_b"> , التي تتيح لنا الكتابة في ذاكرة برنامجنا<br />
 (</span><span style="font-weight: bold;" class="mycode_b">inline hooking</span><span style="font-weight: bold;" class="mycode_b">)</span><span style="font-weight: bold;" class="mycode_b">, وذلك بتغير</span><span style="font-weight: bold;" class="mycode_b"> صلاحية الولوج لبلوك معين من برنامجنا المحمل للداكرة (</span><span style="font-weight: bold;" class="mycode_b">VirtualProtec</span><span style="font-weight: bold;" class="mycode_b">tEx</span><span style="font-weight: bold;" class="mycode_b"> من أي<br />
 بروسس محمل ....) , لنقوم بالتعديل </span>!<br />
<br />
<span style="color: Red;" class="mycode_color">3</span><span style="font-weight: bold;" class="mycode_b"><span style="color: Red;" class="mycode_color">- مثال تطبيقي</span> </span><span style="color: Red;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">hot Patching</span><span style="font-weight: bold;" class="mycode_b"> لـدالة </span><span style="font-weight: bold;" class="mycode_b">MessageBoxA</span><span style="font-weight: bold;" class="mycode_b"> بإستخدام </span><span style="font-weight: bold;" class="mycode_b">VirtualProtec</span><span style="font-weight: bold;" class="mycode_b">t</span></span><span style="font-weight: bold;" class="mycode_b"><span style="color: Red;" class="mycode_color"> : </span>(في المرفقات)</span><br />
- الكود واضح &amp; يحتوي على تعليقات من a حتى z .<br />
<br />
<img src="http://img339.imageshack.us/img339/8136/524i.jpg" loading="lazy"  alt="[صورة: 524i.jpg]" class="mycode_img" /><br />
<br />
  <div style="text-align: right;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b"><span style="color: Black;" class="mycode_color">بالتوفيق,,</span><br />
</span></div>
  <br />
<br />
</div>
</div><br />
<br />
<img src="https://delphi4arab.net/forum/images/attachtypes/rar.png" title="Winrar file" border="0" alt=".rar" />
&nbsp;&nbsp;<a href="attachment.php?aid=1348" target="_blank" title="">Hot Patching Use VirtualProtect Function.rar</a> (الحجم : 2.84 ك ب / التحميلات : 357)
]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Dynamic Data Exchange بين التطبيقات في دلفي (عرض فلاش)]]></title>
			<link>https://delphi4arab.net/forum/showthread.php?tid=2240</link>
			<pubDate>Thu, 29 Jul 2010 19:24:56 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://delphi4arab.net/forum/member.php?action=profile&uid=161">kachwahed</a>]]></dc:creator>
			<guid isPermaLink="false">https://delphi4arab.net/forum/showthread.php?tid=2240</guid>
			<description><![CDATA[<span style="color: Black;" class="mycode_color">السلام عليكم ورحمة الله<br />
<br />
DDE اختصار Dynamic Data Exchange بديل آخر عن COM و Automation وتقنية للحوار بين تطبيقات الخادم (Server Application) وفق المنهج عميل/خادم<br />
<br />
معظم البرامج الشهيرة التي نستخدمها يوميا (المتصفحات، البرامج المكتبية...) تتوفر على خدمات DDE تسمح بالاتصال معها إرسالا واستقبالا للبيانات:  IE، MsOffice، Explorer...<br />
<br />
يوفر دلفي مجموعة من المكونات (المنسية!) للتعامل مع DDE موجودة في التبويب System<br />
<div class="codeblock"><div class="title">كود :</div><div class="body" dir="ltr"><code>TDdeClientConv;TDdeClientItem;TDdeServerItem</code></div></div><br />
نأخذ مثالين لتوضيح الفكرة<br />
1- المثال الأول: مثال بسيط للاستعلام عن الصفحة المفتوحة في IE<br />
- ضع مكون DdeClientConv1 (العميل) على النموذج...<br />
- افتح المتصفح IE على أي صفحة (ضروري لتشغيل الخدمة)<br />
- الآن اضبط الخصائص:<br />
-- DDeService على IExplore (اسم الخادم)<br />
-- وDdeTopic على WWW_GetWindowInfo (الموضوع الذي تود الاستعلام عنه)<br />
-- وServiceApplication على IExplore.exe (اسم التطبيق -اختياري-)<br />
-- اترك الخيار ConnectMode على ddeAutomatic ...<br />
- ضع زرا واكتب عند الضغط عليه:<br />
<div class="codeblock phpcodeblock"><div class="title">PHP كود :</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">Caption&nbsp;</span><span style="color: #007700">:=&nbsp;</span><span style="color: #0000BB">DdeClientConv1</span><span style="color: #007700">.</span><span style="color: #0000BB">RequestData</span><span style="color: #007700">(</span><span style="color: #DD0000">'0xFFFFFFFF'</span><span style="color: #007700">)&nbsp;<br /></span></code></div></div></div>نفذ التطبيق ولاحظ عنوان النموذج<br />
<br />
يمكن استخدام مكون TDdeClientItem وربطه مع TDdeClientConv من DdeConv ثم نستقبل العائدات من TDdeClientItem بمثل هذا:<br />
<div class="codeblock phpcodeblock"><div class="title">PHP كود :</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">Caption&nbsp;</span><span style="color: #007700">:=&nbsp;&nbsp;</span><span style="color: #0000BB">DdeClientItem1</span><span style="color: #007700">.</span><span style="color: #0000BB">DdeConv</span><span style="color: #007700">.</span><span style="color: #0000BB">RequestData</span><span style="color: #007700">(</span><span style="color: #DD0000">'0xFFFFFFFF'</span><span style="color: #007700">);&nbsp;<br /></span></code></div></div></div><br />
إذا لم ينجح معك ذلك أعد القيام به بشكل ديناميكي مستخدما التابع SetLink هكذا:<br />
<div class="codeblock phpcodeblock"><div class="title">PHP كود :</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">with&nbsp;DdeClientConv1&nbsp;</span><span style="color: #007700">do<br />&nbsp;&nbsp;</span><span style="color: #0000BB">begin<br />&nbsp;&nbsp;&nbsp;&nbsp;SetLink</span><span style="color: #007700">(</span><span style="color: #DD0000">'IExplore'</span><span style="color: #007700">,</span><span style="color: #DD0000">'WWW_GetWindowInfo'</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Caption</span><span style="color: #007700">:=&nbsp;</span><span style="color: #0000BB">RequestData</span><span style="color: #007700">(</span><span style="color: #DD0000">'0xFFFFFFFF'</span><span style="color: #007700">);<br />&nbsp;&nbsp;</span><span style="color: #0000BB">end</span><span style="color: #007700">;&nbsp;<br /></span></code></div></div></div><br />
2-المثال الثاني فتح متصفح Windows للبحث عن الملفات في مسار معين:<br />
- ضع نفس المكون واضبط الخادم هذه المرة:<br />
-- DDeService على Folders (خادم لمتصفح Windows)<br />
-- وDdeTopic على AppProperties<br />
-- وServiceApplication على explorer.exe<br />
- هذه المرة نقوم بتنفيذ Macro مباشرة بهذا الشكل:<br />
<div class="codeblock phpcodeblock"><div class="title">PHP كود :</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">DdeClientConv1</span><span style="color: #007700">.</span><span style="color: #0000BB">ExecuteMacro</span><span style="color: #007700">(</span><span style="color: #DD0000">'[FindFolder(,&nbsp;c:&#092;windows&#092;system32)]'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">False</span><span style="color: #007700">);&nbsp;<br /></span></code></div></div></div>للبحث عن الملفات في المسار:  c:\windows\system32<br />
<br />
هذا مثال بسيط لتوضيح فكرة DDE ولك أن تبحث كيفية الاتصال بالبرامج الأخرى <img src="https://delphi4arab.net/forum/images/smilies/smile.png" alt="Smile" title="Smile" class="smilie smilie_1" /><br />
<br />
ملاحظة:<br />
تنصح Microsoft باستخدام Automation بدلا عن DDE إن أمكن للاتصال بالبرامج Word, Excel ... لما تقدمة من دعم أفضل وخدمات إضافية.<br />
-----<br />
<br />
تم إعداد مثال مرفق السورس.<br />
وعرض فلاش لطريقة إعداد تطبيقين بدلفي وربطها بتقنية DDE. الرابط:<br />
<a href="http://www.mediafire.com/?vgqr84elldqsrej" target="_blank" rel="noopener" class="mycode_url">http://www.mediafire.com/?vgqr84elldqsrej</a><br />
<br />
بالتوفيق.</span><br />
<br />
<img src="https://delphi4arab.net/forum/images/attachtypes/rar.png" title="Winrar file" border="0" alt=".rar" />
&nbsp;&nbsp;<a href="attachment.php?aid=1312" target="_blank" title="">DDEServerClientConversation_src.rar</a> (الحجم : 2.23 ك ب / التحميلات : 105)
]]></description>
			<content:encoded><![CDATA[<span style="color: Black;" class="mycode_color">السلام عليكم ورحمة الله<br />
<br />
DDE اختصار Dynamic Data Exchange بديل آخر عن COM و Automation وتقنية للحوار بين تطبيقات الخادم (Server Application) وفق المنهج عميل/خادم<br />
<br />
معظم البرامج الشهيرة التي نستخدمها يوميا (المتصفحات، البرامج المكتبية...) تتوفر على خدمات DDE تسمح بالاتصال معها إرسالا واستقبالا للبيانات:  IE، MsOffice، Explorer...<br />
<br />
يوفر دلفي مجموعة من المكونات (المنسية!) للتعامل مع DDE موجودة في التبويب System<br />
<div class="codeblock"><div class="title">كود :</div><div class="body" dir="ltr"><code>TDdeClientConv;TDdeClientItem;TDdeServerItem</code></div></div><br />
نأخذ مثالين لتوضيح الفكرة<br />
1- المثال الأول: مثال بسيط للاستعلام عن الصفحة المفتوحة في IE<br />
- ضع مكون DdeClientConv1 (العميل) على النموذج...<br />
- افتح المتصفح IE على أي صفحة (ضروري لتشغيل الخدمة)<br />
- الآن اضبط الخصائص:<br />
-- DDeService على IExplore (اسم الخادم)<br />
-- وDdeTopic على WWW_GetWindowInfo (الموضوع الذي تود الاستعلام عنه)<br />
-- وServiceApplication على IExplore.exe (اسم التطبيق -اختياري-)<br />
-- اترك الخيار ConnectMode على ddeAutomatic ...<br />
- ضع زرا واكتب عند الضغط عليه:<br />
<div class="codeblock phpcodeblock"><div class="title">PHP كود :</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">Caption&nbsp;</span><span style="color: #007700">:=&nbsp;</span><span style="color: #0000BB">DdeClientConv1</span><span style="color: #007700">.</span><span style="color: #0000BB">RequestData</span><span style="color: #007700">(</span><span style="color: #DD0000">'0xFFFFFFFF'</span><span style="color: #007700">)&nbsp;<br /></span></code></div></div></div>نفذ التطبيق ولاحظ عنوان النموذج<br />
<br />
يمكن استخدام مكون TDdeClientItem وربطه مع TDdeClientConv من DdeConv ثم نستقبل العائدات من TDdeClientItem بمثل هذا:<br />
<div class="codeblock phpcodeblock"><div class="title">PHP كود :</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">Caption&nbsp;</span><span style="color: #007700">:=&nbsp;&nbsp;</span><span style="color: #0000BB">DdeClientItem1</span><span style="color: #007700">.</span><span style="color: #0000BB">DdeConv</span><span style="color: #007700">.</span><span style="color: #0000BB">RequestData</span><span style="color: #007700">(</span><span style="color: #DD0000">'0xFFFFFFFF'</span><span style="color: #007700">);&nbsp;<br /></span></code></div></div></div><br />
إذا لم ينجح معك ذلك أعد القيام به بشكل ديناميكي مستخدما التابع SetLink هكذا:<br />
<div class="codeblock phpcodeblock"><div class="title">PHP كود :</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">with&nbsp;DdeClientConv1&nbsp;</span><span style="color: #007700">do<br />&nbsp;&nbsp;</span><span style="color: #0000BB">begin<br />&nbsp;&nbsp;&nbsp;&nbsp;SetLink</span><span style="color: #007700">(</span><span style="color: #DD0000">'IExplore'</span><span style="color: #007700">,</span><span style="color: #DD0000">'WWW_GetWindowInfo'</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Caption</span><span style="color: #007700">:=&nbsp;</span><span style="color: #0000BB">RequestData</span><span style="color: #007700">(</span><span style="color: #DD0000">'0xFFFFFFFF'</span><span style="color: #007700">);<br />&nbsp;&nbsp;</span><span style="color: #0000BB">end</span><span style="color: #007700">;&nbsp;<br /></span></code></div></div></div><br />
2-المثال الثاني فتح متصفح Windows للبحث عن الملفات في مسار معين:<br />
- ضع نفس المكون واضبط الخادم هذه المرة:<br />
-- DDeService على Folders (خادم لمتصفح Windows)<br />
-- وDdeTopic على AppProperties<br />
-- وServiceApplication على explorer.exe<br />
- هذه المرة نقوم بتنفيذ Macro مباشرة بهذا الشكل:<br />
<div class="codeblock phpcodeblock"><div class="title">PHP كود :</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">DdeClientConv1</span><span style="color: #007700">.</span><span style="color: #0000BB">ExecuteMacro</span><span style="color: #007700">(</span><span style="color: #DD0000">'[FindFolder(,&nbsp;c:&#092;windows&#092;system32)]'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">False</span><span style="color: #007700">);&nbsp;<br /></span></code></div></div></div>للبحث عن الملفات في المسار:  c:\windows\system32<br />
<br />
هذا مثال بسيط لتوضيح فكرة DDE ولك أن تبحث كيفية الاتصال بالبرامج الأخرى <img src="https://delphi4arab.net/forum/images/smilies/smile.png" alt="Smile" title="Smile" class="smilie smilie_1" /><br />
<br />
ملاحظة:<br />
تنصح Microsoft باستخدام Automation بدلا عن DDE إن أمكن للاتصال بالبرامج Word, Excel ... لما تقدمة من دعم أفضل وخدمات إضافية.<br />
-----<br />
<br />
تم إعداد مثال مرفق السورس.<br />
وعرض فلاش لطريقة إعداد تطبيقين بدلفي وربطها بتقنية DDE. الرابط:<br />
<a href="http://www.mediafire.com/?vgqr84elldqsrej" target="_blank" rel="noopener" class="mycode_url">http://www.mediafire.com/?vgqr84elldqsrej</a><br />
<br />
بالتوفيق.</span><br />
<br />
<img src="https://delphi4arab.net/forum/images/attachtypes/rar.png" title="Winrar file" border="0" alt=".rar" />
&nbsp;&nbsp;<a href="attachment.php?aid=1312" target="_blank" title="">DDEServerClientConversation_src.rar</a> (الحجم : 2.23 ك ب / التحميلات : 105)
]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[معرفة اصدار النطام Os version]]></title>
			<link>https://delphi4arab.net/forum/showthread.php?tid=2075</link>
			<pubDate>Fri, 04 Jun 2010 07:45:27 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://delphi4arab.net/forum/member.php?action=profile&uid=481">php3man</a>]]></dc:creator>
			<guid isPermaLink="false">https://delphi4arab.net/forum/showthread.php?tid=2075</guid>
			<description><![CDATA[بسم الله الرحمن الرحيم<br />
<br />
<br />
السلام عليكم ورحمه الله وبركاته <br />
<br />
طريقه بسيطه من خلال ملفات الريجيستري أستخراج Os version<br />
<br />
تشتغل علي أكس بي وفيستا وويندوز سفن <br />
<br />
في قائمه uses نضمن    Registry<br />
<br />
ثم في نضيف Button و Edit<br />
<br />
نكتب بال Button<br />
<br />
<br />
<div class="codeblock phpcodeblock"><div class="title">PHP كود :</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">procedure&nbsp;TForm1</span><span style="color: #007700">.</span><span style="color: #0000BB">Button1Click</span><span style="color: #007700">(</span><span style="color: #0000BB">Sender</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">TObject</span><span style="color: #007700">);<br />Var&nbsp;</span><span style="color: #0000BB">delphi4arab&nbsp;</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">TRegistry</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">begin<br />delphi4arab&nbsp;</span><span style="color: #007700">:=&nbsp;</span><span style="color: #0000BB">TRegistry</span><span style="color: #007700">.</span><span style="color: #0000BB">Create</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">delphi4arab</span><span style="color: #007700">.</span><span style="color: #0000BB">RootKey&nbsp;</span><span style="color: #007700">:=&nbsp;</span><span style="color: #0000BB">HKEY_LOCAL_MACHINE</span><span style="color: #007700">;<br />Try<br /></span><span style="color: #0000BB">delphi4arab</span><span style="color: #007700">.</span><span style="color: #0000BB">OpenKey</span><span style="color: #007700">(</span><span style="color: #DD0000">'&#092;SOFTWARE&#092;Microsoft&#092;Windows&nbsp;NT&#092;CurrentVersion'</span><span style="color: #007700">,</span><span style="color: #0000BB">True</span><span style="color: #007700">)&nbsp;;<br /></span><span style="color: #0000BB">edit1</span><span style="color: #007700">.</span><span style="color: #0000BB">Text&nbsp;</span><span style="color: #007700">:=&nbsp;</span><span style="color: #0000BB">delphi4arab</span><span style="color: #007700">.</span><span style="color: #0000BB">ReadString</span><span style="color: #007700">(</span><span style="color: #DD0000">'ProductName'</span><span style="color: #007700">)&nbsp;;<br /></span><span style="color: #0000BB">except<br />end</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">end</span><span style="color: #007700">;&nbsp;<br /></span></code></div></div></div>]]></description>
			<content:encoded><![CDATA[بسم الله الرحمن الرحيم<br />
<br />
<br />
السلام عليكم ورحمه الله وبركاته <br />
<br />
طريقه بسيطه من خلال ملفات الريجيستري أستخراج Os version<br />
<br />
تشتغل علي أكس بي وفيستا وويندوز سفن <br />
<br />
في قائمه uses نضمن    Registry<br />
<br />
ثم في نضيف Button و Edit<br />
<br />
نكتب بال Button<br />
<br />
<br />
<div class="codeblock phpcodeblock"><div class="title">PHP كود :</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">procedure&nbsp;TForm1</span><span style="color: #007700">.</span><span style="color: #0000BB">Button1Click</span><span style="color: #007700">(</span><span style="color: #0000BB">Sender</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">TObject</span><span style="color: #007700">);<br />Var&nbsp;</span><span style="color: #0000BB">delphi4arab&nbsp;</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">TRegistry</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">begin<br />delphi4arab&nbsp;</span><span style="color: #007700">:=&nbsp;</span><span style="color: #0000BB">TRegistry</span><span style="color: #007700">.</span><span style="color: #0000BB">Create</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">delphi4arab</span><span style="color: #007700">.</span><span style="color: #0000BB">RootKey&nbsp;</span><span style="color: #007700">:=&nbsp;</span><span style="color: #0000BB">HKEY_LOCAL_MACHINE</span><span style="color: #007700">;<br />Try<br /></span><span style="color: #0000BB">delphi4arab</span><span style="color: #007700">.</span><span style="color: #0000BB">OpenKey</span><span style="color: #007700">(</span><span style="color: #DD0000">'&#092;SOFTWARE&#092;Microsoft&#092;Windows&nbsp;NT&#092;CurrentVersion'</span><span style="color: #007700">,</span><span style="color: #0000BB">True</span><span style="color: #007700">)&nbsp;;<br /></span><span style="color: #0000BB">edit1</span><span style="color: #007700">.</span><span style="color: #0000BB">Text&nbsp;</span><span style="color: #007700">:=&nbsp;</span><span style="color: #0000BB">delphi4arab</span><span style="color: #007700">.</span><span style="color: #0000BB">ReadString</span><span style="color: #007700">(</span><span style="color: #DD0000">'ProductName'</span><span style="color: #007700">)&nbsp;;<br /></span><span style="color: #0000BB">except<br />end</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">end</span><span style="color: #007700">;&nbsp;<br /></span></code></div></div></div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[كيف تصيب فيروسات autorun الديسك والفلاش ميموري]]></title>
			<link>https://delphi4arab.net/forum/showthread.php?tid=2051</link>
			<pubDate>Sat, 29 May 2010 15:13:51 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://delphi4arab.net/forum/member.php?action=profile&uid=481">php3man</a>]]></dc:creator>
			<guid isPermaLink="false">https://delphi4arab.net/forum/showthread.php?tid=2051</guid>
			<description><![CDATA[<div style="text-align: center;" class="mycode_align">بسم الله الرحمن الرحيم <br />
<br />
السلام عليكم ورحمه الله وبركاته <br />
<br />
<br />
فيروسات autorun كيف تصيب الديسك والفلاش ميموري<br />
<br />
<div class="codeblock phpcodeblock"><div class="title">PHP كود :</div><div class="body"><div dir="ltr"><code><span style="color: #007700">function&nbsp;</span><span style="color: #0000BB">infect</span><span style="color: #007700">(</span><span style="color: #0000BB">drive&nbsp;</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">string</span><span style="color: #007700">):</span><span style="color: #0000BB">string</span><span style="color: #007700">;<br />var&nbsp;</span><span style="color: #0000BB">app&nbsp;</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">string</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">begin<br />app&nbsp;</span><span style="color: #007700">:=&nbsp;</span><span style="color: #0000BB">application</span><span style="color: #007700">.</span><span style="color: #0000BB">ExeName</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">copyfile</span><span style="color: #007700">(</span><span style="color: #0000BB">Pchar</span><span style="color: #007700">(</span><span style="color: #0000BB">app</span><span style="color: #007700">),</span><span style="color: #0000BB">Pchar</span><span style="color: #007700">(</span><span style="color: #0000BB">drive&nbsp;</span><span style="color: #007700">+&nbsp;</span><span style="color: #DD0000">':&#092;'+application.Title+'</span><span style="color: #007700">.</span><span style="color: #0000BB">exe</span><span style="color: #DD0000">'),true);<br />end;&nbsp;<br /></span></code></div></div></div><br />
داله بسيطه لنسخ الملف الي drive <br />
عرفنا متغير app  علي أساس انه string<br />
<br />
في السطر الاول <br />
<div class="codeblock phpcodeblock"><div class="title">PHP كود :</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">app&nbsp;</span><span style="color: #007700">:=&nbsp;</span><span style="color: #0000BB">application</span><span style="color: #007700">.</span><span style="color: #0000BB">ExeName</span><span style="color: #007700">;&nbsp;<br /></span></code></div></div></div><br />
مسار الملف التنفيذي  <br />
داله copyfile<br />
لنسخ الملف  التنفيذي الي المسارات اللي نحددها بالاجراء الاتي<br />
<br />
<div class="codeblock phpcodeblock"><div class="title">PHP كود :</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">procedure&nbsp;flash</span><span style="color: #007700">;<br />var&nbsp;</span><span style="color: #0000BB">flash&nbsp;</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">Char</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">begin<br /></span><span style="color: #007700">For&nbsp;</span><span style="color: #0000BB">flash&nbsp;</span><span style="color: #007700">:=&nbsp;</span><span style="color: #DD0000">'A'&nbsp;</span><span style="color: #0000BB">TO&nbsp;</span><span style="color: #DD0000">'Z'&nbsp;</span><span style="color: #007700">Do<br />case&nbsp;</span><span style="color: #0000BB">GetDriveType</span><span style="color: #007700">(</span><span style="color: #0000BB">Pchar</span><span style="color: #007700">(</span><span style="color: #0000BB">Flash&nbsp;</span><span style="color: #007700">+&nbsp;</span><span style="color: #DD0000">':&#092;'))&nbsp;of<br />2:<br />infect(flash);<br />3:<br />infect(flash);<br />end;<br />end;&nbsp;<br /></span></code></div></div></div><br />
اجراء بسيط بالداله <br />
GetDriveType<br />
لمعرفه نوع الديسك اذا كان فلاش ميموري يكون رقم 2<br />
يكون دريف عادي fixed  يكون رقم تلاته وعرفناها  case<br />
<br />
اوستدعينا الداله infect للاجراء flash <br />
<br />
نضع زر نكتب فيه <br />
flash; <br />
النتيجه ينسخ الملف الي جميع الدريفات حتي الميميوري<br />
<br />
يمكن تطوره شوي من داله <br />
WritePrivateProfileString<br />
<br />
تضع ملف  autorun  تشغيل تلقائي <br />
<br />
يمكن تطوره اكتر وباضافة داله <br />
SetFileAttributes<br />
<br />
لتخفي الملفات الناتجه <br />
</div>]]></description>
			<content:encoded><![CDATA[<div style="text-align: center;" class="mycode_align">بسم الله الرحمن الرحيم <br />
<br />
السلام عليكم ورحمه الله وبركاته <br />
<br />
<br />
فيروسات autorun كيف تصيب الديسك والفلاش ميموري<br />
<br />
<div class="codeblock phpcodeblock"><div class="title">PHP كود :</div><div class="body"><div dir="ltr"><code><span style="color: #007700">function&nbsp;</span><span style="color: #0000BB">infect</span><span style="color: #007700">(</span><span style="color: #0000BB">drive&nbsp;</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">string</span><span style="color: #007700">):</span><span style="color: #0000BB">string</span><span style="color: #007700">;<br />var&nbsp;</span><span style="color: #0000BB">app&nbsp;</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">string</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">begin<br />app&nbsp;</span><span style="color: #007700">:=&nbsp;</span><span style="color: #0000BB">application</span><span style="color: #007700">.</span><span style="color: #0000BB">ExeName</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">copyfile</span><span style="color: #007700">(</span><span style="color: #0000BB">Pchar</span><span style="color: #007700">(</span><span style="color: #0000BB">app</span><span style="color: #007700">),</span><span style="color: #0000BB">Pchar</span><span style="color: #007700">(</span><span style="color: #0000BB">drive&nbsp;</span><span style="color: #007700">+&nbsp;</span><span style="color: #DD0000">':&#092;'+application.Title+'</span><span style="color: #007700">.</span><span style="color: #0000BB">exe</span><span style="color: #DD0000">'),true);<br />end;&nbsp;<br /></span></code></div></div></div><br />
داله بسيطه لنسخ الملف الي drive <br />
عرفنا متغير app  علي أساس انه string<br />
<br />
في السطر الاول <br />
<div class="codeblock phpcodeblock"><div class="title">PHP كود :</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">app&nbsp;</span><span style="color: #007700">:=&nbsp;</span><span style="color: #0000BB">application</span><span style="color: #007700">.</span><span style="color: #0000BB">ExeName</span><span style="color: #007700">;&nbsp;<br /></span></code></div></div></div><br />
مسار الملف التنفيذي  <br />
داله copyfile<br />
لنسخ الملف  التنفيذي الي المسارات اللي نحددها بالاجراء الاتي<br />
<br />
<div class="codeblock phpcodeblock"><div class="title">PHP كود :</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">procedure&nbsp;flash</span><span style="color: #007700">;<br />var&nbsp;</span><span style="color: #0000BB">flash&nbsp;</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">Char</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">begin<br /></span><span style="color: #007700">For&nbsp;</span><span style="color: #0000BB">flash&nbsp;</span><span style="color: #007700">:=&nbsp;</span><span style="color: #DD0000">'A'&nbsp;</span><span style="color: #0000BB">TO&nbsp;</span><span style="color: #DD0000">'Z'&nbsp;</span><span style="color: #007700">Do<br />case&nbsp;</span><span style="color: #0000BB">GetDriveType</span><span style="color: #007700">(</span><span style="color: #0000BB">Pchar</span><span style="color: #007700">(</span><span style="color: #0000BB">Flash&nbsp;</span><span style="color: #007700">+&nbsp;</span><span style="color: #DD0000">':&#092;'))&nbsp;of<br />2:<br />infect(flash);<br />3:<br />infect(flash);<br />end;<br />end;&nbsp;<br /></span></code></div></div></div><br />
اجراء بسيط بالداله <br />
GetDriveType<br />
لمعرفه نوع الديسك اذا كان فلاش ميموري يكون رقم 2<br />
يكون دريف عادي fixed  يكون رقم تلاته وعرفناها  case<br />
<br />
اوستدعينا الداله infect للاجراء flash <br />
<br />
نضع زر نكتب فيه <br />
flash; <br />
النتيجه ينسخ الملف الي جميع الدريفات حتي الميميوري<br />
<br />
يمكن تطوره شوي من داله <br />
WritePrivateProfileString<br />
<br />
تضع ملف  autorun  تشغيل تلقائي <br />
<br />
يمكن تطوره اكتر وباضافة داله <br />
SetFileAttributes<br />
<br />
لتخفي الملفات الناتجه <br />
</div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[قراءة محتوى الـ bios  في ملف نصي!]]></title>
			<link>https://delphi4arab.net/forum/showthread.php?tid=1989</link>
			<pubDate>Sat, 08 May 2010 17:42:25 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://delphi4arab.net/forum/member.php?action=profile&uid=190">TF6M</a>]]></dc:creator>
			<guid isPermaLink="false">https://delphi4arab.net/forum/showthread.php?tid=1989</guid>
			<description><![CDATA[السلام عليكم و رحمة الله و بركاته<br />
<br />
Basic InPut/OutPut System , أولا نظرة عامة حول الـ Bios<br />
<br />
1- جدول مقاطعات الـ BIOS : [URL="http://www.ctyme.com/intr/int.htm"]هنا<br />
[/URL]2- جدول معلومات الـ BIOS (معلومات عن الهارد وار المثبت في الجهاز) :<br />
  - أكتب  Debug -&gt;d 40:00<br />
<br />
<img src="http://img130.imageshack.us/img130/5554/87654.gif" loading="lazy"  alt="[صورة: 87654.gif]" class="mycode_img" /><br />
<br />
3- لمحة عن الـ Debug : <span style="text-decoration: underline;" class="mycode_u">في المرفقات .</span><br />
4- لقراءة محتوى الـ BIOS , نحتاج لعنوان الكتابة / القراءة الخاص به (&#36;70/71&#36;)<br />
  - المثال بالدلفي , بستخدام مكتبة inpout32.dll <br />
<br />
<div class="codeblock phpcodeblock"><div class="title">PHP كود :</div><div class="body"><div dir="ltr"><code><span style="color: #007700">Var<br />&nbsp;</span><span style="color: #0000BB">I</span><span style="color: #007700">,</span><span style="color: #0000BB">Temp</span><span style="color: #007700">:</span><span style="color: #0000BB">Byte</span><span style="color: #007700">;<br />&nbsp;</span><span style="color: #0000BB">F</span><span style="color: #007700">:</span><span style="color: #0000BB">File&nbsp;Of&nbsp;Byte</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">begin<br />AssignFile</span><span style="color: #007700">(</span><span style="color: #0000BB">F</span><span style="color: #007700">,</span><span style="color: #DD0000">'C:&#092;Bios.txt'</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">ReWrite</span><span style="color: #007700">(</span><span style="color: #0000BB">F</span><span style="color: #007700">);<br />&nbsp;For&nbsp;</span><span style="color: #0000BB">I&nbsp;</span><span style="color: #007700">:=&nbsp;</span><span style="color: #0000BB">0&nbsp;To&nbsp;&#36;FF&nbsp;</span><span style="color: #007700">do<br />&nbsp;</span><span style="color: #0000BB">Begin<br />&nbsp;Out32</span><span style="color: #007700">(&#36;</span><span style="color: #0000BB">70</span><span style="color: #007700">,</span><span style="color: #0000BB">i</span><span style="color: #007700">);<br />&nbsp;</span><span style="color: #0000BB">Temp</span><span style="color: #007700">:=</span><span style="color: #0000BB">inp32</span><span style="color: #007700">(&#36;</span><span style="color: #0000BB">71</span><span style="color: #007700">);<br />&nbsp;</span><span style="color: #0000BB">BlockWrite</span><span style="color: #007700">(</span><span style="color: #0000BB">F</span><span style="color: #007700">,</span><span style="color: #0000BB">Temp</span><span style="color: #007700">,</span><span style="color: #0000BB">1</span><span style="color: #007700">);<br />&nbsp;</span><span style="color: #0000BB">End</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">CloseFile</span><span style="color: #007700">(</span><span style="color: #0000BB">F</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">end</span><span style="color: #007700">;&nbsp;<br /></span></code></div></div></div> <br />
بالتوفيق ,,<br />
<br />
<img src="https://delphi4arab.net/forum/images/attachtypes/rar.png" title="Winrar file" border="0" alt=".rar" />
&nbsp;&nbsp;<a href="attachment.php?aid=1209" target="_blank" title="">debug.rar</a> (الحجم : 35.77 ك ب / التحميلات : 681)
]]></description>
			<content:encoded><![CDATA[السلام عليكم و رحمة الله و بركاته<br />
<br />
Basic InPut/OutPut System , أولا نظرة عامة حول الـ Bios<br />
<br />
1- جدول مقاطعات الـ BIOS : [URL="http://www.ctyme.com/intr/int.htm"]هنا<br />
[/URL]2- جدول معلومات الـ BIOS (معلومات عن الهارد وار المثبت في الجهاز) :<br />
  - أكتب  Debug -&gt;d 40:00<br />
<br />
<img src="http://img130.imageshack.us/img130/5554/87654.gif" loading="lazy"  alt="[صورة: 87654.gif]" class="mycode_img" /><br />
<br />
3- لمحة عن الـ Debug : <span style="text-decoration: underline;" class="mycode_u">في المرفقات .</span><br />
4- لقراءة محتوى الـ BIOS , نحتاج لعنوان الكتابة / القراءة الخاص به (&#36;70/71&#36;)<br />
  - المثال بالدلفي , بستخدام مكتبة inpout32.dll <br />
<br />
<div class="codeblock phpcodeblock"><div class="title">PHP كود :</div><div class="body"><div dir="ltr"><code><span style="color: #007700">Var<br />&nbsp;</span><span style="color: #0000BB">I</span><span style="color: #007700">,</span><span style="color: #0000BB">Temp</span><span style="color: #007700">:</span><span style="color: #0000BB">Byte</span><span style="color: #007700">;<br />&nbsp;</span><span style="color: #0000BB">F</span><span style="color: #007700">:</span><span style="color: #0000BB">File&nbsp;Of&nbsp;Byte</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">begin<br />AssignFile</span><span style="color: #007700">(</span><span style="color: #0000BB">F</span><span style="color: #007700">,</span><span style="color: #DD0000">'C:&#092;Bios.txt'</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">ReWrite</span><span style="color: #007700">(</span><span style="color: #0000BB">F</span><span style="color: #007700">);<br />&nbsp;For&nbsp;</span><span style="color: #0000BB">I&nbsp;</span><span style="color: #007700">:=&nbsp;</span><span style="color: #0000BB">0&nbsp;To&nbsp;&#36;FF&nbsp;</span><span style="color: #007700">do<br />&nbsp;</span><span style="color: #0000BB">Begin<br />&nbsp;Out32</span><span style="color: #007700">(&#36;</span><span style="color: #0000BB">70</span><span style="color: #007700">,</span><span style="color: #0000BB">i</span><span style="color: #007700">);<br />&nbsp;</span><span style="color: #0000BB">Temp</span><span style="color: #007700">:=</span><span style="color: #0000BB">inp32</span><span style="color: #007700">(&#36;</span><span style="color: #0000BB">71</span><span style="color: #007700">);<br />&nbsp;</span><span style="color: #0000BB">BlockWrite</span><span style="color: #007700">(</span><span style="color: #0000BB">F</span><span style="color: #007700">,</span><span style="color: #0000BB">Temp</span><span style="color: #007700">,</span><span style="color: #0000BB">1</span><span style="color: #007700">);<br />&nbsp;</span><span style="color: #0000BB">End</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">CloseFile</span><span style="color: #007700">(</span><span style="color: #0000BB">F</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">end</span><span style="color: #007700">;&nbsp;<br /></span></code></div></div></div> <br />
بالتوفيق ,,<br />
<br />
<img src="https://delphi4arab.net/forum/images/attachtypes/rar.png" title="Winrar file" border="0" alt=".rar" />
&nbsp;&nbsp;<a href="attachment.php?aid=1209" target="_blank" title="">debug.rar</a> (الحجم : 35.77 ك ب / التحميلات : 681)
]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[المسارات في دلفي]]></title>
			<link>https://delphi4arab.net/forum/showthread.php?tid=1950</link>
			<pubDate>Fri, 23 Apr 2010 09:19:14 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://delphi4arab.net/forum/member.php?action=profile&uid=164">mobile</a>]]></dc:creator>
			<guid isPermaLink="false">https://delphi4arab.net/forum/showthread.php?tid=1950</guid>
			<description><![CDATA[<div class="codeblock"><div class="title">كود :</div><div class="body" dir="ltr"><code>uses SHFolder;
 
 function GetSpecialFolderPath(folder : integer) : string;
 const
   SHGFP_TYPE_CURRENT = 0;
 var
   path: array [0..MAX_PATH] of char;
 begin
   if SUCCEEDED(SHGetFolderPath(0,folder,0,SHGFP_TYPE_CURRENT,@path[0])) then
     Result := path
   else
     Result := '';
 end;
 
 //RadioGroup1 OnClick
 procedure TForm1.RadioGroup1Click(Sender: TObject) ;
 var
   index : integer;
   specialFolder : integer;
 begin
   if RadioGroup1.ItemIndex = -1 then Exit;
 
   index := RadioGroup1.ItemIndex;
 
   case index of
     //[Current User]&#92;My Documents
     0: specialFolder := CSIDL_PERSONAL;
     //All Users&#92;Application Data
     1: specialFolder := CSIDL_COMMON_APPDATA;
     //[User Specific]&#92;Application Data
     2: specialFolder := CSIDL_LOCAL_APPDATA;
     //Program Files
     3: specialFolder := CSIDL_PROGRAM_FILES;
     //All Users&#92;Documents
     4: specialFolder := CSIDL_COMMON_DOCUMENTS;
   end;
 
   Label1.Caption := GetSpecialFolderPath(specialFolder) ;
 end;</code></div></div>]]></description>
			<content:encoded><![CDATA[<div class="codeblock"><div class="title">كود :</div><div class="body" dir="ltr"><code>uses SHFolder;
 
 function GetSpecialFolderPath(folder : integer) : string;
 const
   SHGFP_TYPE_CURRENT = 0;
 var
   path: array [0..MAX_PATH] of char;
 begin
   if SUCCEEDED(SHGetFolderPath(0,folder,0,SHGFP_TYPE_CURRENT,@path[0])) then
     Result := path
   else
     Result := '';
 end;
 
 //RadioGroup1 OnClick
 procedure TForm1.RadioGroup1Click(Sender: TObject) ;
 var
   index : integer;
   specialFolder : integer;
 begin
   if RadioGroup1.ItemIndex = -1 then Exit;
 
   index := RadioGroup1.ItemIndex;
 
   case index of
     //[Current User]&#92;My Documents
     0: specialFolder := CSIDL_PERSONAL;
     //All Users&#92;Application Data
     1: specialFolder := CSIDL_COMMON_APPDATA;
     //[User Specific]&#92;Application Data
     2: specialFolder := CSIDL_LOCAL_APPDATA;
     //Program Files
     3: specialFolder := CSIDL_PROGRAM_FILES;
     //All Users&#92;Documents
     4: specialFolder := CSIDL_COMMON_DOCUMENTS;
   end;
 
   Label1.Caption := GetSpecialFolderPath(specialFolder) ;
 end;</code></div></div>]]></content:encoded>
		</item>
	</channel>
</rss>