首页 文章 精选 留言 我的

精选列表

搜索[手游加固],共7832篇文章
优秀的个人博客,低调大师

VMware vSphere 6.5:VM Encryption加固安全性能

【大咖・来了 第7期】10月24日晚8点观看《智能导购对话机器人实践》 尽管虚拟机加密技术已经出现一段时间,但是仍然存在很多问题,因此VMware希望通过vSphere 6.5的全新虚拟机加密工具改变这种现状。 尽管虚拟机加密技术能够限制未授权访问从而提升系统安全性,但是这种技术一直以来发展十分缓慢,主要原因在于系统存在的各种问题。VMware希望vSphere 6.5中的VM Encryption 工具能够帮助解决这些问题。vSphere 6.5 VM Encryption并不直接针对guest OS,而是虚拟机文件系统的hypervisor。使用这种方式,不论guest OS是Windows还是Linux,都不需要安装任何客户端软件。 VM Encryption工作原理 VM Encryption通过存储策略进行管理。vSphere 6.5提供了存储策略管理(Storage Policy-Based Management)系统,管理员可以使用其创建策略,为虚拟磁盘和虚拟机配置文件定义存储需求。 如图A所示,在虚拟机存储策略页面,管理员可以更改VM Encryption的存储策略样例,之后将其应用到虚拟机对象,比如虚拟磁盘。 图A.创建自定义VM Encryption策略 如果想要配置VM Encryption,管理员必须首先添加KMS(密钥管理服务器),因为其并不是系统内置组件;管理员可以选择任何一种可用——或者免费——产品。选择vCenter Server,之后遵循如下步骤:Management->Key Management Service-> Add Server。 虚拟机和虚拟磁盘控制器之间所有的I/O流量都会通过内核模块进行加密,这也是ESXi hypervisor的一部分。之后这些I/O会被发送到存储层。 “加密”意味着什么? 所有虚拟机文件——包括VMDK、VMX配置文件、快照文件以及VMX交换文件——都会被存储在文件夹中,因此这些文件都将会被加密。 加密由hypervisor进行管理,而不是guest VM,因此访问虚拟机内存并不能获取密钥。 如何在vMotion中使用VM Encryption功能 管理员还可以在vMotion过程中对虚拟机进行加密。一旦虚拟机需要进行vMotion迁移, vCenter Server将会生成一个随机的256位密钥,之后将其封装发送到vMotion的相关主机。 vMotion就可以使用这个密钥来加密数据了。 管理员可以选择对虚拟机还是vMotion进行加密,但是需要注意的是只有在对虚拟机加密之后才能进行vMotion加密。 相关功能在虚拟机硬件层实现。如图B所示,加密vMotion为管理员提供了三种选项: Disabled、 Opportunistic或者Required。 Disabled表示不使用vMotion加密功能, Opportunistic表示仅当目标主机支持时才对vMotion进行加密,否则其使用非加密vMotion。而***一种方式 Required,表示管理员需要对vMotion进行加密,系统将会对目标主机——vSphere 6.5——进行检查,查看其是否支持加密,如果不支持,那么vMotion将会失败。 图B. 加密的vMotion加密选项 配置虚拟机加密的过程非常简单。如果管理员已经配置好KMS,那么只需要将vCenter Server重定向到KMS服务器,创建加密策略并且应用到指定虚拟机,加密vMotion流量也非常简单,但是需要两端都使用***的ESXi 6.5。

优秀的个人博客,低调大师

Android apk如何加固防止被破解(防止逆向编译)

