۲. پوشه جادویی __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)
}
})