۲. لیست کردن توابع (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.")
}
})