PDA

View Full Version : سوال: پیدا کردن آرگومان های برنامه های GUI



jeson_park
شنبه 05 دی 1394, 09:14 صبح
سلام
بعضی برنامه های ویندوزی رو می شه با تایپ نامشون به همراه آرگومان (مثلاً مسیر فایل ) اجرا کرد مثلاً notepad D:\Link.txt
حالا چطوری می شه فهمید یه برنامه چه آرگومان هایی رو از ورودی می گیره؟؟

pcrlth0n
شنبه 05 دی 1394, 10:20 صبح
سلام.
بطور خلاصه:
برنامه میاد رشته هایی که در CMD وارد شده رو بدست میاره.یکی از روشهای بدست آوردن این رشته ها استفاده از تابع ویندوزی GetCommandLine هستش.
بعد میاد آرگومان جلوی اسم خودش رو پیدا میکنه و سپس آنرو جستجو میکنه که آیا چنین فایلی وجود داره یا نه. درصورت وجود چنین فایلی اونرو import میکنه و باقی داستان.

حالا اینکه چطور میشه فهمید برنامه چه آرگومانهایی میگیره و اینکه اصلا آرگومان میگیره یا نه رو خودتون باید برنامه رو trace کنید.
آرگومانهایی رو که میدید رو در حافظه BP بگذارید و ببینید باهاش چیکار میکنه.

jeson_park
شنبه 05 دی 1394, 17:52 عصر
آرگومانهایی رو که میدید رو در حافظه BP بگذارید و ببینید باهاش چیکار میکنه.
با سلام و تشکر
میشه این قسمت رو یکم باز بنوماید؟ :لبخند:

pcrlth0n
سه شنبه 08 دی 1394, 13:56 عصر
سلام.
روی مثال خودتون کار مکنیم:
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 زدن جلو برید میبینید که داره با آرگومانتون کار میکنه ...

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