با سلام
ميخواستم ببينم چطوري ميتونم رجيسترهاي مربوط (ecx , Eax) به يك فايل اجرايي را توسط وي بي بخونيم ؟
Printable View
با سلام
ميخواستم ببينم چطوري ميتونم رجيسترهاي مربوط (ecx , Eax) به يك فايل اجرايي را توسط وي بي بخونيم ؟
سلام
امکان نداره!
فقط با خود اسمبلی و ++VC میتوانید مستقیماً رجیستر ها را دستکاری کنید.
البته میشود در ++VC یک DLL با چند API درست کرد که عمل فوق را انجام دهد و در VB از آن استفاده کرد ولی باز هم فوقش میتوانید رجیسترهای مربوط به ریسمانی که برنامه خودتان در آن اجرا میشود را بخوانید و بلاشک ویندوز اجازه دسترسی به رجیسترهای ریسمانها و برنامه های دیگر را نخواهد داد.
مطالبی از ان دست برای VB را میتوانید در کتاب "Visual Basic پیشرفته" چاپ کانون نشر علوم و دیگر انتشارات طرف قرار داد پیدا کنید.
ولی بهتر است الگوریتمتان را اصلاح کنید تا نیازی به این کار نباشد.
سلام دوست عزيزنقل قول:
با تشكر از راهنماييتون
ولي من ميخواهم رجيسترهاي مربوط به برنامه هاي در حال اجراي ديگه رو بخونم :19: ، يعني ديگر امكانش توي وي بي نيست ؟:19::19::19:
سلام
مگه قبلاً امکانش بوده؟؟؟؟؟؟نقل قول:
در ویندوز این کار تقریباً غیر ممکن است! ویندوز از حافظه محافظت میکند و شما دسترسی کامل به حافظه ندارید.
دسترسی به حافظه برای آن مهم است که وقتی کد برنامه شما اجرا میشود رجیسترهای مذکور حاوی اطلاعات برنامه شما هستند و رجیسترهای ریسمانهای دیگر توسط ویندوز در حافظه بلوکه و ذخیره میشوند تا نوبت اجرا مجدداً به انها برسد.
راه منطقی آن است که برنامه مورد نظر را خودتان با کد دستی و نه توسط ویندوز run کنید که محصول نهایی چیزی شبیه برنامه قدیمی و کوچک Debug.exe میشود که قبلاً تحت داس کار میکرد، درست کردن همچین چیزی هم به گمانم با VB نشود با ++VC هم خیلی سخت خواهد بود.
برنامه اماده تحت ویندوز موجود است که یک exe را اجرا میکند تک تک دستورات اسمبلی را نشان میدهد و هر کجا خواستید ریسمان را متوقف میکنید و رجیستر ها را میبینید، پیشنهاد میکنم به جای صرف وقت بسیار از اینها استفاده کنید.
خود VS2005 هم امکانی مشابه این که شما میخواهید را دارد! و میتواند به یک برنامه در حال اجرا وصل شود ...
ولی برای انجام این عمل به طور شخصی در برنامه خودتان خیلی مشکل خواهید داشت.
اصل هدف و کارتان چیست؟