由于默认权限是包权限,也就是同一个包路径下的类,可以访问。那么制作一个与目标类相同包路径的类,就可以操作该目标类的成员变量了。比如,有类A,包含一个名称为as的变量,制作一个帮助类来修改as的值。
package com.vhly.helptest;
import java.io.*;
import java.util.*;
public class A
{
int as; // 采用默认权限
public A()
{
as = 100;
}
public void print()
{
System.out.println(as);
}
}
// 操作类
package com.vhly.helptest;
/**
* 使用注入技术 实例3
* 通过将自身定义为与要操作对象相同的包路径中来操作其中的成员
*
* @author vhly[FR]
*
*/
public class Helper
{
A a1;
public Helper()
{
a1 = new A(); // A.as = 100;
}
public void setAS(int i)
{
a1.as = i; // 该代码可以执行
}
public void print()
{
System.out.println("A.as:"+a1.as);
}
public static void main(String args[])
{
Helper hp = new Helper();
hp.print();
hp.setAS(999);
hp.print();
}
}
以上例子表明,只要类与目标类在同一个包中,类就可以访问目标类的默认权限成员变量,以及方法,对于成员变量可以进行赋值等操作,将该方法应用到破解当中,就可以实现非常强大的功能。
2006/04/18