PDA

نسخه کامل مشاهده نسخه کامل : سوال: کمی پیچیده در رابطه با شل و اجرا کردن application



MichaelQwerty
04-01-2009, 19:07
سلام میدونید که با استفاده از دستور شل میشه یه فایل اجرایی را از مسیر خاصی اجرا کرد حالا فرض کنید شما با دستور شل برنامه regedit.exe یا هر برنامه دیگری را باز کردید
Shell “regedit.exe”
حالا وقتی که برنامه ای که در آن دستور شل را استفاده کردید با استفاده از task manager به صورت End process tree ببندید همراهش regedit یا فایل اجرایی بسته می شه من این کار را با Api(ShellExecute) نیز آزمایش کردم که همین اتفاق افتاد
کسی هست که بدونه چطور میشه جلوی این کار را گرفت یا کدی هست که باعث بشه برنامه ای که توسط shell باز شده یعنی فایل اجرایی زیر مجموعه نشود مطابق شکل:


[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

بهرام_62
04-01-2009, 19:58
یک کلک رشتی از خودم در کردم:27::

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
ببین به دردت می خوره:21:

قاهر - Gahir
04-01-2009, 20:04
دوستش این لینک تصویر شما فیل تر شده Fil-ter
تو یه جایی دیگه Uploadاش کن .

MichaelQwerty
04-01-2009, 20:56
عکس چیز زیادی نشون نمیده فقط نشون میده که برنامه زیر مجموعه شده
بهرام_62کارت خیلی درسته ممنون میشه یه توضیح مختصر دررابطه با کدهاش بدی
کسی راه دیگه ای به نظرش نمیرسه فکر نکنم راه دیگه ای باشه

*Batman*
04-01-2009, 21:25
طبق معمول من VB6 ندارم و نتونستم روش بهرام رو ببینم.
میتونی CreateProcess را هم امتحان کنی.


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

قاهر - Gahir
04-01-2009, 22:01
بهرام_62
کار شاقی کردی مگه ... ولی بدک نبود ...

بهرام_62
05-01-2009, 01:12
بهرام_62کارت خیلی درسته ممنون میشه یه توضیح مختصر دررابطه با کدهاش بدی
خواهش می کنم
کار پیچیده ای نیست
من با دستور شل explorer.exe رو فراخوانی می کنم و با استفاده از explorer برنامه رو فراخوانی می کنم
اون sendkeys ها هم مشخصه فکر کنم برای چیه
برای اینکه بفهمی اونا مال چیه فقط کافیه اونا رو پاک کنی و برنامه رو اجرا کنی

کار شاقی کردی مگه ... ولی بدک نبود ...
حق با تویه کار شاقی نیست
گفتم کلک رشتیه[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ](33).gif

MichaelQwerty
05-01-2009, 08:59
ولی یه مشکل داره قبل از این که برنامه regedit اجرا بشه دو تا کادر سریع باز می شه که یکیشون خود کادر دانلود همون کادریی که در زمان دانلو د باز می شه

Payman_62
05-01-2009, 14:02
سلام.
بهرام ممنون ازت. فکر جالبی بود.

اینم یه روش دیگه.

بهرام_62
05-01-2009, 15:23
اینم یه روش دیگه.
سلام
آقا یکم حرفه ایه من نفهمیدم چه کار کردی[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
میشه یک توضیح بدی؟

Payman_62
05-01-2009, 16:27
سلام.
وقتی یه پروسه end process tree بشه همه برنامه هایی که قبلا باز کرده بوده هم همراهش بسته میشن. این قضیه در مورد cmd هم صادقه. حالا اگه قبل از end process tree شدن اون برنامه اول خودش به یه صورت دیگه بسته شه دیگه برنامه هایی که باز کرده بود بسته نمیشن.
من تو این برنامه اومدم یه پروژه ساختم که هر کامندی بهش بدی به عنوان آدرس فایل اجرایی میگیره و به عنوان پارامتر برای ای پی ای ShellExecute در نظر میگیره. این پروژه رو کامپایل کردم و به صورت ریسورس قرار دادم تو پروژه main که آدرس فایل رو از ما میگیره.
وقتی شما رو run کلیک میکنی اون فایلی که ریسورس شده بود اکسترکت میشه کنار برنامه. به همراه متن تکس باکس که به عنوان کامند براش ارسال میشه اجرا میشه. فایل ریسورس بعد از اجرا کار خودش رو که اجرای کامندی که براش ارسال شده هست رو انجام میده و بلافاصله بسته میشه تا end process tree نشه.
چون رجیستری رو برنامه داخل ریسورسمون اجرا کرده نه برنامه اصلیمون که مشاهده میکنیم با end process tree شدن برنامه ما رجیستری بسته نمیشه. برنامه ریسورس هم که رجیستری رو اجرا کرده بود خودش بسته میشه تا کسی نتونه end process tree بکنتش.

بهرام_62
06-01-2009, 01:59
Oh My God
خیلی معرکه بود ایول[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

MichaelQwerty
14-01-2009, 06:51
سلام آقا پیمان ظاهرا این راه از همه بهتره
من چیز زیادی در باره برنامه نویسی نمی دونم


این پروژه رو کامپایل کردم و به صورت ریسورس قرار دادم تو پروژه main که آدرس فایل رو از ما میگیره
یه آیکون سبز در پروژه هست که در قسمت project explorer قرار داره منظورتون همینه
این که پسوندش res هست چه کاری انجام میده در چه مواردی استفاده میشه چطور میشه ساختش
منظورتون چیه که گفتین
من این پروژه رو کامپایل کردم
مگه کامپایل کردن همون ّF5 نیست
میبینید که وضع من زیاد خرابه لطفا جواب منو کامل بدید
سپاسگزار میشم آقا پیمان

MichaelQwerty
18-01-2009, 06:01
آقا پیمان جواب مارو نمی خوای بدی

Payman_62
18-01-2009, 12:52
سلام.
بله ریسورس همون آیکون سبزه هست. برای استفاده از ریسورس باید ریسورس ادیتور رو فعال کنید. از منوی add in گزینه add in manager رو بزن و vb6 resource editor تیک load unload و load on startupش رو بزن. یه آیکون سبز بالای صفحه زیر منوهات اضافه میشه که میتونی باهاش کار کنی. کار ریسورس اینه که میتونی هر فایلی با هر پسوندی دلت بخواد بذاری تو دل پروژت. بعدا هنگام ران شدن پروژه میتونی اکسترکتش کنی رو هارد و ازش استفاده کنی. من این جا پروژه اولی رو گذاشتم تو دل پروژه دومی و هنگام دستور اجرای فایل اونو اکسترکت کردم رو هارد و به کمکش فایل مورد نظر رو اجرا کرد.

شما وقتی برنامه مینویسی بعدا چطور ازش استفاده میکنی؟ رو هر سیستمی بخوای ازش استفاده کنی سورس رو میبری و ویبی رو نصب میکنی و f5 میزنی؟ از منوی فایل Make project.exe رو بزنی یه فایل exe بهت میده که برنامت هست.

MichaelQwerty
18-01-2009, 14:32
خیلی ممنونم که راهنماییم کردین
Make project.exe اینو میدونم منظورم این بود که زیاد چیزی بلد نیستم تا شما کامل تر توضیح بدین که دادین
آقا پیمان من این بحث رو در forum دیگه ای مطرح کردم یکی این جوابو به من داد:

اولين پارامتر تابع ShellExecuteA هندل پنجره اي است که تابع بايد تحت آن اجرا شود(hwnd)
وقتي اين پارامتر رو با Me.hwnd يا Formx.hwnd مقدار دهي كنيد به اين معني هست كه برنامه موردنظر از طريق برنامه شما اجرا شود.

هندل Explorer را بدست آوريد و برنامه را تحت آن اجرا كنيد.

موفق باشيد/
حالا این هندلو با چه code ی در بیارم
فکر نکنم جواب بده
نظر شما در باره این راه چیه؟

Payman_62
19-01-2009, 14:27
سلام.
اتفاقا منم همین فکر به ذهنم رسید. چون ابتدا با me.hWnd اجرا میکردم. یعنی هندل فرم برنامه خودم. بعد به جای هندل عدد 0 رو قرار دادم تا نتیجه رو ببنیم. ولی باز هم همون مشکل وجود داشت. حتی هندل یه برنامه دیگه که باز بود رو قرار دادم. ولی باز اون مشکل وجود داشت.
ولی هندل اکسپلورر رو امتحان نکردم. امتحان میکنم نتیجه رو میگم.

Payman_62
19-01-2009, 15:38
سلام.
من به جای اکسپلورر لیست کل پنجره های اصلی ویندوز که اکسپلورر رو هم شامل میشه رو گرفتم و هندل تک تکشون رو تست کردم.
یعنی این لیست:
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

فقط رو 2 تا پنجره 1 پیغام جالب داد و برنامه دوم بسته نشد.
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
رو یکی از پنجره های M فقط 1 بار و رو پنجره CiceroUIWndFrame هم 2 بار این پیغام نمایش داده شد و برنامه دومی که باز کرده بودم بسته نشد. ولی برنامه اول بسته شد. این 2 پنجره رو شاید 5 یا 6 بار تست کردم. دفعه های بعد هر دو برنامه با هم بسته میشدن.

نتیجه این که استفاده از هندل اکسپلورر و دیگر پنجره های اصلی ویندوز نتونست جلوی بسته شدن برنامه دوم رو بگیره.

MichaelQwerty
20-01-2009, 06:56
ممنونم که وقت میزارین تا جواب منو بدین
حالا برگردیم به برنامه خودتون من چند تا مشکل دارم:

dim bytrerunner() as byte
این () این پرانتز جلوی متغیر چه تاثیری میزاره؟

bytrerunner = loadresdata(101, "custom")
عدد 101 چی اشاره داره؟؟

put #1, , bytrerunner
این دستور را اولین باره دیدم کارش چیه؟؟؟

doevents
این دستور چه وظیفه ای داره؟؟؟؟

sleep 10
این api کارش چیه کجاها به کار میره؟؟؟؟؟
ببخشید زیاد شد

Payman_62
20-01-2009, 12:59
سلام.
یکی از این pdf های ویبی رو دانلود کن و بخون. خیلی از سوالاتت برطرف میشه.
پرانتز برای تعریف آرایه هست.
101 کد فایل رویسورس شدست. اگه رو همون آیکون سبز پروژه کلیک کنی میبینی که فایل ریسورس شده کد 101 داره.
put برای ذخیره مقدار تو فایل هست. یه چیزی مثل write و print.
doevents به برنامه میگه برای توابع دیگه و ترد های دیگه هم وقت بذاره تا برنامه قفل نشه. در غیر این صورت فقط دستورات داخل حلقه اجرا میشه و برنامه لاک میشه.
sleep با توجه به زمانی که بهش میدی یه مکث تو برنامه ایجاد میکنه. پارامترش بر اساس میلی ثانیست. یعنی 1000 بهش بدی 1 ثانیه مکث میندازه.

MichaelQwerty
20-01-2009, 22:26
باز هم متشکرم که جوابم رو دادی
کتاب VB6 زیاد دارم به غیر از آرایه ها که فراموش کرده بودم (چون خیلی وقته که استفاده نمی کنم) اکثرا درباره Api و res دراین کتاب ها چیز زیادی ننوشته درباره برنامه شما یه چیز جالب avir آنتی ویروس میگیره به این اسم is the TR/Dropper.Gen Trojan
یه چیزی میگم نخندیا من اولین زبان برنامه نویسی که شروع کردم اسمبلی بود بدلیل علاقه شدید به ساخت ویروس چه مسخره نه؟ولی نه به دلیل قدرتش چون سطح دسترسیش زیاده تا هسته سیستم
به زودی در مورد هوش مصنوعی آنتی ویروسها یه بحث راه میندازم

Payman_62
21-01-2009, 03:46
سلام.
احتمالا به خاطر استفاده از ای پی آی shellexecute هستش. معمولا آنتی ها به ران کردن یه فایل جدید گیر میدن و میگن این برنامه میخواد این فایل رو از این مسیر ران کنه. اجازه میدی؟ ولی این که میگی به عنوان تروجان شناسایی کرد خیلی جالبه. آنتیت چیه؟ کسپر خود من که کاری به برنامم نداشت. فقط اولین بار موقع ران کردن فایل ریسورس گیر داد که اجازه رو دادم.

بحث در مورد هوش مصنوعی همیشه جالب و همیشه مشکل بوده. بحث خوبیه راه بنداز.