现在主要工具是接触SDK,为了防止游戏包被破解编译,以及发现加密串,我来分享下以下几点: 防破解技术主要有四种实现方式: 1.代码混淆(ProGuard)技术 2.签名比对技术 3.NDK .so 动态库技术 4.动态加载技术 5.第三方平台加密以及检测漏洞 这个在 Android 安全之如何反编译与加密apk包 这篇文章中也提及到了相关的知识点。 第一种: 代码混淆技术(ProGuard) 该技术主要是进行代码混淆,降低代码逆向编译后的可读性,但该技术无法防止加壳技术进行加壳(加入吸费、广告、病毒等代码),而且只要是细心的人,依然可以对代码依然可以对代码进行逆向分析,所以该技术并没有从根本解决破解问题,只是增加了破解难度。 第二种: 签名比对技术 该技术主要防止加壳技术进行加壳,但代码逆向分析风险依然存在。而且该技术并不能根本解决被加壳问题,如果破解者将签名比对代码注释掉,再编译回来,该技术就被破解了。 第三种: NDK .so动态库技术,该技术实现是将重要核心代码全部放在C文件中,利用NDK技术,将核心代码编译成.so动态库,再用JNI进行调用。该技术虽然能将核心代码保护起来,但被加壳风险依然存在。 第四种: 动态加载技术,该技术在Java中是一个比较成熟的技术,而Android中该技术还没有被大家充分利用起来。 第五种: 第三方平台使用 主要讲解第四种方法,该技术可以有效的防止逆向分析、被破解、被加壳等问题,动态加载技术分为以下几步: 将核心代码编译成dex文件的Jar包 对jar包进行加密处理 在程序主入口利用NDK进行解密 再利用ClassLoader将jar包进行动态加载 利用反射技术将ClassLoader 设置成系统的ClassLoader。 主要优点有: 1.核心代码在被加密的jar中,所以破解者无法解压出class文件,如果加密秘钥被破解者拿到,那将是另外一层面的安全问题了。 2.该技术也可以有效防止加壳技术,代码是动态加载上来的,破解者的壳程序无法加入到已加密的jar包中,及时破解者注入壳程序入口,壳程序因为不在ClassLoader 的jar包中,所以也无法被执行起来,除非破解者替换ClassLoader的jar包,关掉NDK解密代码.但这种安装到手机上,已经不在是我们的应用,用户一定会将其卸载掉。 所以综合起来比较,第四种动态加载技术是最安全的,但效率问题,本人并没做严格测试,粗略实验了一下,效率并没有明显降低。 // 1.Jar包加密加密解密文件// public static boolean enOrDecryptFile(byte[] paramArrayOfByte, String sourceFilePath, String destFilePath,int mode){ File sourceFile = new File(sourceFilePath); File destFile = new File(destFilePath); CipherOutputStream cout = null; FileInputStream in = null; FileOutputStream out = null; if (sourceFile.exists() && sourceFile.isFile()) { if (!destFile.getParentFile().exists()) { destFile.getParentFile().mkdirs(); } try { destFile.createNewFile(); in = new FileInputStream(sourceFile); out = new FileOutputStream(destFile); // 获取密钥// init(); SecretKeySpec secretKeySpec = new SecretKeySpec(defPassword, "AES"); Cipher cipher; cipher = Cipher.getInstance("AES"); cipher.init(mode, secretKeySpec); cout = new CipherOutputStream(out, cipher); byte[] cache = new byte[CACHE_SIZE]; int nRead = 0; while ((nRead = in.read(cache)) != -1) { cout.write(cache, 0, nRead); cout.flush(); } }catch (IOException e) { e.printStackTrace(); return false; } catch (NoSuchAlgorithmException e) { e.printStackTrace(); return false ; } catch (NoSuchPaddingException e) { e.printStackTrace(); return false ; }catch (InvalidKeyException e) { e.printStackTrace(); return false; }finally{ if(cout != null){ try { cout.close(); } catch (IOException e) { e.printStackTrace(); } } if(out != null){ try { out.close(); } catch (IOException e) { e.printStackTrace(); } } if(in != null){ try { in.close(); } catch (IOException e) { e.printStackTrace(); } } } return true; } return false; } jar用SDK\platform-tools\下的dx命令进行dex格式转化 dx --dex --output=生成的目标文件的地址(绝对路径) 需要转化的jar文件(绝对路径) 例如:dx --dex --output=H:\classdex.jar H:\dujinyang-KARL.jar 然后再用加密工具将生成jar文件进行加密处理 最后通过代码动态加载: File file = new File("/data/data/" + base.getPackageName() + "/.cache/"); if (!file.exists()) { file.mkdirs(); } try { Runtime.getRuntime().exec("chmod 755 " + file.getAbsolutePath()).waitFor(); } catch (InterruptedException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } Util.copyJarFile(this); Object currentActivityThread = RefInvoke.invokeStaticMethod( "android.app.ActivityThread", "currentActivityThread", new Class[] {}, new Object[] {}); String packageName = getPackageName(); HashMap mPackages = (HashMap) RefInvoke.getFieldOjbect( "android.app.ActivityThread", currentActivityThread, "mPackages"); WeakReference wr = (WeakReference) mPackages.get(packageName); MyClassLoader dLoader = new MyClassLoader("/data/data/" + base.getPackageName() + "/.cache/classdex.jar", "/data/data/" + base.getPackageName() + "/.cache", "/data/data/" + base.getPackageName() + "/.cache/", base.getClassLoader()); try { Class<?> class1 = dLoader.loadClass("com.example.test.TestActivity"); Log.i("b364","----------->class1: "+class1); } catch (ClassNotFoundException e){ Log.i("b364","----------->class not found Exception!"); e.printStackTrace(); } Log.i("b364","------>PackageInfo: "+wr.get()); // DexClassLoader dLoader = new DexClassLoader(apkFileName, odexPath, // libPath, (ClassLoader) RefInvoke.getFieldOjbect( // "android.app.LoadedApk", wr.get(), "mClassLoader")); RefInvoke.setFieldOjbect("android.app.LoadedApk", "mClassLoader", wr.get(), dLoader); 处理完成,如果在Application中做特别处理也是可行的。之前就有人分析了爱加密的加密方式,不过这里不做阐述,有兴趣可以一起讨论。 下篇文章中我们来讲讲如何 逆向apk的动态库

