一. 背景当我们将项目部署到服务器上时,一般会在jar包的同级目录下加上application.yml配置文件,这样可以在不重新换包的情况下修改配置。一般会将数据库连接、Redis连接等放到配置文件中。例如配置数据库连接:spring: servlet: multipart: max-file-size: 10MB # 文件大小限制 max-request-si
# 使用 JVMTI 实现 Spring Boot 应用加密 在这篇文章中,我们将讨论如何使用 Java 虚拟机工具接口(JVMTI)来加密 Spring Boot 应用。JVMTI 是一种底层 API,能够让我们在 Java 虚拟机中执行各种操作,包括方法的动态修改等。在这里,我们的目标是通过 JVMTISpring Boot 应用进行一定程度的加密,以防止反向工程。 ## 整体流程
原创 2024-10-11 08:09:34
116阅读
背景对于配置中的密码(DB, MQ, Redis等),甚至账号,在生产环境下存明文,不安全,不专业,不合适。一把插着钥匙的锁,能说它是安全的吗?操作流程关于Jasypt实现对配置项的加密,网络上已经有很多这方面的资料,这里简要描述下步骤。引入依赖<dependency> <groupId>com.github.ulisesbocchio</groupId>
早期(JDK1.4时代及之前)的HotSpot虚拟机为了提供监控、调试等不会在《Java虚拟机规范》中约定的内部功能和数据,就曾开放过Java虚拟机信息监控接口(Java Vritual Machine Profiler Interface, JVMPI)与Java虚拟机调试窗口(Java Virt ...
转载 2021-08-26 10:15:00
163阅读
2评论
# Spring Boot代码加密实现 本文将介绍如何使用Spring Boot实现代码加密。首先,我们将展示整个实现过程的步骤,并提供每一步所需的代码示例和注释。 ## 实现步骤 下表总结了实现代码加密的步骤: | 步骤 | 描述 | | --- | --- | | Step 1 | 配置Spring Boot项目 | | Step 2 | 加密目标代码 | | Step 3 | 配置代
原创 2024-01-11 06:55:00
281阅读
1.背景 ToB项目私有化部署,携带有项目接口,它是一套由虚拟机直接提...
原创 2023-05-31 23:00:38
681阅读
# Android 调用Jvmti 实现教程 ## 整体流程 下面是实现“Android 调用Jvmti”的整体流程,我们可以通过以下步骤来完成这个任务: | 步骤 | 描述 | | --- | --- | | 步骤一 | 创建一个Android项目 | | 步骤二 | 实现Jvmti agent | | 步骤三 | 在Android项目中加载Jvmti agent | | 步骤四 | 在A
原创 2024-03-03 05:11:47
85阅读
方法调用并不等同于方法执行,方法调用阶段唯一的任务就是确定被调用方法的版本(即调用哪一个方法),暂时还没有涉及到方法内部的具体运行过程。在程序运行时,进行方法调用是最普遍最频繁的操作,但Class文件的编译过程不包含传统编译中的连接步骤,一切方法调用在Class文件里存储的都只是符号引用,而不是方法在实际运行时内存布局中的入口地址(相当于之前说的直接引用)。这个特性给Java带来了更强大的动态扩展
# JVMTI javaagent Instrument关系 在Java中,JVMTI(Java Virtual Machine Tool Interface)是一种用于编写和访问JVM工具的编程接口。它允许开发者在运行时对Java应用程序进行监控和控制。其中,javaagent和Instrument两种机制是JVMTI的两个重要组成部分。 ## javaagent javaagent是一种
原创 2023-07-29 09:24:25
152阅读
SpringBoot项目——混淆加密Java是一种跨平台的编程语言,代码运行之前会被JDK编译成字节码文件。在Java字节码中包括了很多源代码信息,比如变量名、方法名等等,并且通过这些名称来访问变量和方法,这些符号带有许多语义信息,很容易被反编译成Java源代码。平时我们在分发和部署项目的时候,为了保护我们自己的知识产权,通常要对Java代码进行混淆加密。Oracle数据库是用Java开发的,如果
转载 2023-06-20 23:48:33
296阅读
给一个系统定位问题的时候,知识、经验是关键基础,数据是依据,工具是运用知识处 理数据的手段。这里说的数据包括:运行日志、异常堆栈、GC日志、线程快照 (threaddump/javacore文件)、堆转储快照(heapdump/hprof文件)等。经常使用适当的虚拟 机监控和分析的工具可以加快我们分析数据、定位解决问题的速度,但在学习工具前,也应 当意识到工具永远都是知识技能的一层包装,没有什么工
JVM中类的装载是由类加载器(ClassLoader)和它的子类来实现的,Java中的类加载器是一个重要的Java运行时系统组件,它负责在运行时查找和装入类文件中的类。 由于Java的跨平台性,经过编译的Java源程序并不是一个可执行程序,而是一个或多个类文件。当Java程序需要使用某个类时,JVM会确保这个类已经被加载、连接(验证、准备和解析)和初始化。类的加载是指把类的.class文
转载 2024-10-21 08:49:06
7阅读
JVM层对jar包字节码加密 使用 JVMTI 实现 jar 包字节码加密(内含源码下载)
转载 2019-07-02 10:37:00
481阅读
2评论
前言Spring Security系列二 用户登录认证数据库实现中,我们已经把对用户的认证改成了数据库实现,功能上虽然完成了,但是用户的密码却都是以明文保存的,这在实际项目中安全系数上会有所欠缺。在本章中我们将实现如何对用户的密码进行加密Spring Security中的密码加密Spring Security中,对密码的加密都是由PasswordEncoder来完成的。那什么时候会调用这个Pa
转载 2024-03-05 22:33:13
44阅读
Spring 配置数据库用户名密码加密传统形式配置数据库用户名密码对于一般的spring框架,经常要用到数据源配置,如果是用xml配置的话,一般都是如下形式数据库用户名密码密文配置实现现在的需求是不能在配置文件里明文配置数据库用户名和密码新增密文属性文件class目录新增jdbc.properties配置文件,里面配置数据库用户名和密码的密文修改spring数据库配置为占位符修改spring数据库
转载 2024-02-19 11:25:06
23阅读
今天给大家整理了一下jvm和android 使用的Dalvik(dvm)的区别 首先看一下android的结构层图从应用层相应调用Application framework层,这俩层都是由java程序编写的,然后通过JNI接口调用c层,最后执行在dvm虚拟机上,所有的核心全部依赖于linux核心层然后我们聊一下java在jvm上是怎么编译运行,实现跨平台的呢?我们会编写一个简单的java类,然后j
转载 2023-08-29 20:29:40
75阅读
Spring Security 中的密码加密一、PasswordEncoder 详解常见的实现类(了解)DelegatingPasswordEncoder源码分析DelegatingPasswordEncoder 在哪实例化的?二、自定义加密自定义方式一:使用{id}的形式自定义方式二:向Spring容器中注入PasswordEncoder对象三、总结 在【深入浅出Spring Security
转载 2024-02-20 20:40:43
61阅读
在上一篇文章《Spring Boot (三): ORM 框架 JPA 与连接池 Hikari》 我们介绍了 JPA 与连接池 Hikari 的整合使用,在国内使用比较多的连接池还有一个是阿里开源的 Druid 。本篇文章我们就来聊一聊 Druid 的一些使用姿势。1. Druid 是什么?我们先来看一下官方的回答:Druid 是 Java 语言中最好的数据库连接池。 Druid 能够提供强大的监控
转载 2024-08-23 10:23:09
355阅读
Spring项目中,在默认情况下配置文件的内容都是明文的,但是对于敏感的信息,如中间件的密钥,DB、Redis密码等,直接使用明文存在安全隐患。在对配置文件中敏感信息加密时,常用到的Jasypt工具。 SpringBoot常用配置文件加密工具比较 alibaba.druid 通过alibaba.druid工具加密,但只能用于DB链接相关参数加密,无法实现对其他敏感信息加密 Jasypt
        Java生态中有一些非常规的技术,它们能达到一些特别的效果。这些技术的实现原理不去深究的话一般并不是广为人知。这种技术通常被称为黑科技。而这些黑科技中的绝大部分底层都是通过JVMTI实现的。形象地说,JVMTI是Java虚拟机提供的一整套后门。通过这套后门可以对虚拟机方方面面进行监控,分析。甚至干预虚拟机的运行  &nbs
转载 2023-07-09 18:28:14
206阅读
  • 1
  • 2
  • 3
  • 4
  • 5