PDA

View Full Version : اجرای یک برنامه درون برنامه اصلی اما در حافظه (execute a program from memory) ، چگونه؟؟؟



2okeee
چهارشنبه 01 مهر 1394, 16:02 عصر
سلام

شرح مشکل :

من یک برنامه عهد تیرکمون شاه نوشتم، اما سورسش دیگه ندارم اما فایل اجرایی آن دارم، (یک برنامه محاسباتی خاص و مهم است)!

حال این برنامه را درون برنامه جدیدی دارم استفاده میکنم، چه گونه میتوانم برنامه exe که دارم و درون رم لودش میکنم را ، در داخل همون رم هم اجرا کنم ؟؟

مثلا الان برنامه من در آرایه بیتی data قرار دارد،

توجه کنید من نمیخواهم برنامه را روی هارد بنویسم و بعد اجرا کنم، بلکه میخواهم برنامه را درون رم اجرا کنم.


QFile My_program;
My_program.setFileName("://calculator");
My_program.open(QIODevice::ReadOnly);
QByteArray data = My_program.readAll();
My_program.close();


ضمنا کاپایلر من هم GCC و در QT کار میکنم

T.R.G.T
چهارشنبه 01 مهر 1394, 22:06 عصر
من متوجه نمیشم شما شما چیکار میخواید بکنید به توابع و... دسترسی داشته باشید؟(که میتونم بگم خییییییییییییلی سخته)
یا اینکه میخواید نرم افزار رو اجرا و نتیجش رو دریافت کنید

2okeee
پنج شنبه 02 مهر 1394, 07:50 صبح
من متوجه نمیشم شما شما چیکار میخواید بکنید به توابع و... دسترسی داشته باشید؟(که میتونم بگم خییییییییییییلی سخته)
یا اینکه میخواید نرم افزار رو اجرا و نتیجش رو دریافت کنید

سلام میخواهم برنامه را اجرا کنم و نتیجه ان دریافت کنم

Launching an executable from a memory buffer

T.R.G.T
پنج شنبه 02 مهر 1394, 08:48 صبح
حالا چرا از رم نمیشه بصورت معمولی از هارد لود بشه

2okeee
پنج شنبه 02 مهر 1394, 10:09 صبح
حالا چرا از رم نمیشه بصورت معمولی از هارد لود بشه

نه برادر ، نمیخواهم از روی هارد لود بشود ...

T.R.G.T
پنج شنبه 02 مهر 1394, 10:15 صبح
میشه این کار رو انجام داد اما کار سختیه میتونی از این لینک (http://www.codeproject.com/Articles/13897/Load-an-EXE-File-and-Run-It-from-Memory) راهنمایی بگیری
اگه کمی بیشتر در مورد کاری که میخواید بکنید توضیح بدید(اینکه نرم افزار چرا باید از رم لود بشه وکارش چیه) شاید بتونم کمک کنم

rahnema1
پنج شنبه 02 مهر 1394, 10:15 صبح
سلام
میشه همون طور که دوستمون اشاره کردند برنامه را از ram اجرا کرد همون کاری که برخی ویروسها و بدافزار ها انجام میدن که با استفاده از تابعهای API انجام می شه البته بسیاری از آنتی ویروسها اگه چنین برنامه ای را ببینند به عنوان ویروس می شناسند در هر صورت فکر کنم روشهای معمولی و سر راست استفاده ازش بهتر باشه

2okeee
پنج شنبه 02 مهر 1394, 13:54 عصر
سلام
میشه همون طور که دوستمون اشاره کردند برنامه را از ram اجرا کرد همون کاری که برخی ویروسها و بدافزار ها انجام میدن که با استفاده از تابعهای API انجام می شه البته بسیاری از آنتی ویروسها اگه چنین برنامه ای را ببینند به عنوان ویروس می شناسند در هر صورت فکر کنم روشهای معمولی و سر راست استفاده ازش بهتر باشه

اطمینان دارم که این کار شدنی ...

بحث ویروس نیست، دارم میگم الان فقط exe فایلی دارم که قدیم ندیم ها نوشته بودم (کد پایان نامه من است)، الان هم میخواهم در یک پروژه دیگر از ان استفاده کنم ...
و نمیخواهم کدم هم دست کسی بیفته تا با یک رابط کاربری به اسم خودش بزنه و ......

2okeee
پنج شنبه 02 مهر 1394, 13:55 عصر
میشه این کار رو انجام داد اما کار سختیه میتونی از این لینک (http://www.codeproject.com/Articles/13897/Load-an-EXE-File-and-Run-It-from-Memory) راهنمایی بگیری
اگه کمی بیشتر در مورد کاری که میخواید بکنید توضیح بدید(اینکه نرم افزار چرا باید از رم لود بشه وکارش چیه) شاید بتونم کمک کنم

این قبلا دیده بودم ، لینک فوق برای C# و در C++ اصلا کارایی نداره ...

2okeee
پنج شنبه 02 مهر 1394, 13:58 عصر
پاسخ برای ایندگان این مینویسم :

char RawCode[11414] = {
0x4D, 0x5A, 0x90, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
0xFF, 0xFF, ............................................... 0x00, 0x00,
0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
}

DWORD old_protect;
LPVOID executable_area = VirtualAlloc(NULL, 11414, MEM_RESERVE, PAGE_READWRITE);

memcpy(executable_area, Rawcode, 11414);
VirtualProtect(executable_area, 11414, PAGE_EXECUTE, &old_protect);

int(*f)() = (int(*)()) executable_area;
f();

// Note: RAII this in C++. Restore old flags, free memory.
VirtualProtect(executable_area, 11414, old_protect, &old_protect);
VirtualFree(executable_area, 11414, MEM_RELEASE);

بهروز عباسی
پنج شنبه 02 مهر 1394, 20:43 عصر
سلام
دوست عزیز این روش اسمش RunPEاه همین کلیدواژه های : runpe , executeinmemory رو سرچ کنید حله.


و نمیخواهم کدم هم دست کسی بیفته تا با یک رابط کاربری به اسم خودش بزنه و ......
در مورد هم شما نهایتا یا بافرو داری درسته ؟ و با توابع کار با حافظه باهاش کار میکنی ! فقط کافیه بافر شما رو دامپ بگیرن و ....

2okeee
جمعه 03 مهر 1394, 09:01 صبح
سلام
دوست عزیز این روش اسمش RunPEاه همین کلیدواژه های : runpe , executeinmemory رو سرچ کنید حله.

در مورد هم شما نهایتا یا بافرو داری درسته ؟ و با توابع کار با حافظه باهاش کار میکنی ! فقط کافیه بافر شما رو دامپ بگیرن و ....


سلام

تشکر از راهنمایی شما، خوب شما چه راهکاری برای اجرای امن یک فایل exe خارجی معرفیمیکنید که شخص دیگری نتواند از ان سو استفاده کند ؟؟

بهروز عباسی
جمعه 03 مهر 1394, 23:07 عصر
سلام

تشکر از راهنمایی شما، خوب شما چه راهکاری برای اجرای امن یک فایل exe خارجی معرفیمیکنید که شخص دیگری نتواند از ان سو استفاده کند ؟؟
سلام
تالار امنیت پاسخگویی شماست٬ به این بخش مرتبط نمیشه.