سلام
بعضی برنامه های ویندوزی رو می شه با تایپ نامشون به همراه آرگومان (مثلاً مسیر فایل ) اجرا کرد مثلاً notepad D:\Link.txt
حالا چطوری می شه فهمید یه برنامه چه آرگومان هایی رو از ورودی می گیره؟؟
سلام
بعضی برنامه های ویندوزی رو می شه با تایپ نامشون به همراه آرگومان (مثلاً مسیر فایل ) اجرا کرد مثلاً notepad D:\Link.txt
حالا چطوری می شه فهمید یه برنامه چه آرگومان هایی رو از ورودی می گیره؟؟
سلام.
بطور خلاصه:
برنامه میاد رشته هایی که در CMD وارد شده رو بدست میاره.یکی از روشهای بدست آوردن این رشته ها استفاده از تابع ویندوزی GetCommandLine هستش.
بعد میاد آرگومان جلوی اسم خودش رو پیدا میکنه و سپس آنرو جستجو میکنه که آیا چنین فایلی وجود داره یا نه. درصورت وجود چنین فایلی اونرو import میکنه و باقی داستان.
حالا اینکه چطور میشه فهمید برنامه چه آرگومانهایی میگیره و اینکه اصلا آرگومان میگیره یا نه رو خودتون باید برنامه رو trace کنید.
آرگومانهایی رو که میدید رو در حافظه BP بگذارید و ببینید باهاش چیکار میکنه.
سلام.
روی مثال خودتون کار مکنیم:
notepad D:\Link.txt
ابزار ollydbg باز کنید و open رو انتخاب کنید و notepad.exe رو انتخاب کنید توی فیلد arguments مقدار D:\Link.txt رو وارد کنید و open رو بزنید.
حالا توی memory مقدار D:\Link.txt رو جستجو کنید و روش bp بگزارید. بعد run رو بزنید میبینید که در جایی که به آرگومان D:\Link.txt دسترسی پیدا میشه متوقف میشید . البته احتمالا داخل توابع کتابخانه ای باشید کافیه تا وقتی به user code برسید run until return رو بزنید.
وقتی به کد یوزری برسید میبینید که notepad از تابع getmainargs استفاده کرده ...
حالا با f8 زدن جلو برید میبینید که داره با آرگومانتون کار میکنه ...
توضیح اینطوری یکم سخته. اگه شما با مهندسی معکوس آشنا باشید کار سختی در پیش نخواهید داشت.
باز اگه مشکلی داشتید بپرسید.
موفق باشید