GamingMasteR

Coding Native Applications

19 ردود في هذا الموضوع

السلام عليكم ورحمة الله وبركاته .

منذ مدة كنت أتسائل كيف يعمل برنامج الـAutochk الذي يعمل مع الـStartup في الويندوز (برنامج فحص الملفات من الأخطاء) , المهم أني قمت بتحليل على السريع له فوجدت انه (Native Exe) وليس مرتبط إلا بالمكتبة ntdll.dll والتي تقريبا كل الدوال بها undocumented !!

بعد قليل من البحث في جوجل تأكدت مما سبق , لكن لاحظت أن كل الأمثلة تتحدث بأنه يجب صنع Native Exe عن طريق الـDDK , في الحقيقة يمكن فعل ذلك من مترجم الـVC++ 2005 العادي مع ضبط خيارات الـcompiler & linker بطريقة صحيحة + دمج مكتبة ntdll.lib وسوف أسوق مثال عملي إن شاء الله مع السورس كود .

أولا يجب أن نقوم بضبط الـCompiler و الـLinker كالآتي (VC++ 2005) :

Compiler:

int
printf(
[color=" blue"]char[/color] *format ,
...
)
{
UNICODE_STRING umsg;
ANSI_STRING amsg;
[color=" blue"]char[/color] buf[MAX_OUTPUT_LENGTH];
va_list args = va_start(format);
[color=" blue"]int[/color] szbuf;


szbuf = _vsnprintf(buf, MAX_OUTPUT_LENGTH, format, args);
RtlInitAnsiString(&amsg, buf);
[color=" blue"]if[/color] (0 == RtlAnsiStringToUnicodeString(&umsg, &amsg, [color=" blue"]true[/color]))
{
NtDisplayString(&umsg);
RtlFreeUnicodeString(&umsg);
}
[color=" blue"]return[/color] szbuf;
}

قمنا أيضا بعمل دالتين بسيطتين لحجز كتل من الذاكرة عن طريق RtlAllocateHeap & RtlFreeHeap :

HANDLE
__declspec([color=" blue"]naked[/color])
GetHeapProcess(
VOID
)
{
[color=" blue"]__asm[/color] mov eax,dword ptr fs:[0x18];
[color=" blue"]__asm[/color] mov eax,dword ptr [eax+0x30];
[color=" blue"]__asm[/color] mov eax,dword ptr [eax+0x18];
[color=" blue"]__asm[/color] ret;
}

PVOID
mem_alloc(
size_t cb
)
{
[color=" blue"]return[/color] RtlAllocateHeap(GetHeapProcess(), HEAP_NO_SERIALIZE|HEAP_ZERO_MEMORY, cb);
}

BOOLEAN
mem_free(
PVOID ptr
)
{
[color=" blue"]return[/color] RtlFreeHeap(GetHeapProcess(), HEAP_NO_SERIALIZE, ptr);
}

في الدالة GetHeapProcess أولا نضع eax=fs:[0x18] وهو مؤشر الى الـTEB للثريد الحالي ثم eax=[eax+0x30] وهو يشير الى ProcessEnvironmentBlock وهو مؤشر الى الـPEB للعملية الحالية , بعد ذلك eax=[eax+0x18] و هو يشير الى ProcessHeap و هو عنوان مقبض أول heap قام النظام بإنشاؤه للعملية الحالية .

قمنا أيضا بعمل دالة تحاكي عمل Sleep وذلك عن طريق تغليف NtDelayExecution مع ملاحظة ان Sleep تأخذ الزمن بالـMilli أما NtDelayExecution فتأخذ الزمن بالـnano/100 أي 10^7 كما انه يجب وضع القيمة بالسالب للعلامة على بدأ العد من لحظة الآن :

VOID
Freeze(
DWORD dwMilliseconds
)
{
LARGE_INTEGER larg_int;
larg_int.QuadPart = -((LONGLONG)dwMilliseconds*10*1000);
NtDelayExecution([color=" blue"]false[/color], (PLARGE_INTEGER)&larg_int);
}

باقي السورس لا يحتاج تفصيل وواضح جدا ...

--------------------------------

لجعل البرنامج يعمل في Startup يجب اضافة اسمه في مفتاح الرجستري هذا :

HKLM\System\CurrentControlSet\Control\Session Manager\BootExecute

ثم تقوم بوضع البرنامج في WINDOWS\System32\

البرنــــــــــامج النهـــــائي :

http://img258.imageshack.us/img258/5714/bootec8.swf

GamingMasteR –AT4RE

boot.rar

تم تعديل بواسطه GamingMasteR
4

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

ذكرتنا بأيام الشباب :D

