Skip to content

۲. لیست کردن توابع (Exports & Imports) ​

گاهی وقت‌ها شما آفست را نمی‌دانید، اما "نام تابع" را می‌دانید (مثلا توابع استاندارد رمزنگاری مثل AES_encrypt). یا می‌خواهید ببینید یک کتابخانه چه توابعی را در اختیار دیگران گذاشته است.

  • Exports: توابعی که این کتابخانه دارد و دیگران می‌توانند استفاده کنند.
  • Imports: توابعی که این کتابخانه نیاز دارد و از جاهای دیگر قرض گرفته است.

ما می‌توانیم تمام این توابع را لیست کنیم تا هدف مناسب برای هوک کردن را پیدا کنیم.

کد فریدا (Enumeration):

javascript
/* نام کتابخانه هدف */
var targetLib = "libssl.so"

/* لیست کردن تمام توابع Export شده */
Module.enumerateExports(targetLib, {
    onMatch: function (exp) {
        /* پارامتر exp شامل نام تابع (exp.name) و آدرس آن (exp.address) است */        
        if (exp.name.indexOf("SSL_write") !== -1) {
            console.log("[+] Found SSL function: " + exp.name + " @ " + exp.address)
            
            /* می‌توانیم همینجا هوک کنیم */            
            Interceptor.attach(exp.address, {
                onEnter: function(args) { console.log("SSL Write called") }
            })
        }
    },
    onComplete: function () {
        console.log("[*] Enumeration complete.")
    }
})