优秀的个人博客,低调大师

CentOS6 主机安全加固策略 Clamav 杀毒软件

简单说明: 依据《CentOS6实验机模板搭建部署》克隆两台实验机: Server:192.168.77.10 Client:192.168.77.11 依据《CentOS6u9 简单邮件告警部署》在Server主机上部署命令邮件告警 使用EPEL网络YUM源部署升级clamav是想当方便的,建议使用该方案代替源码编译安装 Server主机部署: 1° 使用YUM源安装: # 可以使用网络EPEL源进行yum安装和升级,比源码安装的方式简单太多了 # 这里选择阿里云镜像网站的源: wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo # 安装 yum -y install clamav clamav-db clamd # 升级 yum update clamav clamav-db clamd # 设置开机启动 chkconfig clamd on # 由软件包clamav-db安装的freshclam的病毒库升级默认使用每日系统任务进行 2° 查看这三个安装包分别安装了哪些组件: rpm -ql clamav # 病毒库升级时用到的配置文件 # /etc/freshclam.conf # 安装出来的可执行命令 # 包括bytecode测试命令、扫描和提交 # 病毒库升级和签名以及库管理工具 # /usr/bin/clambc # /usr/bin/clamscan # /usr/bin/clamsubmit # /usr/bin/freshclam # /usr/bin/sigtool # libclamav 相关的库文件 # /usr/lib64/libclamav.so.7 # /usr/lib64/libclamav.so.7.1.1 # 文档和man文档 # 其中/usr/share/doc/clamav-0.99.4/clamdoc.pdf # 就是 User Manual,该文档系统介绍了clamav # 是下篇拆读博文的主角 # /usr/share/doc/clamav-0.99.4/... # /usr/share/man/man*/... rpm -ql clamav-db # 使用系统cron的每日病毒库升级计划 # /etc/cron.daily/freshclam # Linux的日志文件管理工具logrotate的相关配置 # /etc/logrotate.d/freshclam # 病毒库存储目录和初始的病毒库文件 # /var/lib/clamav/... # 病毒库升级日志目录 # /var/log/clamav/freshclam.log rpm -ql clamd # 配置文件和额外的配置文件目录 # /etc/clamd.conf # /etc/clamd.d # Linux的日志文件管理工具logrotate的相关配置 # /etc/logrotate.d/clamav # 系统守护进程脚本 # /etc/rc.d/init.d/clamd # /usr/sbin/clamd # 配置检测命令、扫描命令和命令行监控工具 # /usr/bin/clamconf # /usr/bin/clamdscan # /usr/bin/clamdtop # 文档和man文档 # /usr/share/clamav/... # /usr/share/doc/clamd-0.99.4/... # /usr/share/man/man*/... # 病毒库目录 # /var/lib/clamav # 日志目录和PID以及Socket目录 # /var/log/clamav/... # /var/run/clamav 3° 配置启动: ALERT_EMAIL=XXXX@qq.com # 守护模式配置文件修改 /etc/clamd.conf sed -i "s/127.0.0.1/$(hostname -i)/g" /etc/clamd.conf sed -i 's/^#ExcludePath/ExcludePath/g' /etc/clamd.conf sed -i 's/^User clam/User root/g' /etc/clamd.conf sed -i "s|^#VirusEvent.*$|\ # VirusEvent /bin/echo \"%v\" \| /bin/mailx -s \"ClamAV 探测告警\" $ALERT_EMAIL|g" \ /etc/clamd.conf # 病毒库升级配置文件修改 /etc/freshclam.conf sed -i 's|^#PidFile.*$|PidFile /var/run/clamav/freshclam.pid|g' /etc/freshclam.conf sed -i 's/^#DatabaseMirror.*$/DatabaseMirror db.cn.clamav.net/g' /etc/freshclam.conf sed -i 's/^#Checks 24$/Checks 24/g' /etc/freshclam.conf sed -i 's|^#NotifyClamd.*$|NotifyClamd /etc/clamd.conf|g' /etc/freshclam.conf sed -i "s|^#OnUpdateExecute.*$|\ # OnUpdateExecute /bin/echo \"升级成功\" \|/bin/mailx -s \"ClamAV升级告警\" $ALERT_EMAIL|g" \ /etc/freshclam.conf # 部署后首次升级病毒库 freshclam # 打开病毒库升级的守护进程模式 freshclam -d echo '/usr/bin/freshclam -d'>>/etc/rc.local # 虽然有每日系统任务,但是还是用守护进程模式每小时更新 # 并且保留/etc/cron.daily/freshclam # 防止守护进程模式异常情况出现 # 开启探测服务 /etc/init.d/clamd start # 测试扫描: clamdscan -h clamdscan --quiet -z -m -l /tmp/clamdscan_$(date +%s).log /boot clamdscan --quiet -z -m -l /tmp/clamdscan_$(date +%s).log /tmp/clamav-0.100.0 # 此时依然可以使用源码安装包进行探测测试 # 注意,需要执行 ./configure && make # 不要执行 make install 进行安装 Client主机配置: # 客户机安装配置clamd客户端clamdscan wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo # 只安装clamd客户端clamdscan yum -y install --downloadonly --downloaddir=/tmp clamd rpm -ivh --nodeps /tmp/clamd-0.99.4-1.el6.x86_64.rpm rm -rf /etc/clamd.d rm -rf /etc/logrotate.d/clamav rm -rf /etc/rc.d/init.d/clamd rm -rf /usr/sbin/clamd rm -rf /usr/share/clamav rm -rf /usr/share/doc/clamd-0.99.4 rm -rf /usr/share/man/man1/clam* rm -rf /usr/share/man/man8/clam* rm -rf /var/lib/clamav rm -rf /var/log/clamav rm -rf /var/run/clamav # 使用yum的downloadonly参数只下载安装包 # 然后使用rpm命令忽略依赖,只安装clamd客户端clamdscan # 然后删掉不需要的安装目录和文件 # 修改配置文件,指向server主机 cd /etc cat>clamd.conf<<EOF TCPAddr 192.168.77.10 TCPSocket 3310 EOF # 测试 clamdscan -z -m /boot cp -av /boot/efi/EFI/redhat/grub.efi /tmp clamdscan -z -m /tmp/grub.efi clamdscan --quiet -z -m -l /tmp/clamdscan_$(date +%s).log /tmp/clamav-0.100.0 # 此时依然可以使用源码安装包进行探测测试 # 注意,需要执行 ./configure && make # 不要执行 make install 进行安装

