۵. دسترسی و تغییر فیلدها (متغیرهای کلاس)
فریدا از طریق Reflection عمل میکند، بنابراین شما میتوانید حتی متغیرهای private را بخوانید و تغییر دهید.
سناریو: خواندن توکن امنیتی مخفی
کد جاوا:
java
package com.example.security
public class Config {
/* متغیر استاتیک و خصوصی */
private static String API_KEY = "SECRET_123_XYZ"
/* متغیر Instance */
public boolean isProVersion = false
}کد فریدا:
javascript
Java.perform(function () {
var Config = Java.use("com.example.security.Config")
/* 1. خواندن/نوشتن فیلد استاتیک (بدون نیاز به نمونه کلاس) */
/* توجه: از .value برای دسترسی به مقدار استفاده کنید */
console.log("Old API Key: " + Config.API_KEY.value)
Config.API_KEY.value = "HACKED_KEY_999"
/* 2. تغییر فیلد Instance (نیاز به هوک کردن یک متد یا پیدا کردن نمونه فعال دارد) */
/* فرض کنید متدی داریم که صدا زده میشود: */
Config.someMethod.implementation = function() {
/* تغییر متغیر isProVersion برای همین نمونه */
this.isProVersion.value = true
console.log("[+] Pro Version Activated!")
this.someMethod()
}
})خلاصه نکات کلیدی Java.use
| عملیات | سینتکس فریدا | توضیحات |
|---|---|---|
| تعریف کلاس | var MyClass = Java.use("pkg.Class") | ایجاد wrapper |
| هوک متد | MyClass.method.implementation = fn | بازنویسی رفتار |
| هوک Overload | MyClass.method.overload('type').imp... | وقتی نام متد تکراری است |
| هوک سازنده | MyClass.$init.implementation | متد Constructor |
| دسترسی به فیلد | this.fieldName.value | خواندن/نوشتن متغیرها |