PDA

View Full Version : سوال: تغییر در مقدار برگشتی تابع



Mask
یک شنبه 30 فروردین 1388, 00:20 صبح
با سلام به همه دوستان عزیز
یه سوال داشتم...
بنده مثلا با استفاده از تابع مثلا زمان رو میریزم تو یه ادیت یا به عبارتی مقدار برگشتی رو دارم حالا چطوری مقدار برگشتی این تابع یا تابع های دیگه رو میشه تغییر داد.
ممنون از جوابتون.

khaste_007
یک شنبه 30 فروردین 1388, 00:44 صبح
با سلام
شک داشتم این پست رو بزنم ولی حالا که زدم
به نظرم سوالتون گنگه این چیزی که برداشت میشه اینه که مثلا شما یک تابع دارید که یه مقدار عددی رو بر میگردونه حالا شما می خواید اون عدد رو با 7 جمع کنید خوب دو راه دارید یا تابع رو دارید که خوب درون خود تابع مقدار 7 رو اضافه می کنید یا اینکه بعد از اینکه مقدار برگشتی رو گرفتید اونو ذخیره و بعد اضافه می کنید.
مثلا

int a = function();
a=a+7;اما شک دارم سوال این بوده باشه

Mask
یک شنبه 30 فروردین 1388, 01:15 صبح
ممنون از جوابتون
اما سوالم این نبود
ببین مثلا من یه تابع API رو صدا زدم و تایم سیستم رو به من 12.20 اعلام کرد حالا می خام خود تابع رو تغییر بدم که از این به بعد ساعت رو 11 بهم نشون بده.
متوجه شدی...

khaste_007
یک شنبه 30 فروردین 1388, 12:46 عصر
با سلام این طور که من فهمیدم شما در اصل می خواهی تایم سیستم رو عوض کنی اگر این طور است که من فهمیدم، شما که خود توابع API سیستم رو نمی تونی و نباید تغییر بدی بلکه مثلا شما با یک تابع زمان رو می خونید مثلا gettime و با یک تابع دیگه زمان رو می نویسید مثلا settime نه اینکه برای اینکه زمان سیستم رو متفاوت نشان بدهید مجبور باشید یک تابع را تغییر دهید. به صورت کلی وظیفه طراح اولیه این است که توابع و کلاس ها رو طوری طراحی کنند که از بیرون بتوان عملکرد آنها را با ست کردن متغییر های خاص یا استفاده از توابع خاص کنترل کرد تا کسی برای اعمال تغییرات مجبور به تغییر کد نباشد و وظیفه استفاده کننده این است که توابع و متغییر های موجود رو بشناسد در این مثال شما باید تابع set کردن تایم رو با توجه به api و زبان برنامه نویسی خود بدانید.
امیدوارم اینبار دیگه درست متوجه شده باشم
موفق باشید.

joker
یک شنبه 30 فروردین 1388, 13:01 عصر
مشخص کن توی چه مدی میخوای این کار را بکنی
اگه تو حالت دیباگ باشی که هر فانکشنی موقع خروج RETN داره و قبل از اون مقادیر بازگشتی توی متغییر های EAX و اینا نوشته میشن ، اونجا میتونی دستکاری کنی ....

Mask
یک شنبه 30 فروردین 1388, 14:53 عصر
برای اینکه زمان سیستم رو متفاوت نشان بدهید مجبور باشید یک تابع را تغییر دهید
ممنون از دوستان عزیز
بدست آوردن ساعت یه مثال بود.
دقیقا من همین کار رو می خام یعنی خود تابع رو تغییر بدهم از بیرون تا همیشه یه زمان رو مثلا نشون بده.
مثال های دیگه مثلا توابع API که از dll های ویندوز استفاده می کنه و مقدار برگشتی داره. که می خام بدونم چطوری با دستکاری مقدار برگشتی توابع API رو تغییر بدهم.
مرسی.

joker
یک شنبه 30 فروردین 1388, 19:49 عصر
ممنون از دوستان عزیز
بدست آوردن ساعت یه مثال بود.
دقیقا من همین کار رو می خام یعنی خود تابع رو تغییر بدهم از بیرون تا همیشه یه زمان رو مثلا نشون بده.
مثال های دیگه مثلا توابع API که از dll های ویندوز استفاده می کنه و مقدار برگشتی داره. که می خام بدونم چطوری با دستکاری مقدار برگشتی توابع API رو تغییر بدهم.
مرسی.

مشکوک میزنی ، زبونم لال قصدت شکستن بعضی قفل ها( سریال هارد) که نیس :گیج:

روش کار همین بود که نوشتم.
روش برنامه نویسش هم تقریبا همینطوره یعنی محلی که قراره دیتا تغییر کنه را int3 میزاری ، برنامه مقصد را توی مود دیباگ از طریق یک لودر اجرا میکنی و تا رسید به نقطه مورد نظر و وقفه اجرا شد میری مقادیر بازگشتی را توی حافظه تغییر میدی.

پیوست : سورس هم نداریم. :لبخند: