Skip to content

۲. پوشه جادویی __handlers__ ​

وقتی frida-trace را اجرا می‌کنید، متوجه می‌شوید که یک پوشه به نام __handlers__ در کنار خود می‌سازد. اینجاست که جادو اتفاق می‌افتد.

فریدا برای هر تابعی که هوک کرده، یک فایل .js جداگانه در این پوشه ساخته است که دو متد onEnter و onLeave دارد.

  • می‌خواهید آرگومان یک تابع خاص را ببینید؟ فایلش را در __handlers__ پیدا کنید و log اضافه کنید.
  • می‌خواهید خروجی را تغییر دهید؟ فایل را ویرایش کنید.
  • نکته: به محض اینکه فایل را Save کنید، فریدا آن را در اپلیکیشن آپدیت می‌کند (Hot Reload).

ساختار فایل تولید شده:

javascript
/*
 * فایل: __handlers__/libc.so/open.js
 * این فایل توسط frida-trace به صورت خودکار ساخته شده است.
 * شما می‌توانید این فایل را باز کنید و کد زیر را تغییر دهید.
 */

defineHandler({
  onEnter(log, args, state) {
    /* فریدا به طور خودکار یک لاگ ساده می‌نویسد */   
    log('open()')
    
    /* شما می‌توانید کد خودتان را اضافه کنید: */   
    /* مثلا خواندن نام فایل: */   
    var path = Memory.readUtf8String(args[0])
    log("Opening file: " + path)
  },

  onLeave(log, retval, state) {
    /* لاگ کردن مقدار بازگشتی */   
    log('-> returned: ' + retval)
  }
})