优秀的个人博客,低调大师

lamp-cloud 5.6.2 发布,安全加固、模块优化、UI 体验提升

升级日志 依赖版本跃升 升级 Spring Boot 至 3.5.7 升级 Spring Cloud Alibaba 至 2025.0.0.0 安全漏洞修复 升级 org.eclipse.jgit,解决 CVE-2025-4949 升级 commons-lang3,修复 CVE-2025-48924 升级 commons-fileupload,堵住 CVE-2023-24998/2025-48976/2024-47554 漏洞 架构优化 新增独立模块lamp-common-config,统一管理全局配置类与文件 为 spring-boot-actuator 端点添加访问限制,消除安全隐患 前端体验增强(lamp-web-max-vben) 优化左侧和右侧认证面板动画效果 优化Checkbox组件hover样式,Input组件placeholder样式,TabsList组件圆角样式 实现锁屏 / 解锁密码框自动聚焦,提升认证面板动画流畅度 修复对话框modal组件方法名错误 优化侧边栏展开折叠图标 体验网址 vben2 版 vben5 版 数据源模式 点我体验 点我体验 字段模式 点我体验 点我体验 推广 我正在参加 Gitee 2025 最受欢迎的开源软件投票活动,快来给我投票吧!https://gitee.com/activity/2025opensource?ident=IDPOGG 关于 lamp 灯灯(简称灯,英文名:lamp),她是一个项目集,为满足高内聚低耦合设计原则,将一个大项目拆解为以下几个子项目: lamp-util:后端工具集 lamp-cloud:基于 Spring Cloud 实现的后台 lamp-boot:基于 Spring Boot 实现的后台 lamp-job:基于 xxl-job 集成本项目的分布式定时任务 lamp-generator:代码生成器 lamp-web:前端 lamp-cloud简介 lamp-cloud是基于SpringCloudAlibaba、SpringCloud、SpringBoot开发的微服务中后台快速开发平台,支持jdk17、jdk11和jdk8,专注于多租户 (SaaS 架构) 解决方案,亦可作为普通项目(非 SaaS 架构)的基础开发框架使用,目前已实现数据库隔离、字段隔离等租户隔离方案以及非租户隔离的解决方案。 她拥有自研 RBAC(基于租户应用的角色权限控制体系)、网关统一鉴权、数据权限、优雅缓存解决方案、防缓存击穿、前后端统一表单校验、字典数据自动回显、可视化前后端代码生成器、支持多种文件存储、支持多种短信邮件发送接口、灰度发布、防 XSS 攻击、防 SQL 注入、分布式事务、分布式定时任务等功能;支持多业务系统并行开发,支持多服务并行开发,是中后台系统开发脚手架的最佳选择。 lamp-cloud 代码简洁,注释齐全,架构清晰,非常适合个人学习以及中小企业作为基础框架使用。采用 Spring Cloud Alibaba、SpringBoot、Mybatis、Seata、Sentinel、RabbitMQ、FastDFS/MinIO、SkyWalking 等主要框架和中间件。本项目旨在实现基础框架能力,不涉及具体业务。 关注项目 官网:https://tangyh.top 源码:https://github.com/dromara/lamp-cloud 源码:https://gitee.com/dromara/lamp-cloud

