PDA

View Full Version : کمک در مورد api ها در در مورد زبان های برنامه نویسی مختلف



jaberaghidat
چهارشنبه 04 بهمن 1385, 23:18 عصر
سلام من در مورد api ها تو کرک به مشکل بر میخورم مثلا تو olly وقتی کنترل n میزنیم
اگه برنامه با زبان vb6 نوشته شده باشد باید به دنبال Name=MSVBVM60.__vbaStrCmp بگردیم
اما حالا نمی دونم اگه برنامه با زبان دلفی یا سی و یا غیره نوشته شده باشه باد به دنبال چه چیز هایی بگردم ؟
در ضمن اگه میخواهید توابع ها رو برام بزارین حتما بگین این توابع ماله چه زبان برنامه نویسی هست http://www.shabgard.org/forums//images/smilies/yah/17.gif

Developer Programmer
پنج شنبه 05 بهمن 1385, 22:00 عصر
اگه برنامه با زبان vb6 نوشته شده باشد باید به دنبال Name=MSVBVM60.__vbaStrCmp بگردیمکامپایل برنامه ها دوجوره، Native و p-code
اولی باعث میشه برنامه ات به زبان اسمبلی ترجمه بشه و دومی که مختص ویژوال بیسیکه از یه شبه کد، واسه ترجمه استفاده میکنه.

برنامه های کامپایل شده VB به جای فراخوانی مستقیم API از توابع موجود در فایل MSVBVM60.dll استفاده میکنن. واسه همین همیشه این فایل باید در کامپیوترت باشه تا بتونی برنامه رو اجرا کنی. اما از اون جا که مثلا دلفی مستقیما توابع API رو فراخوانی میکنه. به DLL جانبی نیاز نداره.
باید یادت بمونه که API با توابع موجود در DLL ، زمین تا آسمون فرق میکنه.پس این دو رو با هم اشتباه نگیر.
در مورد تابع vbaStrCmp هم باید بگم که موارد استفاده اون تابع فرق میکنه و لزوما همیشه دنبال اون تابع نمی گردن.

اما حالا نمی دونم اگه برنامه با زبان دلفی یا سی و یا غیره نوشته شده باشه باد به دنبال چه چیز هایی بگردم ؟ برای اینکه بدونی چه زمانی کدوم تابع API رو باید استفاده کنی. باید قبلا با API کار کرده باشی. توابع API مستقل از زبان برنامه نویسی ان یعنی به دلفی یا سی بودن زبانت کاری ندارن.


در ضمن اگه میخواهید توابع ها رو برام بزارین حتما بگین این توابع ماله چه زبان برنامه نویسی هستاز طرز سئوال کردنت معلومه که تاحالا برنامه ویژوال ننوشتی.
توابع API شاید بیش از هزار تا باشه. هیچ آدم عاقلی نمیاد این توابع رو یکجا واست پست کنه.

اگه خیلی بهشون علاقه داری CD های MSDN رو بخر و بشین با دقت تمام مطالعه کن.
اما قبلش حتما برنامه نویسیت رو قوی تر کن.

خوش باشی.

jaberaghidat
شنبه 07 بهمن 1385, 01:37 صبح
دوست عزیز من تمام این توابع ها رو که نخواستم من فقط توابع مقایسه دو رشته می خواستم
راستش میخواستم واسه کرک کردن نرم افزار

Developer Programmer
شنبه 07 بهمن 1385, 08:50 صبح
سلام
از اونجایی که شالوده ویندوز رو با C بنا کردن. بیشتر توابع API هم از اسم توابع C گرفته شدن.
مثلا واسه جستجوی دو رشته، بیشتر lstrcmpA و lstrcmpiA استفاده می شن.
اگه ctrl+n رو زدی و این تابع رو پیدا نکردی. می تونی در command-bar بنویسی bpx lstrcmpA و bpx lstrmpiA

jaberaghidat
شنبه 07 بهمن 1385, 12:18 عصر
یعنی می گی دوست عزیز برای مقایسه 2 روشته در زبان c از lstrcmpA و lstrcmpiA استفاده می شه درسته ؟

آیا برای زبان دلفی از چی استفاده می شن ؟

Developer Programmer
شنبه 07 بهمن 1385, 19:34 عصر
وقتی توابع API و جزئیات olly و PE Files رو بلد نباشی. نمیتونی ادامه بدی.


آیا برای زبان دلفی از چی استفاده می شن ؟جوابت قبلا داده شده...


توابع API مستقل از زبان برنامه نویسی هستن یعنی به دلفی یا سی بودن زبانت کاری ندارن.

netspc
شنبه 07 بهمن 1385, 22:29 عصر
کامپایل برنامه ها دوجوره، Native و p-code
اولی باعث میشه برنامه ات به زبان اسمبلی ترجمه بشه و دومی که مختص ویژوال بیسیکه از یه شبه کد، واسه ترجمه استفاده میکنه.


البته شبه کدها (pcode) فقط مختص وی بی نمیباشند و در VC++(البته من فقط در ورژن 2 دیدم) هم شما میتوانید از این گزینه استفاده کنید شبه کد بیشتر برای فشرده سازی به کار میرود و البته اینکار دیگر در وی سی پلاس پلاس به دلیل سرعت کم اجرای اینگونه برنامه ها انجام نمیشود.
در مورد apiها در ollydbg بهترین کار این هست:
از منوی view گزینه refrence رو انتخاب کنی تمامی ارجاعات خارجی برنامه رو خواهی دید.
و یا به قول دوستمون باید یک بریک پوینت دستی بر روی تابع api مورد نظر بذاری البته به شرطی که توابع API رو بلد باشی