10 2013 档案

摘要:一、Adobe X沙箱简介Adobe Reader X自从引入沙箱以来,对其攻击的难度就提高了很多。Reader X的沙箱是基于Google的Chrome沙箱,Chrome是开源的,Reader X和Chrome的代码有很大程度上的相似。 Adobe Reader X以及后续版本,在启动的时候会有两个进程,这两个进程的名字都叫AcroRd32.exe,是一对父子进程。其中父进程一般称为Broker进程,子进程称为SandBox进程,二者其实是同一个可执行文件AcroRd32.exe,只不过启动参数不同(参考文章《PLAYING IN THE READER X SANDBOX》)图1:父子... 阅读全文
posted @ 2013-10-30 18:52 问笑 阅读(1245) 评论(0) 推荐(0)
摘要:首先搭建好webService,添加XFire1.2Core Libraries 和XFire1.2HTTP Client Libraries,连接上数据库,下例以oracle为数据库。连接Oralce,连接类为DBConnection.javapackage com.xtgd.test;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;public class DBConnection { private S. 阅读全文
posted @ 2013-10-29 22:26 问笑 阅读(626) 评论(0) 推荐(0)
摘要:JavaBean在一般情况下指的是实体类,在大部分情况下和POJO是同义词,基本构成就是一些字段和与之对应的setter、getter方法,如果一个JavaBean需要在不同的JVM的进程中进行传递,还需要实现Serializable接口;EJB = Enterprise Java Bean,它和JavaBean有本质的区别,最好不要将他们混淆起来,就像不要将Java和Javascript混淆起来一样。EJB有3中类型:Session, Entity和Message-driven。EJB2.x使用起来很复杂,这些缺点在EJB3.0已经不存在了。http://blog.csdn.net/path 阅读全文
posted @ 2013-10-29 22:15 问笑 阅读(15605) 评论(0) 推荐(0)
摘要:EJB的英文全称是企业级的JavaBean两者是完全不同的JavaBean是一个组件,而EJB就是一个组建框架JavaBean面向的是业务逻辑和表示层的显示,通过编写一个JavaBean,可以将业务逻辑的事件和事务都放在其中,然后通过它的变量属性将所需要的内容在表示层传递显示。EJB是部署在服务器上的可执行组建或商业对象。EJB有一个部署描述符,通过这个部署描述符可以对EJB的属性进行描述。EJB不和表示层交互。通常,对于简单的服务器端应用来说,使用JavaBean是很不错的选择。虽然对于复杂的服务器端应用来说,使用JavaBean同样可以达到相同的效果,但这么做,所有底层的实现都必须手工来重 阅读全文
posted @ 2013-10-29 22:07 问笑 阅读(4012) 评论(0) 推荐(0)
摘要:1.我们不禁要问,什么是"服务集群"?什么是"企业级开发"? 既然说了EJB 是为了"服务集群"和"企业级开发",那么,总得说说什么是所谓的"服务集群"和"企业级开发"吧!这个问题其实挺关键的,因为J2EE 中并没有说明白,也没有具体的指标或者事例告诉广大程序员什么时候用EJB 什么时候不用。于是大家都产生一些联想,认为EJB"分布式运算"指得是"负载均衡"提高系统的运行效率。然而,估计很多人都搞错了,这个"服务群集" 阅读全文
posted @ 2013-10-29 21:25 问笑 阅读(369) 评论(0) 推荐(0)
摘要:1 问题提出 在应用系统开发过程中,CLIENT/SERVER体系结构得到了广泛的应用 。其特点是,应用程序逻辑通常分布在客户和服务器两端,客户端发出数据资源访问请求,服务器端将结果返回客户端。但CLIENT/SERVER结构存在着很多体系结构上的问题,比如:当客户端数目激增时,服务器端的性能会因为负载过重而大大衰减;一旦应用的需求发生变化,客户端和服务器端的应用程序都需要进行修改,给应用维护和升级带来了极大的不便;大量的数据传输增加了网络的负载等等。 随着分布式对象技术的逐渐成熟,多层分布式应用体系结构得到了越来越多的应用。应用系统只有向多层分布式转变,才能最终解决CLIENT/S... 阅读全文
posted @ 2013-10-27 02:53 问笑 阅读(432) 评论(0) 推荐(0)
摘要:在这个系列的 第 1 部分,我们讨论了事务并研究了它们的基本属性 ― 原子性(atomicity)、一致性(consistency)、孤立性(isolation)和持久性(durability)。事务是企业应用程序的基本构件;没有它们,几乎不可能构建有容错能力的企业应用程序。幸运的是,Java 事务服务(Java Transaction Service,JTS)和 J2EE 容器自动为您做了大量的事务管理工作,这样您就不必将事务意识直接集成到组件代码中。结果简直是一种魔术 ― 通过遵守几条简单的规则,J2EE 应用程序就可以自动获得事务性语义,只需极少或根本不需要额外的组件代码。本文旨在通过展 阅读全文
posted @ 2013-10-27 02:33 问笑 阅读(1232) 评论(0) 推荐(0)
摘要:J2EE平台由一整套服务(Services)、应用程序接口(APIs)和协议构成,它对开发基于Web的多层应用提供了功能支持,下面对J2EE中的13种技术规范进行简单的描述(限于篇幅,这里只能进行简单的描述): 1.JDBC(Java Database Connectivity): JDBC API为访问不同的数据库提供了一种统一的途径,象ODBC一样,JDBC对开发者屏蔽了一些细节问题,另外,JDCB对数据库的访问也具有平台无关性。2.JNDI(Java Name and Directory Interface): JNDI API被用于执行名字和目录服务。它提供了一致的模型来存取和操作.. 阅读全文
posted @ 2013-10-27 02:21 问笑 阅读(289) 评论(0) 推荐(0)
摘要:J2EE 开发人员使用数据访问对象(Data Access Object DAO)设计模式,以便将低级别的数据访问逻辑与高级别的业务逻辑分离。实现 DAO 模式涉及比编写数据访问代码更多的内容。在本文中,Java 开发人员 Sean C. Sullivan 讨论了 DAO 编程中三个常常被忽略的方面:事务界定、异常处理和日志记录。图 1 显示了应用程序和数据源之间的关系:图 1. 应用程序和数据源在整个应用程序中使用数据访问对象(DAO)使我们可以将底层数据访问逻辑与业务逻辑分离开来。我们构建了为每一个数据源提供 CRUD (创建、读取、更新、删除)操作的 DAO 类。在本文中,我将为您介绍构 阅读全文
posted @ 2013-10-27 00:48 问笑 阅读(805) 评论(0) 推荐(0)
摘要:Fabric是一个Python库,可以通过SSH在多个host上批量执行任务。你可以编写任务脚本,然后通过Fabric在本地就可以使用SSH在大量远程服务器上自动运行。这些功能非常适合应用的自动化部署,或者执行系统管理任务。让我们首先看一个例子。我们知道在*NIX下面,uname命令是查看系统的发行版。可以写这样一个Fabric脚本:from fabric.api import rundef host_type(): run('uname -s')将上面的脚本保存为fabfile.py,就可以通过fab命令在多个主机上执行host_type脚本了:$ fab -H localh 阅读全文
posted @ 2013-10-25 17:09 问笑 阅读(329) 评论(0) 推荐(0)
摘要:在与数据库操作时,如果执行多条更新的SQL语句(如:update或insert语句),在执行第一条后如果出现异常或电脑断电,则后面的SQL语句执行不了,这时候设定我们自己提交SQL语句,不让JDBC自动提交,格式为:conn.setAutoCommit(false);执行多条SQL语句;conn.commit();//恢复自动提交模式conn.setAutoCommit(true);代码示例:[Java] view plaincopyprint?importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.Prepa 阅读全文
posted @ 2013-10-25 09:23 问笑 阅读(3029) 评论(0) 推荐(0)
摘要:一、办事指南 财政资金拨付程序: (一)办理财政实拨资金流程1、预算单位填写《预算单位专项资金使用申请表》或用款申请,经单位领导审核签章、加盖公章后,报财政局经办业务科室 2、财政局经办业务科室对单位报送的申请按财政资金拨款程序审核批复后,由经办人编制《预算单位专项资金拨款审批汇总表》交科长审核后将纸质和电子数据送国库科 3、财政局国库科科长对《预算单位专项资金拨款审批汇总表》审核后交由拨款制单人开具《预算拨款凭证》 4、财政局国库科印章专管人员对《预算拨款凭证》审核、盖章后送开户银行 5、开户银行根据《预算拨款凭证》及时将资金划拨到收款人帐户。 (二)办理财政直接支付业务流程1、预算单... 阅读全文
posted @ 2013-10-24 15:33 问笑 阅读(5269) 评论(0) 推荐(0)
摘要:概述事务是数据库系统中的核心概念之一。作为数据库系统的逻辑工作单元(Unit of Work),事务必须具有四个属性,即原子性、一致性、隔离性和持久性(ACID)。数据库系统往往通过锁机制保证事务的隔离性,通过日志机制保证事务的持久性。应用程序可以通过启动、提交、回滚等操作来控制一个事务的执行与停止。从应用的角度来看,一个事务往往对应一系列紧密关联的用户操作,例如银行系统中的存款、转账等。对于用户而言,提交一个事务相当于完成某种交易行为,因此执行一个事务前后跨越的时间是影响用户体验的因素之一。数据库系统的性能是评判数据库系统的重要因素之一,DB2 作为一款成功的数据库产品提供了很多性能调优的特 阅读全文
posted @ 2013-10-24 12:02 问笑 阅读(574) 评论(0) 推荐(0)
摘要:在应用中,我们经常会碰到sql执行很慢,但是数据库cpu和内存使用率又不高的情况,类似的问题基本上由于锁,排序等原因造成,本文主要描述如何去定位锁等待问题,谁在锁等待?等待谁持有的锁?锁在那个表?一、测试准备1、先在session1执行如下操作,创建测试表#db2 connect to eos#export DB2OPTIONS=+C#db2 "create table tacy_test (a int not null primary key,b varchar(10))"#db2 "insert into tacy_test values(1,'a&# 阅读全文
posted @ 2013-10-24 10:52 问笑 阅读(825) 评论(0) 推荐(1)
摘要:一.什么是线程池?线程池就是以一个或多个线程[循环执行]多个应用逻辑的线程集合.注意这里用了线程集合的概念是我生造的,目的是为了区分执行一批应用逻辑的多个线程和线程组的区别.关于线程组的概念请参阅基础部分.一般而言,线程池有以下几个部分:1.完成主要任务的一个或多个线程.2.用于调度管理的管理线程.3.要求执行的任务队列.那么如果一个线程循环执行一段代码是否是线程池?如果极端而言,应该算,但实际上循环代码应该算上一个逻辑单元.我们说最最弱化的线程池应该是循环执行多个逻辑单元.也就是有一批要执行的任务,这些任务被独立为多个不同的执行单元.比如:int x = 0;while(true){x ++ 阅读全文
posted @ 2013-10-24 10:23 问笑 阅读(209) 评论(0) 推荐(0)
摘要:内存泄漏是比较常见的一种应用程序性能问题,一旦发生,则系统的可用内存和性能持续下降;最终将导致内存不足(OutOfMemory),系统彻底宕掉,不能响应任何请求,其危害相当严重。同时,Java堆(Heap)中大量的对象以及对象间之复杂关系,导致内存泄漏问题的探测和分析均比较困难,采用相应的辅助工具是很必要的。WebSphere应用服务器提供了系列针对内存问题的探测和分析诊断工具,这些工具可以帮助用户进行内存问题的及时探测,保证系统在发生OOM之前,用户可以在无须进行复杂分析的条件下,预知在其部署的应用中是否存在内存泄漏的问题。如果确有内存泄漏现象发生,WebSphere还提供了相应的工具,可以 阅读全文
posted @ 2013-10-24 09:35 问笑 阅读(1125) 评论(0) 推荐(0)
摘要:一次接到用户电话,说某个应用在并发量稍大的情况下就会出现响应时间陡然增大,同时管理控制台的响应时间也很慢,几乎无法进行正常工作。 赶到现场后,查看平台版本为Webshpere6.0.2.29,操作系统为Windows 2003企业版sp2,于是首先分析systemout.log,发现有如下报错: = com.ibm.websphere.ce.j2c.ConnectionWaitTimeoutException Max connections reached 869 Exception = com.ibm.websphere.ce.j2c.ConnectionWaitTimeoutExcepti 阅读全文
posted @ 2013-10-23 17:20 问笑 阅读(3569) 评论(0) 推荐(0)
摘要:近段时间,我们项目中用到的WebSphere应用服务器(WAS),但在客户的production环境下极不稳定,经常宕机。给客户造成非常不好的影响,同时,也给项目组很大压力。为此,我们花了近一个月时间对其诊断,现在基本上稳定了,需要继续观察一段时间。现在我主要将工作做一个阶段性的总结。 我们的产品环境是:WAS6.0+DB2 8.1+AIX5.3+RS/6000。在该产品环境下,出现的问题非常多,现象如下: WAS经常不稳定、宕机几乎一天一次,经常报告OutOfMemory(内存泄漏吗?NO)。 DB2连接数过大,有时把DB2撑死,有时也把AIX撑死。 AIX虚拟内存报错、分页报错、IO也报错 阅读全文
posted @ 2013-10-23 16:41 问笑 阅读(1361) 评论(0) 推荐(0)
摘要:本文摘要如果您考虑将 Spring 或 Hibernate 与 IBM® WebSphere® Application Server 一起使用,则本文向您阐述了如何配置这些框架,以适用于 WebSphere Application Server 的各种场景。引言Spring Framework(通常称为Spring)是一种开源项目,目的是为了使 J2EE™ 环境更具可访问性。Spring 为简单 Java™ 对象提供框架,使这些对象可以通过包装类和 XML 配置使用 J2EE 容器。Spring 的目标是为这些项目提供显著的好处,提高这些项目的开发效率和运行时性能,同时改进 阅读全文
posted @ 2013-10-23 15:00 问笑 阅读(716) 评论(0) 推荐(0)
摘要:在发布一个运行于 WebSphere Application Server 的 J2EE 应用之前,对服务器进行配置和部署应用是必不可少的一个过程,这个过程是非常复杂的。WAS 为用户提供了可视化的管理控制台(Web Admin Console)来完成这一任务。即便如此,开发或部署人员仍需要接受培训,并花费一定的时间和精力来完成这些配置和部署工作。对于一个开发团队来说,如果每个团队成员都要手工的完成环境配置和应用部署,其代价是比较高的。本文介绍使用 wsadmin 工具配合 Jython 脚本来完成服务器的环境配置和应用部署。配置和部署脚本一经编写,就可以多次重复使用。以自动化的脚本代替手工操 阅读全文
posted @ 2013-10-23 14:52 问笑 阅读(2355) 评论(0) 推荐(0)
摘要:如今的电子商务及电子政务应用系统的发展已经到了一个新的阶段,应用系统的成熟度和可用性都达到了更高的水准。因此庞大的部署规模和海量的用户访问成为目前大型电子商务及电子政务应用系统的显著特征。在这样的情况下,企业对系统关键业务:如金融信息,通信,交通等要求确保系统24*7*365不停歇运行业务的分布式部署结构和负载抗压能力,以及高可用性都提出了更高的要求。IBM WAS ND产品可以帮助我们在多应用服务器分布式部署环境下实现集群,确保系统的负载能力和高可用性。下面按照逻辑概念的层次关系,由大到小依次了解IBM WAS ND产品定义的分布式网络环境中的相关概念。单元(Cell) 单元是整个分布式网络 阅读全文
posted @ 2013-10-23 10:55 问笑 阅读(737) 评论(0) 推荐(0)
摘要:在创建数据库时遇到数据库别名已存在的问题时,可以: 1. 首先用 db2 list database directory 命令看在系统数据库目录(System Database Directory)中有没有该数据库,如果有,应该在确定该数据库是没有用的数据库之后用 db2 drop database 数据库名将其删除。2. 如果没有,再用 db2 list database directory on location 看在本地数据库目录(Local Database Directory)中有没有该数据库,location指定数据库的位置(如Windows下的C: ,Unix下的/home/db 阅读全文
posted @ 2013-10-22 15:58 问笑 阅读(788) 评论(0) 推荐(0)
摘要:远程连接需要在DB2客户端通过Catalog命令进行编目,语法如下:1.节点编目db2catalog [admin] {TCPIP | TCPIP4 | TCPIP6} NODE node-name REMOTE hostname [server service-name]node-name 是节点名,不能超过8位,一般使用服务器主机作为节点名;hostname是服务器端主机名或IP,service-name是服务器实例端口号。2.数据库编目db2 catalog DATABASE database-name [as alias] [on path | AT NODE node-name]da 阅读全文
posted @ 2013-10-22 14:51 问笑 阅读(1046) 评论(0) 推荐(0)
摘要:1 dasusr1 DB2 管理服务器用户是管理DAS(Database Adminitrator Service)。要完全适用db2 cc 必须启动DAS。DB2 管理服务器(DAS)响应来自 DB2 管理工具和配置助手(CA)的请求。DB2 管理服务器用户的用户标识用于运行系统上的 DB2 管理服务器(DAS)。缺省用户为 dasusr1,缺省组为 dasadm1。DB2 GUI 工具也会使用此用户标识来对本地服务器数据库实例和数据库执行管理任务。每台计算机上只能有一个 DAS。一个 DAS 服务一个或多个数据库实例,包括属于不同安装的数据库实例。DAS 可以维护其发行版级别低于 DAS 阅读全文
posted @ 2013-10-18 11:47 问笑 阅读(645) 评论(0) 推荐(0)
摘要:D在DB2数据库中,编目(catalog)这个单词很难理解,我自己当初在学习DB2的时候也常常被这个编目搞的很不明白,直到现在我个人也感觉到DB2中编目(catalog)这个术语用的不是很好,具体来说编目有编目节点,编目数据库等如果要理解编目我先简单讲一下DB2数据库的体系结构,在DB2数据库中最大的概念是系统(节点)也就是主机,下面是实例,实例下面是数据库,然后是表空间,然后是数据库对象。现在假设你有一个数据库服务器在p570的机器上,你有一个客户端在windows,linux或任何平台上,你现在想建立一个客户端到服务器端的连接,具体步骤是什么呢?第一步:你必须要在客户端的机器上能够把远程的 阅读全文
posted @ 2013-10-17 16:28 问笑 阅读(1730) 评论(0) 推荐(0)
摘要:公务卡是指财政预算单位工作人员持有的、主要用于日常公务支出和财务报销业务的信用卡。 据财政部网站消息,近日,财政部和中国人民银行印发了《中央预算单位公务卡管理暂行办法》,拟在中央预算单位推行公务卡管理。财政部有关负责人日前针对相关问题进行解答。以下为答问全文: 问:什么是公务卡?是否可以将公务卡理解为一种替代现金支付的结算工具?如何使用公务卡? 答:公务卡,是指预算单位工作人员持有的,主要用于日常公务支出和财务报销业务的信用卡,公务卡制度的直接作用是将传统现金支付结算改为用公务卡支付结算。 公务卡具有两个基本特点:一是具备普通信用卡所具有的授信消费等共同属性,即公务卡能够像其他信用卡一... 阅读全文
posted @ 2013-10-17 09:05 问笑 阅读(282) 评论(0) 推荐(0)
摘要:DB2 数据库分区是 DB2 企业版 DPF(Data Partitioning Feature)选件提供的,它主要用来为大规模数据处理、高并发数据访问提供支持。DB2 数据库分区采用 Share-nothing 体系结构,数据库在一个非共享的环境中被分解为独立的分区,每个分区都具有自己的资源,例如内存,CPU 和磁盘以及自己的数据、索引、配置文件和事务日志。数据库分区有时称为节点或数据库节点。如下图所示:图 1. DB2 数据库分区示例图数据通过 Hash 算法均允地散列到不同的分区内,每个分区只负责处理自己的数据。当用户发出 SQL 操作后,被连接的分区被称为 Coordinate Nod 阅读全文
posted @ 2013-10-11 17:54 问笑 阅读(1255) 评论(0) 推荐(0)
摘要:一、基础问答 1.下面哪些类可以被继承? java.lang.Thread (T) java.lang.Number (T) java.lang.Double (F) java.lang.Math (F) java.lang.Void (F) java.lang.Class (F) java.lang.ClassLoader (T) 2.抽象类和接口的区别 (1)接口可以被多重implements,抽象类只能被单一extends (2)接口只有定义,抽象类可以有定义和实现 (3)接口的字段定义默认为:public static final, 抽象类字段默认... 阅读全文
posted @ 2013-10-09 18:54 问笑 阅读(252) 评论(0) 推荐(0)
摘要:oc就是控制翻转或是依赖注入。通俗的讲就是如果在什么地方需要一个对象,你自己不用去通过new 生成你需要的对象,而是通过spring的bean工厂为你长生这样一个对象。aop就是面向切面的编程。比如说你每做一次对数据库操作,都要生成一句日志。如果,你对数据库的操作有很多类,那你每一类中都要写关于日志的方法。但是如果你用aop,那么你可以写一个方法,在这个方法中有关于数据库操作的方法,每一次调用这个方法的时候,就加上生成日志的操作。说的不是很清晰,多写多看就能明白了。 阅读全文
posted @ 2013-10-07 21:44 问笑 阅读(250) 评论(0) 推荐(0)
摘要:Reflection是Java 程序开发语言的特征之一,它允许运行中的 Java 程序对自身进行检查,或者说"自审",并能直接操作程序的内部属性。例如,使用它能获得 Java 类中各成员的名称并显示出来。 Java 的这一能力在实际应用中也许用得不是很多,但是在其它的程序设计语言中根本就不存在这一特性。例如,Pascal、C 或者 C++ 中就没有办法在程序中获得函数定义相关的信息。JavaBean 是 reflection 的实际应用之一,它能让一些工具可视化的操作软件组件。这些工具通过 reflection 动态的载入并取得 Java 组件(类) 的属性。1. 一个简单 阅读全文
posted @ 2013-10-07 18:24 问笑 阅读(279) 评论(0) 推荐(0)
摘要:Java在Internet上的应用已经日渐普遍,使用在网页上的Java程序称之为applet,利用Applet的嵌入能够使原本静态的HTML富有变化,并且能够做到"声"、"动"、活泼的页面。因为applet是从远端服务器上下载并且在本地执行,所以安全成为至关重要的一个话题。如果用户允许浏览器运行java程序,浏览器会下载并且立刻运行网页中包含的全部applet。用户没有机会来确认或者停止运行单独一个applet。正是因为这个原因,applet(不同于应用程序)的行为受限制。当applet试图违反一条访问规则时,applet安全管理器(applet sec 阅读全文
posted @ 2013-10-07 17:04 问笑 阅读(1070) 评论(0) 推荐(0)
摘要:程序员写一个Java程序,默认的情况下你可以访问任意的机器资源,比如读取,删除一些文件或者网络操作等。当你把程序部署到正式的服务器上,系统管理员要为服务器的安全承担责任,那么他可能不敢确定你的程序会不会访问不该访问的资源,为了消除潜在的安全隐患,他可能有两种办法:1,让你的程序在一个限定权限的帐号下运行;2.利用Java的沙箱机制来限定你的程序不能为非作歹。我们这里主要谈谈后一种方法。怎样给一个程序设置一个“沙箱”呢?这个设置应该是避免改动程序代码的,而且是简单易行的。根据Java的文档,我们了解到只需简单的两个步骤。步骤一.加一个运行参数,就可以让一个程序在沙箱里运行: java -Djav 阅读全文
posted @ 2013-10-07 16:45 问笑 阅读(2524) 评论(0) 推荐(0)
摘要:JAVA的安全模型不同于传统的安全方法,传统的安全方法中,大多数操作系统允许应用程序充分访问系统资源,在操作系统不提供安全保护的机器里,运行环境不能被信任。为了弥补这个缺陷,安全策略经常要求在应用程序执行之前对应用程序建立信任,例如要求程序员在执行从网上获得的应用程序前,先检查病毒和源代码中不安全的代码。这种方法有2个问题:(1)确定程序是否安全的检查很复杂很浪费时间,很少有程序员愿意花时间读程序的源代码,然后再将它编译成本地机器码以保证程序是安全的。(2)病毒检查要不断维护以保证有效性。JAVA的安全模型是不同的,为了防止用户系统受到通过网络下载的不安全程序的破坏,JAVA提供了1个自定义的 阅读全文
posted @ 2013-10-07 16:43 问笑 阅读(730) 评论(0) 推荐(0)
摘要:在经典的栈溢出模型中,通过覆盖函数的返回地址来达到控制程序执行流程(EIP寄存器),通常将返回地址覆盖为0x7FFA4512,这个地址是一条JMP ESP指令,在函数返回时就会跳转到这个地址去执行,也就是执行JMP ESP,而此时ESP刚好指向我们在栈上布置的Shellcode,于是就执行了Shellcode。之所以栈上的数据能被执行,是因为早期操作系统没有区分数据和代码,EIP指向哪里就去哪里执行。当引入DEP(Data Execution Prevention 数据执行保护)之后,堆、栈上的内存页属性默认不再具有可执行属性,此时如果想直接在栈上执行数据,就会发生错误:常用的绕过DEP的技术 阅读全文
posted @ 2013-10-06 19:51 问笑 阅读(1246) 评论(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 问笑 阅读(2580) 评论(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 问笑 阅读(574) 评论(0) 推荐(0)
摘要:NULL指针一般都是应用于有效性检测的,其实这里面有一个约定俗成的规则,就是说无效指针并不一定是 NULL,只是为了简单起见,规则约定只要指针无效了就将之设置为NULL,结果就是NULL这个指针被用来检测指针有效性,于是它就不能用作其它了,而实际上NULL就是0,代表了数值编号为0的一个内存地址,抛开那个约定,它和别的addr没有任何区别,简单的说,完全可以选择一个其它的地址作为指针有效性检测,比如0x1234等等,不选其它地址的原因就是第一,NULL比较好记忆,第二,由于NULL就是0,因此很容易进行布尔判断。请看下面的程序:?12345678910111213141516171819202 阅读全文
posted @ 2013-10-05 10:49 问笑 阅读(477) 评论(0) 推荐(0)