الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

[ تمت الإجابة ]استخدام لغة Assembly في ++ C

بدأه premo في 14 ديسمبر 2008 · 8 رد · 1,704 مشاهدة · في أرشيف قسم الـــ Assembly
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

اولا اريد ان اشكر جميع المسؤولين عن هاذا المنتدى الرائع الذي وجدت فية معلومات لم اجدها في اي موقع اجنبي

انا مبتدي في الاسمبلي

اريد ان اقوم با دخال الامر

jmp 00900000 مثلا الى عنوان في الذاكرة يكون فارغا

وذلك في مشروع ملف

dll

السورس كود تبع الملف

include "stdafx.h"

#include <windows.h>

#include <iostream>

#include <fstream>

BOOL APIENTRY DllMain(HINSTANCE hinstDll, DWORD fdwReason, LPVOID lpvReserved)

{

switch(fdwReason)

{

case DLL_PROCESS_ATTACH:

MessageBoxA(NULL, "premo", "Injection Successful", MB_OK); //Message Box.

}

return true;

}

يعني بشكل اخر اريد استخدام اوامر الاسميلي في السورس كود تبع ملف

dll

برنامج

visual c++ express

شكرا لكم

تم تعديل هذه المشاركة بواسطة premo في 14 ديسمبر 2008 في 21:40

#2
__asm [color= #000000;]{

    xor eax, eax

    cld

[color= #000000;]};

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

#3

لم افهم هذا الكود.هل مثلا يقوم بتعريف لغة الاسمبلي.؟

كما قلت لك انا مبتدي. واريد ان اقوم بامر jmp الى عنوان في الذاكرة .

#4

تريد حقن قفزة من عنوان الى عنوان معين ,, أم تريد تنفيذ قفزة داخل الكود نفسه ؟

تم تعديل هذه المشاركة بواسطة GamingMasteR في 15 ديسمبر 2008 في 13:35

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

#5

اريد ان اقوم بقفزة من عنوان الى عنوان معين .

مثلا

لنفرض هاذة العناوين

0x6d9d7598

0x6d9d6760

0x6d9d5109

اريد ان اقفز من 0x6d9d7598 الى 0x6d9d5109 بدون المرور بالعنوان 0x6d9d6760

لدي برنامج يقوم بالتعليق اذا مر بهذا العنوان 0x6d9d6760 لذا اريد تطعيم هذا البرنامج بملف dll لكي يغير من حركة الذاكرة الخاصة بهذا البرنامج

شكرا على تفاعللك معي

تم تعديل هذه المشاركة بواسطة premo في 15 ديسمبر 2008 في 16:17

#6

بما أن البرنامج موجود لديك بالكامل فلم لا تقوم بإصلاح المشكلة طالما تعرف المكان الذي يحدث فيه الخلل ؟

أمر آخر لم لا تقوم بالتعديل على البرنامج مباشرة دون استخدام DLL ؟

تم تعديل هذه المشاركة بواسطة Xacker في 15 ديسمبر 2008 في 16:38

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#7
Xacker كتب:
بما أن البرنامج موجود لديك بالكامل فلم لا تقوم بإصلاح المشكلة طالما تعرف المكان الذي يحدث فيه الخلل ؟

أمر آخر لم لا تقوم بالتعديل على البرنامج مباشرة دون استخدام DLL ؟

اخي الكريم

كما قلت سابقا اريد استخدام امر

jmp

لمعرفة خلفية عن هذا الامر الذي يكون بداية جيدة لتعلمي لغة الاسمبلي نظرا لانني مبتدي جدا

استطيع اصلاح المشكلة بعدة طرق لكن المغزى ليس من ذلك

لقد تيحت لي فكرة عن هذة الطريقة واريد استخدام

simple DLL to change the way memory flows .

0xDEADBEEF انت تعرف هذا

ما شاء الله يبدو انك خبير

تم تعديل هذه المشاركة بواسطة premo في 15 ديسمبر 2008 في 18:06

#8

استخدم اولا VirtualProtect لاتاحة الـWrite Access على الذاكرة المراد الكتابة عليها ثم قم بحقن الـOpcode الخاص بالقفزة :

البايت الأول = 0xe9 .

الـdword التالي للبايت السابق =

العنوان الذي سنقفز اليه (0x6d9d5109)

- عنوان القفزة نفسها (0x6d9d5109)

- 5

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

#9
GamingMasteR كتب:
استخدم اولا VirtualProtect لاتاحة الـWrite Access على الذاكرة المراد الكتابة عليها ثم قم بحقن الـOpcode الخاص بالقفزة :

البايت الأول = 0xe9 .

الـdword التالي للبايت السابق =

العنوان الذي سنقفز اليه (0x6d9d5109)

- عنوان القفزة نفسها (0x6d9d5109)

- 5

شكرا جزيلا اخي الكريم

مواضيع مشابهة