摘要:
在经典的栈溢出模型中,通过覆盖函数的返回地址来达到控制程序执行流程(EIP寄存器),通常将返回地址覆盖为0x7FFA4512,这个地址是一条JMP ESP指令,在函数返回时就会跳转到这个地址去执行,也就是执行JMP ESP,而此时ESP刚好指向我们在栈上布置的Shellcode,于是就执行了Shellcode。之所以栈上的数据能被执行,是因为早期操作系统没有区分数据和代码,EIP指向哪里就去哪里执行。当引入DEP(Data Execution Prevention 数据执行保护)之后,堆、栈上的内存页属性默认不再具有可执行属性,此时如果想直接在栈上执行数据,就会发生错误:常用的绕过DEP的技术 阅读全文
posted @ 2013-10-06 19:51
问笑
阅读(1239)
评论(0)
推荐(0)
摘要:
最近在考虑C/S结构程序的软件自动升级的实现方式,比如QQ、飞信等都自动升级的功能。自动升级模块虽然还没有编码完成,但是思路还是比较清晰的。自动升级过程中,升级文件的JAR包是专门加载到程序中去的,因此,自定义一个ClassLoader,用于加载用户JAR包,就非常的重要了。应用程序ClassLoader只提供了一个public Class loadClass(String name) throws ClassNotFoundException 方法,没有提供加载JAR的方法。URLClassLoader提供了一个protected void addURL(URL url)的方法,倒是可以加载 阅读全文
posted @ 2013-10-06 19:17
问笑
阅读(2571)
评论(0)
推荐(0)
摘要:
ClassLoader基本概念JVM在运行时会产生三个ClassLoader,Bootstrap ClassLoader、Extension ClassLoader和AppClassLoader.AppClassLoader的Parent是ExtClassLoader,而ExtClassLoader的Parent为Bootstrap ClassLoader。Bootstrap是用C++编写的,我们在Java中看不到它,是null。它用来加载核心类库,在JVM源代码中这样写道:static const char classpathFormat[] ="%/lib/rt.jar:&quo 阅读全文
posted @ 2013-10-06 19:00
问笑
阅读(573)
评论(0)
推荐(0)
浙公网安备 33010602011771号