منذ مدة كنت أتسائل كيف يعمل برنامج الـAutochk الذي يعمل مع الـStartup في الويندوز (برنامج فحص الملفات من الأخطاء) , المهم أني قمت بتحليل على السريع له فوجدت انه (Native Exe) وليس مرتبط إلا بالمكتبة ntdll.dll والتي تقريبا كل الدوال بها undocumented !!

ولماذا لا تسأل هنا ؟ :P

Nov 8 2002

http://www.arabteam2000-forum.com/index.ph...5&hl=native

وهنا معلومة قد تفيدك

http://www.arabteam2000-forum.com/index.ph...4&hl=native

طبعاً الحل الأفضل للمشكلة في الموضوع السابق هو عمل loop لتفحص ما هو الKeyboardClass المستعمل ..

ربما أضع المثال لاحقاً ..

هناك مجموعة دوال لا أعلم إن كنت سمعت عنها خاصة بـ boot video driver .

الموضوع شيق وربما لي عودة

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

أهلا CIONO1 , المشكلة أني أبدأ البحث في جوجل على طول :blush: وبالفعل وجدت موضوعين واحد لـMark تكلم فيه عن البناء بالـDDK ولم يعطي امثلة , وواحد في Codeproject اعطى وصلة لمقال قديم لـMark المفروض ان فيه مثال لكن للأسف لا يعمل ذلك الرابط (يعني كان يوجد مقالين لـMark واحد بدون مثال والاخر بمثال تم حذفه) ...

الفكرة هنا هي البناء بمترجم الـVC العادي لأن الكثير لم يتعامل معل الـddk وعمل compile به سيكون جديد عليهم وربما يخفقوا .

موضوع استخدام الكيبورد سأبحث عنه اذا دخل موضوع الـNative Application دماغي :happy: (كانت فكرة عابرة والسلام) .

----------------------

بالمناسبة ... هل أجد لديك ملف هيدر للـntdll ؟؟ لدي واحد من عمل Four-F لكن بالأسمبلي , أستطيع تحويله جملة بسكريبت لكن سيكون كل انواع الداتا عبارة عن DWORD :unsure: ... أرجوا ان تفيدني في هذا الأمر .

تم تعديل بواسطه GamingMasteR
اضافة
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

كنت وضعت رد وذهب مع الرياح :lol:

أنت تعلم أن Mark إنتقل إلى ميكو و إنتقل موقعه معه أيضاً

http://technet.microsoft.com/en-us/sysinte...s/bb897447.aspx

الفكرة هنا هي البناء بمترجم الـVC العادي لأن الكثير لم يتعامل معل الـddk وعمل compile به سيكون جديد عليهم وربما يخفقوا

نسيت أن أذكر في ردي أن الأخ محمد سعيد ( لا أعلم أين هو الآن , ربنا يوفقه) كان وضع طريقة البناء في VC6.0 في موضوع له في منتدى الإبداع الإسلامي ( الموقع لا يعمل ). ما زال موضوعه محفوظ عندي ...

موضوع استخدام الكيبورد سأبحث عنه اذا دخل موضوع الـNative Application دماغي

:D

بالمناسبة ... هل أجد لديك ملف هيدر للـntdll ؟؟ لدي واحد من عمل Four-F لكن بالأسمبلي , أستطيع تحويله جملة بسكريبت لكن سيكون كل انواع الداتا عبارة عن DWORD ... أرجوا ان تفيدني في هذا الأمر

للأسف ليس لدي ... أعتقد أنه موجود على النت , سأبحث عنه ...

انصح بتحميل كتاب "The Undocumented Functions For Microsoft Windows NT2000"

أيضاً Windows NT/2000 Native API Reference by Gary Nebbett

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

نعم هذا هو نفس الموضوع الذي قرأته , يقوم في اخر جزأ :

I've created a toy native application that demonstrates how native applications are built and how they work.

لكن لم أجد شئ :)

شكرا أخي على الرد .

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

بالفعل المثال لم يعد موجوداً هناك ... موجود عندي لكن في الكمبيوتر الأخر سأرفعه هنا لاحقاً ...

هل صادفت برامج (جاهزة) من النوع Native Application تقدم أفكار جديدة غير عمل Display ؟

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

موضوع شيق تشكر عليه

CIONO1 هنا؟ يا مرحبا يا مرحبا :)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
هل صادفت برامج (جاهزة) من النوع Native Application تقدم أفكار جديدة غير عمل Display ؟

لا اذكر أيضا اني وجدت شئ مفتوح المصدر اثناء البحث في جوجل .

البرامج التجارية التي تستخدم برامج مشابهة والتي اتذكرها مثل Partition Magic ... لست متأكد أيضا اذا كانت تستخدم Exe ام VxD .

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
CIONO1 هنا؟ يا مرحبا يا مرحبا

