PDA

View Full Version : مبتدی: اجراي مخفي برنامه



one hacker alone
یک شنبه 28 اسفند 1390, 04:01 صبح
با ياد خدا
سلام دوستان

من چجوري ميتونم برنامه رو به صورت مخفي اجرا كنم

بعنوان مثال كد زير در خوشبينانه ترين حالت بعد از كليك روي فايل اجرا يه لحظه صفحه داس باز ميشه و بعد از نمايش پيغام بسته ميشه


#include <iostream.h>
int main(int argc, char* argv[])
{
cout<<"hi";
return 0;
}


اما من مي خوام اين پنجره خط فرمان هم باز نشه و انگار نه انگار كه برنامه اجرا شده

shahmohammadi
یک شنبه 28 اسفند 1390, 07:40 صبح
سلام.
فكر نكنم با برنامه كنسول بشه اين كارو كرد.
اگر كامپايلرتون از نوع كامپايلر هاي ويندوزي هست. مثلا dev c++ مي تونيد پروجكت تون رو از نوع windows application انتخاب كنيد و بعدبراش پنجره تعريف نكنيد. و مستقيم دستورات رو بنويسيد.

shahmohammadi
یک شنبه 28 اسفند 1390, 08:03 صبح
اين هم يك مثال:
#include <windows.h>

int main()
{

//while(1){
ShellExecute(NULL,NULL,"notepad",NULL,NULL,1);
//}
return 0;
}
اين برنامه خودش نمايش داده نمي شه و مي آد برنامه نوت پد رو باز مي كنه. اگه به تابعي كه صدا زده به پارامتر آخرش 0 مي داديدنوت پد هم به طور مخفي باز مي شد.

one hacker alone
یک شنبه 28 اسفند 1390, 21:37 عصر
دوست عزيز اين كد رو من بر روي Consol زدم اما پنجره خط فرمان باز و بعد بسته ميشه يعني باز مشكل همچنان هست اما تو VC++ من روي win32 application زدم از تابع خطا ميگيره
#include "stdafx.h"
#include <windows.h>

int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{

ShellExecute(NULL,NULL,"notepad",NULL,NULL,1);
return 0;
}
فكر كنم توي win32 اون مشكل نمايش پنجره حل ميشه فقط ميخوام با اين دستور مطمئن بشم آيا جز notepad چيزي باز ميشه يا نه

kitten
یک شنبه 28 اسفند 1390, 21:47 عصر
بردن برنامه به قسمت process از تسک منیجر
http://kitten.mihanblog.com/post/39

one hacker alone
دوشنبه 29 اسفند 1390, 07:42 صبح
ممنون دوست عزيز نه من مشكلم يه چيز ديگه هست ببينيد من ميخوام پنجره برنامه اصلا نشون داده نشه و منظورم مخفي شدن در task manager نيست
من نمي خوام محيط خط فرمان باز بشه كه ظاهرا اين مسئله تو win32 application حل ميشه اما من كد بالا رو امتحان كردم تو اون محيط گير داد خواستم بدونم مشكل از كجاست چون فكر كنم ميشه اونجا به اون چيزي كه ميخوام برسم

shahmohammadi
دوشنبه 29 اسفند 1390, 10:22 صبح
دوست عزيز اين كد رو من بر روي Consol زدم اما پنجره خط فرمان باز و بعد بسته ميشه يعني باز مشكل همچنان هست اما تو VC++‎ من روي win32 application زدم از تابع خطا ميگيره
برنامه اي كه من نوشتم توي دو سي پلاس پلاس مشكلي نداره.


فقط ميخوام با اين دستور مطمئن بشم آيا جز notepad چيزي باز ميشه يا نه با اين دستور به محض اينكه عبارت شل فراخواني شه، برنامه خودش به دستور return مي رسه. اگه مشكل خطا رو حل كرديد دستور زير رو اجرا كنيد و بعد در تسكبار در قسمت پراسس نام پروژه رو خواهيد ديد و اين يعني برنامه با وجود اينكه ديده نمي شه اما همچنان دستوراتش اجرا مي شه:
#include <windows.h>

int main()
{

//while(1){
ShellExecute(NULL,NULL,"notepad",NULL,NULL,1);
//}
while(1){}
return 0;
}

one hacker alone
سه شنبه 01 فروردین 1391, 20:52 عصر
ممنون دوست عزيز مشكل از فايل سرايند بود من اين كد رو كامپايل و اجرا كردم و بخوبي كار ميكنه فقط با توجه به اينكه من اين كد رو تو win32 application نوشتم بايد ارگومان هاي تابع main رو مقدار دهي ميكردم

#include <Shellapi.h>
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{

ShellExecute(NULL,NULL,"notepad",NULL,NULL,1);
while(1){}
return 0;
}

مشكل من در مورد اجراي مخفي حل شد ممنون

اما يه مشكل جديد هست اونم اينه كه با اجراي اين برنامه همون طور كه گفتين برنامه در حال اجرا اما مخفي از ديد كاربر هست ولي وقتي task manager رو نگاه كردم ديدم 50% از CPU رو گرفته و اين نامرديه
شايد من خواستم برنامه اي بنويسم كه دائم كار كنه مثل خيلي از برنامه هاي ديگه تو محيط هاي ويژوال نوشته شده مثل c#,vb حالا بايد چكار كنيم كه برنامه دائم كار كنه اما پردازنده رو اذيت نكنه؟

shahmohammadi
چهارشنبه 02 فروردین 1391, 11:32 صبح
من كه با دو سي نوشتم خيلي بيشتر بشه 25 مي شه.
شايد به خاطر دستوري هست كه نوشته ايم. به اين دليل كه وقتي برنامه هاي ديگري مي نويسيم درصدشون 00 هست. اگه برنامه ي كاملي بود به نظرم درصدش هم كم مي شد.

one hacker alone
چهارشنبه 02 فروردین 1391, 22:52 عصر
ما چيزي ننوشتيم فقط يه حلقه بي نهايت :)

اما خوب اين همه برنامه كه با اين زبان و تو همين محيط نوشته شده يعني اونها حلقه ندارن؟ بهرحال يه چيزي بايد باشه كه اونها رو در حال اجرا نگه داره

shahmohammadi
پنج شنبه 03 فروردین 1391, 11:52 صبح
بله. ولي به نظرم چون اين برنامه سبك هست پردازنده اولويت بيشتري براش قائله.
مثلا من برنامه ماشين حسابي رو كه قبلا با وين32 نوشته بودم رو نگاه كردم ديدم 00 درصد از پردازنده رو مي گيره.
اين هم حلقه اي كه اون رو نگه مي داره:
while(GetMessage(&messages, NULL, 0, 0))
{
TranslateMessage(&messages);
DispatchMessage(&messages);
}
تازه كد هاشم فكر كنم 800 سطر مي شه.

Ananas
جمعه 04 فروردین 1391, 04:23 صبح
داخل حلقه و بعد از تابع DispatchMessage از Sleep استفاده کن. دیگه نباید cpu رو بخوره.