۲. دسترسی به آرگومانها و فراخوانی متد اصلی
گاهی نمیخواهیم کل منطق را تغییر دهیم، بلکه فقط میخواهیم ورودیها را ببینیم (Sniffing) یا آنها را قبل از رسیدن به متد اصلی تغییر دهیم.
سناریو: استخراج نام کاربری و رمز عبور
کد جاوا:
java
package com.example.app
public class LoginManager {
public void validateLogin(String username, String password) {
if (username.equals("admin") && password.equals("12345")) {
/* Login success */
}
}
}کد فریدا:
javascript
Java.perform(function () {
var LoginManager = Java.use("com.example.app.LoginManager")
LoginManager.validateLogin.implementation = function (usr, pwd) {
/* لاگ کردن آرگومانها */
console.log("[*] Login attempt detected:")
console.log(" Username: " + usr)
console.log(" Password: " + pwd)
/* تغییر آرگومان قبل از ارسال به متد اصلی (اختیاری) */
var newPassword = "12345"
/* فراخوانی متد اصلی با آرگومانهای (احتمالا تغییر یافته) */
/* this به نمونه جاری کلاس اشاره دارد */
this.validateLogin(usr, newPassword)
}
})