PDA

View Full Version : سوال: چگونه نام تابع را در حین اجرا یا پس از کامپایل تغییر دهیم؟



Babak.Hassanpour
چهارشنبه 23 اردیبهشت 1388, 14:12 عصر
با سلام خدمت اساتید محترم
سوال بنده اینه که به عنوان مثال از این تابع در برنامه استفاده کردیم


Private Declare Function Beep Lib "kernel32" (ByVal dwFreq As Long, ByVal dwDuration As Long) As Long



می دونیم که اگه با ابزارهای دیباگر برنامه رو باز کنیم میشه فهمید از چه توابعی استفاده شده و با حذف اونها عملکرد برنامه رو دچار اختلال کرد.
حالا راهی هست بشه نام تابع رو تغییر داد؟ مثلا Beep رو به Test یا همچین چیزی.در کل میشه کاری کرد که نام توابع استفاده شده مخفی بمونه؟
ممنون از همه

Nima NT
چهارشنبه 23 اردیبهشت 1388, 18:30 عصر
تمامی این توابع در Import Table شما وجود دارن و با قراردادن Break Point میشه اونها رو شناسایی کرد.
یه راه کاملا" غیر اصولی وجود داره که یه کپی از فایل Kernel32.dll بگیری , تو توابع Export شده اون نام تابع رو عوض کنی و تو برنامه خودت با استفاده از LoadLibrary و .... تابع تغییر نام یافته رو لود کنی و استفاده کنی , این طوری دیباگر ها نمیتونن رو API مربوطه نقطه توقف بزارن.
البته در این مورد فقط OllyDBG هنگ میکنه و اگر کرکر وارد باشه براش زیاد فرقی نمیکنه.