首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏全栈程序员必看

    Python源码保护

    大家好,又见面了,我是你们的朋友全栈君   由于Python开源的特性,在一些商业场景下,若不想将源码暴露,可通过混淆、编译为pyc或so(Windows下为pyd)文件等方法起到保护源码的效果。 其中,将源码编译为so文件是常用且较好的一种保护方法。 1 混淆   代码混淆是将函数、类名和变量名等替换为其他符号,提高了阅读的难度。 Oxyry网站提供的在线代码混淆(或使用pyminifier),如下图所示:   代码混淆简单且成本代价低,但由于未改变程序的主体结构,仅降低代码的可读性,实际对源码保护并不是很好。 py_compile.compile(file="xxx.py") # 需转换为pyc文件在——__pycache__中   2)将pyc文件直接替换对应py文件   与其他语言相同,pyc也可以通过反编译获取源码 命名开头文件夹中,如下图so文件在build/lib.macosx-10.7-x86_64-3.6中:   4)将so(或pyd)文件直接替换对应的py文件   相对混淆和pyc,so(或pyd)对保护效果最好的一种方案

    2.5K21编辑于 2022-09-23
  • 来自专栏咸鱼学Python

    Js 逆向进阶 | 浅谈 Js 代码保护

    作者:不知世事 原文:https://blog.csdn.net/feibabeibei_beibei/article/details/98232069 JavaScript 代码保护浅谈 国外: 1 2.Js2x http://ty2y.com/obfuscate/#how-to-use ? 这个跟上面那个多态变异是一样的。 vmp 最强的,这种方案其实也是很好理解的,比如对于一个js代码来说,我们只用js操作写一个基于栈的解释器,然后对于本身要保护js进行虚拟化,定义一堆自定义操作,这个时候其实还是比较弱,因为全部是 如果再结合别的一些保护方案,效果应该会很不错,但是毕竟webasem这种文件的格式是公开的,可能这种方案的持久性不行,并且各个浏览器的兼容也是一大问题;当然后期也可以针对webasembly再进行处理, 总结 对于 js 这种语言来说,由于语言本身的特殊性,一定的保护是非常必要的,再结合浏览器本身的发展,为了性能会在编译上做处理,引入本地层的东西,比如谷歌的 V8 ,火狐的 asm.js 在安全性上:业务上更多的结合服务端动态特性以及客户端强大的静态代码保护的设计会达到一个比较好的效果

    29.2K20发布于 2020-01-14
  • 来自专栏工作专用1

    JS生成字节码生成技术,用字节码保护商业NodeJS源码

    本文介绍一种NodeJS源代码保护方式:通过把nodejs代码转化为字节码,用node启动字节码文件的方式,保护nodejs源代码不泄漏。 如同JS代码一样,nodejs源码,也是透明代码,通常用node启动代码时,都必须把源码也放置到启动环境中。这在很多时候是不安全不稳妥的。因为js源码透明的原因,别人可以直接获取到产品或项目源码。 为了防止源码泄漏带来的一系列令人不安的后果,这里介绍一种专门针对于nodejs源码保护技术:将nodejs代码转化为字节码文件。 对于JS代码产品的保护,除了可以使用字节码技术,还可以用代码混淆加密的办法,比如:JShaman(http://www.jshaman.com/)是一款对JS代码进行混淆加密的工具,也适用于nodejs 代码加密,也是个非常不错的nodejs代码保护手段,且可对前端JS代码进行保护,通用性比较强。

    3.9K00发布于 2019-03-22
  • 来自专栏javascript技术

    前端js中如何保护密钥?

    在前端js编程中,如果涉及到加密通信、加密算法,经常会用到密钥。但密钥,很容易暴露。暴露原因:js代码透明,在浏览器中可以查看源码,从中找到密钥。 例如,下面的代码中,变量key是密钥:如何保护源码中的密钥呢?很多时候,人们认为需要对密钥字符串进行加密。其实更重要的是对存储密钥的变量进行加密。加密了密钥变量,使变量难以找到,才更能保护密钥本身。 顺着这个思路,下面给出一个不错的密钥的保护方法:还是以上面的代码为例,首先,用到jsfuck:https://www.jshaman.com/tools/jsfuck.html将代码中的密钥定义整体,用 将整体JS代码,再用JS加密工具:JShaman,进行混淆加密:https://www.jshaman.com然后得到更安全、更难调试分析的JS代码,这时密钥就变的更安全了:注:用ajax等异步传递密钥时 用jsfuck+jshaman保护JS中的密钥,你学会了吗?

    96210编辑于 2024-10-29
  • 来自专栏黯羽轻扬

    组合类型与类型保护_TypeScript笔记9

    x.toFixed(); break; } // 正确 typeof类型保护 typeof x ! instanceof类型保护 类似于typeof检测基本类型,instanceof用来检测实例与“类”的所属关系,也是一种类型保护,例如: let x: Date | RegExp; if (x instanceof typeof与instanceof类型保护能够满足一般场景,对于一些更加特殊的,可以通过自定义类型保护来缩窄类型: interface RequestOptions { url: string; 相当于类型断言(不同于类型保护): let x: string | undefined | null; x!. ,断言是一次性的(或者说是临时的),而类型保护在一定作用域下都有效 参考资料 Advanced Types

    1.9K20发布于 2019-06-12
  • 来自专栏网络安全攻防

    程序源码保护攻防对抗录

    ,也有不少通过编码处理、进制转换来增加代码阅读的复杂性,从而达到保护源代码的目的,下面是几个简单的源码混淆测试示例: PHP威盾混淆 这里我们给出一个PHP威盾混淆处理示例,网上给出的威盾的混淆特征如下所示 PHP源码外壳加密说白了就是使用PHP代码对PHP代码进行加密处理,自己给自己套了一层外壳,随后在执行的时候再进行自解密,其特点就是独立加密程序统一对明文代码进行加密处理,其中比较常见的加密保护方式是 > 执行之后输出的处理后的源码文件内容如下所示: <? for($i=0;$i<strlen($tmt);$i++) { $tmt[$i] = chr(ord($tmt[$i])-1); } return $tmt; } eval(sou(K8wszMpPL9DUsgEA > 从下面的执行效果我们可以看到源代码内容: phpjiami处理 PHP加密(PhpJiaMi.Com)采用了强大的安全技术手段(外壳)对PHP源码进行混淆变异(源码),系统安全防修改、防劫持、防破解

    39710编辑于 2024-12-06
  • 来自专栏网络安全攻防

    程序源码保护攻防对抗记录

    ,也有不少通过编码处理、进制转换来增加代码阅读的复杂性,从而达到保护源代码的目的,下面是几个简单的源码混淆测试示例: PHP威盾混淆 这里我们给出一个PHP威盾混淆处理示例,网上给出的威盾的混淆特征如下所示 PHP源码外壳加密说白了就是使用PHP代码对PHP代码进行加密处理,自己给自己套了一层外壳,随后在执行的时候再进行自解密,其特点就是独立加密程序统一对明文代码进行加密处理,其中比较常见的加密保护方式是 > 执行之后输出的处理后的源码文件内容如下所示: <? for($i=0;$i<strlen($tmt);$i++) { $tmt[$i] = chr(ord($tmt[$i])-1); } return $tmt; } eval(sou(K8wszMpPL9DUsgEA > 从下面的执行效果我们可以看到源代码内容: phpjiami处理 PHP加密(PhpJiaMi.Com)采用了强大的安全技术手段(外壳)对PHP源码进行混淆变异(源码),系统安全防修改、防劫持、防破解

    60510编辑于 2025-01-13
  • 来自专栏Java学习录

    Eureka自我保护机制源码解析

    Eureka通过“自我保护机制”来解决这个问题:当EurekaServer短时间内丢失过多客户端时,这个节点就会进入自我保护模式。在自我保护模式下,EurekaServer不会剔除任何客户端。 当网络故障恢复后,该节点会自动退出自我保护模式 自我保护机制的实现是基于维护服务注册表的类AbstractInstanceRegistry中的2个变量来维护的 /** * 期望最小每分钟续租次数 */ ,为啥呢,因为默认Eureka的续约是30秒 期望每分钟最小续租次数为:最大续租次数乘续租百分比,默认续租百分比是0.85,也就是说当某个时间窗内如果存在超过百分之十五的客户端没有再续租的话则开启自我保护模式 自我保护模式的定时任务 DefaultEurekaServerContext类中有一个initialize方法,这个方法在执行过程中会启动一个定时任务 @PostConstruct @Override 之前在Eureka客户端续约及服务端过期租约清理源码解析一文的租约过期清理解析过程中省略了关于自我保护模式的判断,现在再看一下。

    1K20发布于 2019-10-24
  • 来自专栏Java架构师必看

    spring源码分析9

    spring源码分析9 强烈推介IDEA2020.2破解激活,IntelliJ

    42720发布于 2021-04-13
  • 来自专栏云计算教程系列

    如何在Debian 9上安装和保护phpMyAdmin

    在本指南中,我们将讨论如何安装和保护phpMyAdmin,以便您可以安全地使用它来管理Debian 9系统上的数据库。 如果你使用的是其他版本,请参考Ubuntu 16.04。 如Debian 9的初始服务器设置指南中所述。 我们还假设您已经在Debian 9服务器上完成了LAMP(Linux,Apache,MariaDB和PHP)安装。 如果您没有配置SSL / TLS证书的现有域,则可以按照本指南使用Debian 9上的Let's Encrypt保护Apache。 第3步 - 保护您的phpMyAdmin实例 由于它无处不在,phpMyAdmin是攻击者的热门目标,你应该格外小心,以防止未经授权的访问。 ---- 参考文献:《How To Install and Secure phpMyAdmin on Debian 9

    2.6K10发布于 2018-11-05
  • 来自专栏用户7873631的专栏

    JS函数(上上) 9

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <bo

    1.7K10发布于 2020-10-28
  • 来自专栏云计算教程系列

    如何在Debian 9上安装和保护Redis

    本教程演示如何在Debian 9服务器上安装,配置和保护Redis。 先决条件 要完成本指南,您需要访问Debian 9服务器,该服务器具有sudo权限非root用户并配置了基本防火墙,如果您使用的是腾讯云的CVM服务器,您可以直接在腾讯云控制台中的安全组进行设置。 通过将第一个命令的输出传递给第二个openssl命令,如此处所示,它将删除第一个命令产生的任何换行符: openssl rand 60 | openssl base64 -A 您的输出应该类似于: RBOJ9cCNoGCKhlEBwQLHri1g atWgn4Xn4HwNUbtzoVxAYxkiYBi7aufl4MILv1nxBqR4L6NNzI0X6cE 复制并粘贴该命令的输出作为requirepass的新值后,它应显示为: requirepass RBOJ9cCNoGCKhlEBwQLHri1g ---- 参考文献:《How To Install and Secure Redis on Debian 9

    2.5K30发布于 2018-11-05
  • 来自专栏golang算法架构leetcode技术php

    golang源码分析(9)调度

    其中包括执行的函数指令及参数;G保存的任务对象;线程上下文切换,现场保护和现场恢复需要的寄存器(SP、IP)等信息。 Go不同版本Goroutine默认栈大小不同。 当发生上线文切换时,需要对执行现场进行保护,以便下次被调度执行时进行现场恢复。Go调度器M的栈保存在G对象上,只需要将M所需要的寄存器(SP、PC等)保存到G对象上就可以实现现场保护。 当这些寄存器数据被保护起来,就随时可以做上下文切换了,在中断之前把现场保存起来。如果此时G任务还没有执行完,M可以将任务重新丢到P的任务队列,等待下一次被调度执行。 现在已经有太多的文章来介绍goroutine的用法,在这里,我们从源码的角度来看看其内部实现。 所以说保护现场的抢占式调度和G被阻塞后传递给其他m调用的核心思想,使得goroutine的产生。

    54720编辑于 2022-08-02
  • 来自专栏kk大数据

    Spark 源码9)- Worker 启动 Executor 源码阅读

    上一次阅读到 Master 调用 schedule() 方法,遍历 waitingApps,为每个程序决定启动多少 Executor,为每个 Executor 分配多少资源,有了这些信息之后,给 Worker 发送了一个 LaunchExecutor 消息,Worker 开始处理。

    81820发布于 2021-11-16
  • golang源码分析:langchaingo(9

    前面介绍了单独的匹配,如果把这个匹配过程接入到LLM,就是完整的RAG,即检索增强生成。我们先看看上一个例子还没介绍的最后几行代码

    6310编辑于 2026-03-18
  • 来自专栏Postgresql源码分析

    Postgresql源码9)Xlog注册

    注册数据页面相关信息 注册数据页面相关信息 注册数据页面相关信息 一个页面用一个槽位 一个页面用一个槽位 一个页面用一个槽位 一个槽位对一个registered_buffer 一个槽位对一个registered_buffer 一个槽位对一个registered_buffer

    40620编辑于 2022-07-16
  • 来自专栏golang算法架构leetcode技术php

    golang源码分析:cayley(9)

    中间使用到了goja解析器,它的作用是在golang环境中翻译执行javascript,因为我们的gizmo采用的是javascript语法。

    33720编辑于 2023-08-09
  • golang源码分析 :gopls(9

    最后我们来到了第三部分featureCommands,也是所有命令的大头,这里一共初始化了23个命令。我们首先看下第一个callHierarchy

    9410编辑于 2026-03-18
  • 来自专栏纸上得来终觉浅

    libuv源码阅读(9)--interfaces

    先看用例源码: #include <stdio.h> #include <uv.h> int main() { char buf[512]; uv_interface_address_t

    74510发布于 2021-03-12
  • 来自专栏菩提树下的杨过

    babylon.js 学习笔记(9)

    ui.addControl(text4); ui.addControl(text5); } 在线地址: https://yjmyzz.github.io/babylon_js_study BABYLON.Scalar.RandomRange(-25, 25); } return scene; } 在线地址: https://yjmyzz.github.io/babylon_js_study spriteManagerPlayer); player5.position.y = 1.5; player5.position.x = 0.8; player5.playAnimation(0,9, true,100); return scene; } 在线地址:https://yjmyzz.github.io/babylon_js_study/day09/04.html 最后,综合运用一把 ufo.playAnimation(0, 16, true, 125); return scene; } 在线地址:https://yjmyzz.github.io/babylon_js_study

    57920编辑于 2023-06-10
领券