ايران ويج

نسخه‌ی کامل: ساختن پچ برای فایل آنپک شده
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام
من یک برنامه پک شده را آنپک کرده و بعد آنرا کرک نمودم.
وقتی با dup2 برایش پچ میسازم ؛ موقع اجرای پچ "خطای زیاد شدن حجم فایل" را میدهد و فایل پچ Don (جایگزین) نمی شود. سئوال من این است که چگونه و با چه برنامه ای برایش پچ بسازم که خطا ندهد و حجم فایل پچ ، مثل فایل اصلی شود؟ Sad
از راهنمایی شما پیشاپیش تشکر می نمایم.
اللهم صل علی محمد و آل محمد
ممکنه برنامه ی شما CRC checking داشته باشه
CRC checking یک روشه برای مقاومت در عملیات پچینگ (ازدیدمهندسی معکوس)
فیلد های OLD FILE SIZEوNEW FILE SIZEوCRC32 برای این منظور مورد استفاده قرار میگیرند
اگر موفق نشدید در صورتی که حجم تارگت کمه آپلود کنید تا بررسی بشه
(۰۲-اردیبهشت-۱۳۹۴, ۲۱:۱۶:۲۴)NO DONGLE نوشته است: [ -> ]ممکنه برنامه ی شما CRC checking داشته باشه
CRC checking یک روشه برای مقاومت در عملیات پچینگ (ازدیدمهندسی معکوس)
فیلد های OLD FILE SIZEوNEW FILE SIZEوCRC32 برای این منظور مورد استفاده قرار میگیرند
اگر موفق نشدید در صورتی که حجم تارگت کمه آپلود کنید تا بررسی بشه

در برنامه dup2 گزینه Enable CRC32 check را به همراه گزینه Virtual Address علامت می زنم ولی باز مشکل باقیست.
ضمنااز لحاظ مقایسه تغییرات جدید و قدیم مشکلی وجود ندارد.
لطفا اگر ممکن است اینگونه پچ سازی را با dup2 آموزش دهید ؛ شاید در کارم مشکل وجود دارد.
اگر مایلید فقط فایل اجراییتون و فایل پچ شده رو آپلود کنید
درصورت کم حجم بودن تارگت رو آپلود کنید
با سلام و تشکر از استاد ، مشکلم حل شد.
بجای گزینه Offset Patch از گزینه Search & Replace Patch استفاده نموده و مشکلم حل شد. خیلی از شما متشکرم
دوست عزيز

كلا پچ كردن يعني تغيير يك يا چند بايت داخل يك فايل اجرايي تا برخي محدوديت ها از روي اون برداشته بشه.

مثلا شما يك فايل داريد كه شامل هزار بايت مي شه و مي خواهيد بايت شماره 580 رو از AA به BB تغيير بديد. در اين صورت اين قبيل برنامه ها به شما كمك مي كنند تا با گرفتن مشخصات فايل اصلي و آدرس و مقدار بايتي كه بايد تغيير كنه ، برنامه رو به اصطلاح پچ كنيد.

اما زماني كه فايل اصلي شما پك شده ( مثل همين فايلي كه داريد)، شما مجبوريد ابتدا اون رو آنپك كنيد، يعني فايل قديمي شما تبديل به يك فايل جديد مثلا 1800 بايتي مي شه كه هيچيش شبيه به قبل نيست. حالا شما روي اين فايل آنپك شده يكسري تغييرات رو اعمال مي كنيد مثلا بايت 580 اون رو از AA‌ به BB تغيير مي ديد. در اين حالت به هيچ عنوان نمي شه از پچر استفاده كرد چون بايت شماره 580 در فايل آنپك شده در فايل قديمي اصلا يك بايت ديگه است و بر فرض اگر بچر هم ايراد نگيره و اين تغيير رو اعمال كنه نتيجه اي جز خراب شدن فايل اجرايي نخواهد داشت، در اين صورت شما اصولا 3 راه بيشتر نداريد:

1) برنامه پچري بنويسيد كه اول به صورت اتوماتيك فايل اصلي برنامه رو آنپك كنه و سپس بايت هاي مورد نظر شما رو داخل اون تغيير بده ( پچ كنه )

2) برنامه به اصطلاح پچري بنويسيد كه فايل آنپك و پچ شده آماده شما رو به جاي فايل اصلي كپي كنه !!

3) فايل اجرايي آنپك و پچ شده رو در اختيار كاربر قرار بديد و ازش بخواهيد كه اون رو به جاي فايل اصلي كپي كنه

انتخاب با شماست اما بهتره مثل بقيه از راه سوم استفاده كنيد

موفق باشيد
سلام استاد Di Di
حق با شماست. منهم از راه سوم استفاده می کردم ، اما همانگونه که در بالا ذکر کردم ؛ اینبار از گزینه
Search & Replace Patch برنامه dup2 استفاده نمودم که فايل اجرايي آنپك و پچ شده ، به جای فایل اصلی جایگزین شد و اندازه فایل هم به همان اندازه قبلی باقی ماند.
واقعا از شما و استاد NO DONGLE تشکر ویژه می نمایم.
من از DUp زیاد استفاده نمیکنم ولی این طور که مشخصه آدرس فایل لود شده در حافظه با آدرس خام رو دیسک هنگام بارگذاری متفاوته وبیشتر زمانی استفاده میشه که شما بایت یا بایتهایی که میخواهید تغییر بدید رو میدونید ولی محل(آدرس)رو نمیدونید.
Search and Replace (در پچینگ)به نظر گزینه ی مناسبیه و دارای سه خصوصیت هست:
1-این تکنیک اندازه ی فایل , CRC32 checksum رو چک نمیکنه
2-در مدل های با حجم بالا امکان کرش هست
3-نسبت به بعضی گزینه های دیگر پایدار تر است.
4-با استفاده از بایت های طولانی و استفاده از Wild Cardها در جستجو درصد مچ شدن بالا می آید

این روش میتونه روش جایگزین باشه:
بااستفاده از هگزاادیتور دقیقا مثله search and replace بایت هایی (opcodes) رو که میخواهید پیدا کنید
بعد آفست مورد نظر(که در هگزا ادیتور پیدا کردید) را در قسمت offset patch برنامه ی Dup بگذارید و همینطوربه ترتیب بایت اورجینال و بایت جایگزین

--- -----------------------------------
موفق باشید