Skip to content

۴. هوک کردن متد سازنده (Constructor) ​

گاهی نیاز است که دقیقا در لحظه ساخته شدن یک شیء (Object)، مقادیر اولیه آن را تغییر دهیم. در فریدا متد سازنده با نام $init شناخته می‌شود.

سناریو: تغییر موجودی اولیه هنگام ساخت اکانت ​

کد جاوا:

java
package com.example.game

public class UserPlayer {
    private int coins

    public UserPlayer(String name, int initialCoins) {
        this.coins = initialCoins
    }
}

کد فریدا:

javascript
Java.perform(function () {
    var UserPlayer = Java.use("com.example.game.UserPlayer")

    /* هوک کردن Constructor */    
    UserPlayer.$init.overload('java.lang.String', 'int').implementation = function (name, coins) {
        console.log("[+] Creating User: " + name)
        
        /* دادن 9999 سکه به جای مقدار اولیه سرور */        
        var hackedCoins = 9999
        
        /* فراخوانی سازنده اصلی */        
        this.$init(name, hackedCoins)
    }
})