一般来说,client程序不能直接调用private方法,但是通过反射,可以实现。
package chentao;
public class A
{
private static String getPassword() {
return "call the method!";
}
}
package chentao;
import java.lang.reflect.InvocationTargetException;
public class Test
{
/**
* @param args
* @throws ClassNotFoundException
* @throws InvocationTargetException
* @throws IllegalAccessException
* @throws IllegalArgumentException
*/
public static void main(String[] args) throws ClassNotFoundException, IllegalArgumentException, IllegalAccessException, InvocationTargetException
{
// ERROR
/*String password = A.getPassword();
System.out.println("I got it:" + password);*/
Class cl = Class.forName("chentao.A");
java.lang.reflect.Method[] m = cl.getDeclaredMethods();
m[0].setAccessible(true);
String password = (String) m[0].invoke(null, null);
System.out.println("I got it:" + password);
}
}
/*output:
I got it:call the method!*/
OK,singleton模式可以保证获取的实例唯一性,下面通过反射可以改变这一限制。
package chentao;
public class B
{
public static final B singleton = new B("I'm the only instance of class B");
private String name;
private B(String name) {
this.name = name;
}
public String toString() {
return this.name;
}
}
package chentao;
package chentao;
import java.lang.reflect.InvocationTargetException;
public class TestB
{
/**
* @param args
* @throws ClassNotFoundException
* @throws InvocationTargetException
* @throws IllegalAccessException
* @throws IllegalArgumentException
* @throws InstantiationException
*/
public static void main(String[] args) throws ClassNotFoundException, IllegalArgumentException, IllegalAccessException, InvocationTargetException, InstantiationException
{
Class cl = Class.forName("chentao.B");
java.lang.reflect.Constructor[] c = cl.getDeclaredConstructors();
c[0].setAccessible(true);
B anotherB = (B) c[0].newInstance(new Object[]{"Not anymore!!"});
System.out.println(B.singleton);
System.out.println(anotherB);
}
}
/*output:
I'm the only instance of class B
Not anymore!!
*/
最后一个例子,Runtime类有一个private static field用来表示当前的runtime实例。我们首先获得当前的runtime实例并打印。然后,因为currentRuntime在class初始化时会被初始化,所以我们设置Runtime.currentRuntime静态域为null,为了验证这次修改,我们再次获取runtime实例并打印。最后,我们通过当前runtime实例调用dos命令dir试试看...
package chentao;
import java.lang.reflect.InvocationTargetException;
public class TestRuntime
{
/**
* @param args
* @throws ClassNotFoundException
* @throws InvocationTargetException
* @throws IllegalAccessException
* @throws IllegalArgumentException
* @throws InstantiationException
*/
public static void main(String[] args) throws Exception
{
Runtime r = Runtime.getRuntime();
System.out.println("Before: Runtime.getRuntime() yields " + r);
Class cl = Class.forName("java.lang.Runtime");
java.lang.reflect.Field f = cl.getDeclaredField("currentRuntime");
f.setAccessible(true);
f.set(null, null);
r = Runtime.getRuntime();
System.out.println("After: Runtime.getRuntime() yields " + r);
r.exec("dir"); //raises NullPointerException!!
}
}
/*Output:
Before: Runtime.getRuntime() yields java.lang.Runtime@cac268
After: Runtime.getRuntime() yields null
Exception in thread "main" java.lang.NullPointerException
at Test.main(Test.java:59)
*/
分享到:
相关推荐
Hacking Team Flash 0Day 利用代码分析
作者Jon Erickson不仅介绍了如何运行现有的漏洞利用程序,更重要的是他解释了这些复杂黑客技术是如何工作的。 ### 三、目标读者与定位 这本书的目标读者是对计算机安全和技术感兴趣的任何人,特别是那些希望深入...
Hacking_ A 101 Hacking Guide,hack参考书,值的一看。
Google Hacking是一种利用Google搜索引擎的强大功能,来获取网络上敏感信息的技术。它不仅仅是用于查找未修改过的数据库或遗留的WebShell那么简单,而是能够挖掘出更为深层的信息,对网络安全构成潜在威胁。通过掌握...
《Attacking JAVA Serialized Communication》这篇文档深入解析了Java序列化攻击的原理、方法和防范措施,对于理解Java安全以及提高应用程序安全性具有很高的参考价值。对于从事Java开发或者安全研究的人员来说,这...
通过这些技术手段,读者可以更深入地理解程序是如何与操作系统交互的,以及如何利用虚拟化技术进行开发和测试。对于想要深入了解操作系统原理和编程实践的人来说,《Hacking Hello World 3-3》是一份非常有价值的...
“Google Hacking”就是一种通过利用搜索引擎(特别是Google)来查找网站的安全漏洞或者敏感信息的方法。下面将详细介绍Google Hacking的相关概念、原理及其可能带来的风险。 #### 一、Google Hacking定义 Google ...
HackingTeam RCSAndroid sample
Ethical Hacking & Countermeasures
Hacking Tutorials
比较新的Hacking攻防的概念和技术,具有很好的指导价值。
Web Hacking 101: How to Make Money Hacking Ethically By 作者: Peter Yaworski Pub Date: 2018 ISBN: n/a Pages: 255 Language: English Format: PDF Size: 10 Mb With a Foreword written by HackerOne Co-...
- **定义**:Google Hacking是指利用Google搜索引擎的功能来查找安全漏洞或敏感信息的一种技术手段。通过特定的搜索语法,用户可以深入挖掘互联网上的数据,发现通常不易被发现的信息。 - **目的**: - 安全审计:...
The goal of this book is to share the art of hacking with everyone. Understanding hacking techniques is often difficult, since it requires both breadth and depth of knowledge. Many hacking texts seem ...
WiFi Hacking for Beginners - Learn Hacking by Hacking WiFi networks (2017) (Azw3)
WiFi Hacking for Beginners - Learn Hacking by Hacking WiFi networks (2017) (Epub)
google hacking 技术手册
此外,还探讨了利用VB宏进行恶意载荷的部署和控制技术,以及使用Java Applet进行有效载荷交付的方法。这些案例表明了对不同攻击载体和控制技术的深入理解是必不可少的。 3. 攻击技术的持久化与管理 书中讲解了有效...