ببخشید بدون مقدمه شروع میکنم :
یک فایل اجرایی به همراه یک dll گذاشتم .
در زمان اجرای این فایل یک پارامتر برای dll ارسال میشود و dll نیز با توجه به پارامتر ارسال شده یک مقدار را برمیگرداند توجه داشته باشید که فایل بدون dll قابل اجرا نمیباشد.
خوب حالا میخوام اگر کسی میتونه بدون دیباگ کردن (تاکید میکنم بدون دیباگ) فایل اجرایی یک dll ایجاد (در هر محیطی) و اون رو جایگزین dll اصلی بکنه به طوریکه برنامه بدون مشکل با dll فرعی اجرا شود یا در حال اجرا پیغام ERROR را نمایش دهد.
سلام
خوب هستيد
خوب اگر ديباگ نشه . از كجا معلومه ميشه اين dll داري استيك كم شونده است يا افزايش دهنده .
2- متغير ورودي از چه نوعي است
3- خروجي از چه نوعي است
4- اسم تابع صدا زده شده چي است .
5- نوع dll استند الون است يا com
6- نحوه صدا زدن dll چه گونه است يعني فقط تابعي از dll صدا زده ميشود و يا تابع اصلي نيز بازگذاري ميگردد
7- نحوه لود dll در حافظه چه طوري است
بدون داشتن اين اطلاعات يا چند قسمت اساسي ان فكر نكنم بشه dll رو باز سازي كرد
اميدوارم كمك كنه
saeedsmk نوشته است:خوب اگر ديباگ نشه . از كجا معلومه ميشه اين dll داري استيك كم شونده است يا افزايش دهنده .
2- متغير ورودي از چه نوعي است
3- خروجي از چه نوعي است
4- اسم تابع صدا زده شده چي است .
5- نوع dll استند الون است يا com
6- نحوه صدا زدن dll چه گونه است يعني فقط تابعي از dll صدا زده ميشود و يا تابع اصلي نيز بازگذاري ميگردد
7- نحوه لود dll در حافظه چه طوري است
سلام
صحبت شما كاملا درسته اما ابزارهايي وجود دارد كه فكر ميكنم جواب تمام سوالات شما رو ميدهد.
به هر حال من به شما كمك ميكنم :
متغير ورودي از نوع word ميباشد
خروجي از نوع cardinal يا longword است
نام تابع operation
و در فايل اجرايي فقط يك تابع از dll صدا زده شده است
توجه داشته باشيد كه dll و برنامه استفاده كننده از آن در دلفي ايجاد شده است
متشكرم
سلام
خوب هستيد
در مورد ابزار درست فرموديد . اما بازم اين ابزار ها كامل نيستند و جاي يك ديباگر نميگيرند و در بعضي از موارد اشتباه نيز ميكنند .
خوب مرسي از اطلاعاتي كه داديد . ايا اطلاعات به سبك سي يا با استيك پوينتر زياد شونده به حافظه داده ميشود يا با استيك پوينتر كم شونده . خروجي به چه صورتي برگدانده ميشود . بصورت ريجيستري و يا اينكه پوش شونده در حافظه و يا ريترن پوشينگ
در هر صورت :
فرض كنيد يك نفر اين كار رو انجام داد .
به چه نتيجه اي ميخواهيد برسيد ؟
به اميد ديدار مجدد
میشه اسم این ابزار که میگید رو بنویسید و برا دیباگ کردن بنظرتون کدوم دیباگر خوب ؟
دوستان سلام
دوستان عزیز توجه کنید لطفا, بنده میخوام یک dll را که از لحاظ امنیتی خیلی مهم است را در تعدادی از برنامه های خودم و دیگران استفاده کنم و دنبال راههایی میگردم که کسی نتواند آنها را با dll دیگری جایگزین کند زیرا با این کار عملا امنیت برنامه به خطر افتاده و به راحتی میتوان از برنامه کپی کرد.
به هر حال بنده خود تجربه جایگزینی ocx را دارم. برای جایگیزن کردن اینگونه ابجکتها اصلا نیازی به دیباگ برنامه اصلی نیست کافیست شما اطلاعات کاملی راجع به خود dll را به دست آورید. برای مثال نام متدها نوع پارامترهای ورودی و خروجی و نام کلاس به کار رفته, به این ترتیب بدون نیاز به دانستن اینکه متدهای dll چه عملی را انجام میدهند یک dll فرعی را با همان خصوصیات dll اصلی و به همان نام ایجاد نموده و جایگزین dll اصلی نمایید به این ترتیب به راحتی میتوانید اداره برنامه ای که از dll استفاده میکند را به دست بگیرید.
اما راه حل هایی برای جلوگیری از جایگزینی dll وجود دارد که من میخواستم در ادامه این بحث نیز آنها را استفاده نموده و در مورد کارایی آنها صحبت کنیم.
سلام
خوب هستيد
خوب شدنش كه ميشه ولي سخته
خوب شما براي برنامه اي قفل مگذاريد و پخشش ميكنيد . حالا يكي پيدا ميشه كه بر اساس ارزش برنامه تصميم مي گيره كه برنامه رو كرك كنه .اين شخص كه ميخواد روي برنامه شما كار كنه از ديباگر نيز حتما كمك ميگره . پس اين فرض تون اشتباه است . بيشتر سئوالتون شبيه اموزش است تا يك سئوال يعني مثل كرك مي ها .
جايگزيني dll توسط كركر زياد انجام شده يك سرچ توي نت بزنيد موارد بيشماري را پيدا ميكنيد
اميدوارم كمك كنه
فک کنم به راحتی بشه این کار رو کرد
شما میتونی یک Code Generator رو طوری در Dll قرار بدی که کدی رو مثلا در زمان X بهت بده که اگه کد درست شده در DLL با کد درست شده در برنامه یکی بود برنامه در اون صورت روند عادیشو طی کنه