دوست عزيز حرفهاي من آينه تمام نماي حرفهاي خودته اگه توش بي ادبي ميبيني دليلش رو در حرفاي خودت بايد جستجو كني نه در سنت من! اينم درس بعدي...کماکان بی ادبیها و مطالب نامربوطت رو که احتمالا اقتضای سنت هست نادیده میگیرم .
اين حرفت رو به عنوان يك جك در دفترچه خاطراتم ثبت ميكنم.WriteProcessMemory باید کد مورد نظر تو رو روی استک بنویسه ، در واقع استک تنها مسئله ای هست که به این قضیه مربوطه .
متاسفانه در اثر خواندن مقالات پراكنده بدجوري خودت رو گيج كردي! هيچ قانوني وجود نداره كه بگه من حتما بايد در پشته كدهامو بنويسم ! ديدي كه عملا با يك برنامه ساده بهت نشون دادم و اين برنامه ميتونه كاملتر شه و حتي اگر در داخل كد از ديتاسكشن هم استفاده شده باشه خودش به صورت خودكار ديتاسكشن رو هم با پروسيجر تزريق كنه...
الان متوجه شدم !بعد از اینکه با مفهوم استک آشنا شدی و مشخص شد که چرا باید ابتدا با تابع VirtualAllocEx ضمن تخصیص ، مجوز Page هائی که Allocate میشن رو به EXECUTE_READWRITE تغییر بدی متوجه میشی که چرا نمیتونی بین Page هات Far Jump کنی . در مقاله ای که لینکش رو دادم اگر به قسمت Why can my ThreadFunc have only 4k of local variables? مراجعه کنی به وضوح این مسئله "بدیهی" رو توضیح داده که چرا نمیتونی از 4k تجاوز کنی و اگر هم بکنی با Access Violation مواجه میشه .
متاسفانه اصلا متوجه نميشي چي دارم ميگم و منظورم چيه. ترجيح ميدم با آدمي كه حتي با تجربه عملي چيزي رو قبول نميكنه و ميگه مرغ يك پا داره بحث نكنم!