优秀的个人博客,低调大师

Jetlinks 物联网平台专业版增加固件升级功能

JetLinks 开源物联网平台 JetLinks 基于Java8,Spring Boot 2.x,WebFlux,Netty,Vert.x,Reactor等开发, 是一个开箱即用,可二次开发的企业级物联网基础平台。平台实现了物联网相关的众多基础功能, 能帮助你快速建立物联网相关业务系统。 核心特性 支持统一物模型管理,多种设备,多种厂家,统一管理。 统一设备连接管理,多协议适配(TCP,MQTT,UDP,CoAP,HTTP等),屏蔽网络编程复杂性,灵活接入不同厂家不同协议的设备。 灵活的规则引擎,设备告警,消息通知,数据转发.可基于SQL进行复杂的数据处理逻辑. 地理位置:统一管理地理位置信息,支持区域搜索. 数据可视化: 实现拖拽配置数据图表,设备组态等. 技术栈 Spring Boot 2.2.x Spring WebFlux响应式Web支持 R2DBC响应式关系型数据库驱动 Project Reactor响应式编程框架 Netty,Vert.x高性能网络编程框架 ElasticSearch全文检索,日志,时序数据存储 PostgreSQL业务功能数据管理 hsweb framework 4业务功能基础框架 固件升级 jetlinks专业版在>=1.2中提供了固件管理功能,提供对设备固件升级,以及获取固件信息等操作. 操作流程 创建固件信息 -> 发布升级任务 -> 推送固件消息 -> 自定义协议解析发送到设备 -> 设备更新 -> 设备推送更新进度 -> 平台修改进度信息. 固件相关消息 消息协议解析设备上报的消息为指定的类型即触发对应的操作. 上报固件信息 消息类型:ReportFirmwareMessage { "deviceId":"设备ID", "version":"固件版本号", "properties":{"key":"value"}, //其他拓展信息 "timestampe":"毫秒时间戳", } 上报固件信息后,会更新设备固件信息记录. 设备拉取固件更新 前提: 消息协议解析设备上报的消息为:RequestFirmwareMessage. { "deviceId":"设备ID", "timestampe":"毫秒时间戳", "messageId":"消息ID", "requestVersion":"请求更新的版本"//可留空 } 平台收到此消息后, 会获取更新任务中对应的固件更新记录.找出对应设备等待升级的固件信息. 并发送消息RequestFirmwareMessageReply给协议包解析并发送到设备. { "sign": "文件签名", "signMethod": "文件签名方式", "messageId": "消息ID",//与拉取固件中到消息ID一致 "deviceId": "设备ID", "version": "版本号", "url": "固件文件下载地址", "parameters": {},//其他拓展参数 "timestamp": 1589277368209 //毫秒时间戳 } 平台推送固件更新 平台可推送固件更新给设备,需要消息协议处理消息:UpgradeFirmwareMessage. { "sign": "文件签名", "signMethod": "文件签名方式", "deviceId": "设备ID", "version": "版本号", "url": "固件文件下载地址", "success": true, "parameters": {},//其他拓展参数 "timestamp": 1589277368209 //毫秒时间戳 } 设备上报固件更新结果 设备可以上报固件更新进度以及更新结果. 消息类型:UpgradeFirmwareProgressMessage 更新结果(进度)消息: { "success": true, //是否成功 "message":"失败时传的消息", "progress": 10, //更新进度: 0-100 "complete": false,//是否完成,如果只是上报进度,则设置为false,完成更新则设置为true "deviceId": "设备ID", "version": "1.0", //更新的版本号(必填) "timestamp": 1589277369268 }

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册