沧海一粟

More know, more less

排序:
默认
按更新时间
按访问量

案例分享:如何通过JVM crash 的日志和core dump定位和分析Instrument引起的JVM crash

1. JVM crash了产品发来一份crash report, 什么是crash report请参考我的前期博客(http://blog.csdn.net/raintungli/article/details/7642575),下面是截取了crash report的部分,用于分析:# Probl...

2017-09-02 11:04:12

阅读数:1562

评论数:1

Struts2远程命令执行漏洞 S2-045 源码分析

Struts2 又爆OGNL的高危漏洞S-045,又是OGNL的漏洞漏洞分析1. Struts 的上传request在上传文件里,Struts默认使用的是common upload 的上传组件, 为了能被action访问到上传的文件,通常会重新封装request,  Spring也是这么做。Jak...

2017-03-08 02:04:34

阅读数:7556

评论数:3

CVE-2016-1000031 Apache Commons FileUpload 反序列化漏洞深入分析

反序列化漏洞最近一直不得安宁,先有Apache Commons Collections通过反序列化实现远程代码执行,再有Spring RMI 反序列化漏洞,最新又有了common upload file的反序列化漏洞CVE-2016-1000031(https://cve.mitre.org/cg...

2017-02-20 15:45:26

阅读数:3554

评论数:0

Java 8 动态类型语言Lambda表达式实现原理分析

Java 8支持动态语言,看到了很酷的Lambda表达式,对一直以静态类型语言自居的Java,让人看到了Java虚拟机可以支持动态语言的目标。

2017-02-07 17:22:18

阅读数:5416

评论数:4

Java Instrument (六) 动态重定义Class

在上篇博客(http://blog.csdn.net/raintungli/article/details/51646556)中提到了在on_attach的方式上如何重新定义class,里面也提到了最后attach时候会调用我们自定义的agent class的agentmain方法,在看Instr...

2016-06-13 23:03:00

阅读数:2941

评论数:1

Java Instrument (五) Agent attach

首先先参考笔者前期的博客(http://blog.csdn.net/raintungli/article/details/7034005),先了解在jvm启动的过程中的两个线程Signal Dispatcher和Attach Listener 在博客中,已经探讨了在Attach Listener...

2016-06-12 23:22:26

阅读数:2138

评论数:0

Java Instrument (三) 钩子函数

Java Instrument (三) 钩子函数

2016-06-07 22:02:41

阅读数:1465

评论数:0

Java Instrument (二) JVMTI

Java Instrument (二) JVMTI

2016-06-07 21:57:10

阅读数:2151

评论数:0

Java Instrument(一) Java Agent

1  Agent Agent在java中本质是一个动态库,利用JVMTI暴露出来的一些接口实现逻辑的入侵,需要实现如下的一个或者多个函数: JNIEXPORT jint JNICALL Agent_OnLoad(JavaVM *vm, char *options, void *reserved)...

2016-06-06 09:36:36

阅读数:2911

评论数:0

java中的SecureRandom在linux中的实现

在安全系统中,通常我们会使用securerandom去更安全的生成随机数,而默认的SecureRandom里使用的算法是SHA1PRNG。   Linux中的随机数发生器 在Linux操作系统中,有一个特殊的设备文件,可以用作随机数发生器或伪随机数发生器。 /dev/random 在读取时,/de...

2015-01-19 19:52:28

阅读数:16439

评论数:5

Linux下关于TCP的keep alive的实现源码分析

TCP下的Keep Alive 我们常说的TCP的keep alive,就是为了保证连接的有效性,在间隔一定的时间发探测包,根据回复来确认该连接是否有效。通常上层应用会自己提供心跳检测机制,而Linux内核本身也提供了从内核态确保连接有效性的方式。 在sock 函数中可以设置是否需要打开keep...

2015-01-14 21:14:49

阅读数:3355

评论数:0

不要在linux上使用java 7 Files的接口参数StandardOpenOption.DELETE_ON_CLOSE

最近在看安全代码规范建议中提到关于如何删除创建的临时文件,推荐使用jdk7中的Files的函数,通过参数StandardOpenOption.DELETE_ON_CLOSE来控制 代码示例 BufferedWriter writer = Files.newBufferedWriter(tempFi...

2015-01-07 19:50:17

阅读数:2332

评论数:0

自己动手编译hsdis

HSDIS 是hotspot 的一个工具,用于能够da yin

2014-10-21 17:44:02

阅读数:2729

评论数:0

Java (JDK7)中的String常量和String.intern的实现

Java中的String常量和String.intern的实现

2014-08-16 10:15:22

阅读数:7159

评论数:4

linux上TCP connection timeout的原因查找

最近在产线上经常出现connection timeout的问题

2014-07-16 17:37:44

阅读数:22461

评论数:0

ThreadMXBean 打出堆栈信息原理分析

我们通常会使用工具jstack 去跟踪线程信息,其如何实现使用attach 的方式还是ptrace 的方式,这些可以去参考本人的博客的其他文章。 但这些方式都是外部使用的方式,如何直接使用java代码得到当前进程的线程的信息,方便监控jvm的整个运行状态,就不的不提到了ManagementFact...

2014-03-15 16:28:21

阅读数:4341

评论数:2

java JNI 实现原理 (六) 调用JNI方法

在前面的博客中提到过调用的JNI的entry是generate_native_entry,也就是说方法generate_native_entry是最终调用的我们的c++写的库文件里的方法

2013-11-16 11:14:07

阅读数:3335

评论数:0

java JNI 实现原理 (五) JNI方法解释调用

Hotspot主要有两种解释器,而下面我们主要讨论的是 Template Intepreter也叫asm interprete解释器, 文章下面的介绍基本都是基于template解释器 我们举一个invokespecial的例子,下面是templateTable方法解释invokespecial的...

2013-11-15 08:25:08

阅读数:3034

评论数:1

java JNI 实现原理 (四) 初始化JNI方法

在调用函数的时候都会在template 解释器中会使用 invokespecial  -> prepare_invoke -> load_invoke_cp_cache_entry -> resolve_cache_and_index 在代码中我们可以看到 case By...

2013-11-15 08:24:12

阅读数:3317

评论数:1

java JNI 实现原理 (三) JNI中的RegisterNatives方法

我们常用javah去生成JNI的头文件,然后去实现自己定义的JNI方法,使用这种方式比较传统,但是我们可以看到定义的格式甚至连名字都必须按照规范 JNIEXPORT jint JNICALL Java_test_symlink (JNIEnv *, jobject, jstring, jst...

2013-11-09 07:07:02

阅读数:8920

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