هلا راكان ...

لسه بتذكر النقاش معك في موضوع القاموس وكأنه كان قبل أيام :D

والتي اتذكرها مثل Partition Magic ... لست متأكد أيضا اذا كانت تستخدم Exe ام VxD

يستخدم Native Application , كنت قد تتبعته من قبل ...

هناك العديد من الـ AntiVirus الصينية تستعمل هذا النوع من التطبيقات ...

تم تعديل بواسطه cipher
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
هلا راكان ...

لسه بتذكر النقاش معك في موضوع القاموس وكأنه كان قبل أيام :D

هههه انا اتحسر على تلك الأيام, لاني نسيت كل ما قلته في ذلك الموضوع, لذلك رجاءا لا ترجع تفتحه :P

هل وجدت حل للمشكلة بالمناسبة؟

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
لذلك رجاءا لا ترجع تفتحه

ههههه, لا تخف , لا أفتح المواضيع القديمة ما لم تفتح من قبل آخرين

هل وجدت حل للمشكلة بالمناسبة؟

الحل من زمان !!! صار له سنتين أو أكثر ...

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

كنت قرأت بالسابق Cipher و هو يتحدث عن الموضوع, و يناشد اصحاب الخبرة بالمساعدة :lol: , و لم افهم شيئ من ما هو مطلوب, اليوم حتى ادركت ما معنى Native Applications, يعني هي تعمل فقط باستخدام ntdll.

لدي عدة اسئلة:

1- ما هي فائدة عمل تطبيق بحيث يكون Native Application? هل هناك تحكم اكبر, قوة أكبر

2- هل يمكن عمل تطبيق ما يعمل ضمن Windows ولا يعتمد حتى على Ntdll؟

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
1- ما هي فائدة عمل تطبيق بحيث يكون Native Application? هل هناك تحكم اكبر, قوة أكبر

فائدة مثل ما ذكرت كعمل برنامج يعمل عند Startup مثل autochek او كما قال cipher بعض برامج الحماية تستخدمه ...

2- هل يمكن عمل تطبيق ما يعمل ضمن Windows ولا يعتمد حتى على Ntdll؟

يمكن لكن ستستغني عن جميع مكتبات ويندوز (kernel32-user32-gdi32 ووو ..) وستتعامل مع النواة عن طريق الـsyscalls فقط , يعني محاكاة لما يقوم به ntdll , لاحظ أيضا ان ntdll سيتم تحميله مع بداية التنفيذ .

تم تعديل بواسطه GamingMasteR
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

للمهتمين فقط :D

قبل دقائق من كتابة الرد وأثناء البحث وجدت هذا :

http://ultradefrag.sourceforge.net

Exe 32-bit

http://downloads.sourceforge.net/ultradefr....0.bin.i386.exe

Exe 64-bit

http://downloads.sourceforge.net/ultradefr....0.bin.ia64.exe

Exe AMD 64bit

http://downloads.sourceforge.net/ultradefr...0.bin.amd64.exe

Source code

http://nchc.dl.sourceforge.net/sourceforge...g-1.2.0.src.zip

فيه الكود الخاص بـ Native Application .وهذا أحد الأمثلة على إستخدامها ... (لم أجرب البرنامج والكود حتى الآن)...

من نظره سريعه على الكود :

يستخدم \\Device\\KeyboardClass0 أثناء قراءة Keyboard input .لا أعلم إن كان سينجح في windowsxp أو لا...

سأقوم بالتجربه لاحقاً ...

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

الطريقة تعمل أخي cipher , قام الاخ in4matics بتجربتها ووضع السورس كود أيضا :

hxxp://www.at4re.com/f/showthread.php?p=29146#post29146

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

اللى اعرفه ان aphex في الدلفي عامل unit سماها NativeAPI من سنتين

فما اعرف اذا كان هذا جديد عندكم في ++c :D

NativeAPI.rar

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

نعرف لكنه غير كامل ايضا ...

نسخة الاسمبلي من four-f كاملة .

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

GamingMasteR

يا صاح ظنيت أنك لقيت الملف ... أنا وجدته قبل يومين بس كنت مشغول بـ RE لمضاد الفيروسات الصيني الذي تحدثت عنه ... راجع المرفق

على فكرة أثناء البرمجة هناك (وقت عمل Native Application) ستعود لأشياء في زمن الـ Dos :) . على الأقل هذا ما لاحظته حتى الآن ... بس تنحل المشاكل - في الحياة اليومية - اللي فيها هاليومين سأضع بعض ما توصلت له ...

ntdllsdk.rar

تم تعديل بواسطه cipher
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

شكراً أخي cipher بالفعل سيسهل هذا الهيدر امور كثيرة :thumb_up: :thumb_up:

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .