# Python 与 Lua 混淆工具的探索
在现代编程中,代码的安全性和隐私性已成为开发者非常关注的问题。随着开源代码的普及,源代码的泄露可能导致软件被非法使用或盗版,给开发者带来巨大的经济损失。混淆技术便在此背景下应运而生,在代码保护中扮演着重要角色。本篇文章将探讨 Python 和 Lua 的混淆工具,并通过示例加深理解。
## 什么是混淆
混淆是指通过对代码进行一定的变换,使其难以被
原创
2024-10-11 07:56:37
231阅读
默认作用域前段时间学了下Lua,发现Lua的默认作用域和Python是相反的。Lua定义变量时默认变量的作用域是全局(global,这样说不是很准确,Lua在执行x = 1这样的语句时会从当前环境开始一层层往上查找x,只有在找不到x的情况下才定义全局变量)的,而Python定义变量时默认变量的作用域是局部(local)的(当前块)。另外,Lua可以再定义变量时在变量前加上local关键
转载
2023-09-20 21:26:16
319阅读
引言在寒假宅家期间,我在Github上发现了一个名为"luaparse"的项目。这个项目可以将Lua源代码解析为AST语法树。我曾经使用过正则表达式对Lua代码进行混淆,但是这种方法存在兼容性和稳定性问题。相比之下,通过处理AST语法树得到的混淆代码具有更高的强度和稳定性,借鉴javascript语言混淆方案,制作了混淆工具LuaEnc 。概述LuaEnc是一款专门为Lua5.2~5.3版本开发的
转载
2024-03-01 16:09:13
670阅读
一、说明: 针对源码混淆其实在代码保护中应用很多,大部分是应用在像JS这种脚本语言中,因为很多时候JS是以源码的形式出现,网上有很多关于JS保护的工具,比较出名的是JSugly和javascript obfuscator。当然最近发现了一个做JS VM保护的,https://w
转载
2024-05-08 15:34:49
979阅读
一、静态分析:观察lua脚本,发现lua脚本进行了加密保护。观察so发现,一个libgame.so实质上是libcocos2dlua.so文件,libkvmrt.so观察下边猜测就是kvm虚拟机运行时的一些解释函数什么的。这个时候猜测,它大致的保护过程为:lua进行整体保护、或者luajit保护或者打乱整个lua opcode的顺序,然后最后用他们的KVM虚拟机进行虚拟化混淆编译。但是这里有一个逻
转载
2024-02-28 21:21:31
1059阅读
一、前言最近想爆破一个app,没有加壳,简单的使用Jadx打开查看源码,结果把我逗乐了,代码中既然都是中文,而且是一些比较奇葩的中文字句,如图所示:瞬间感觉懵逼了,这app真会玩,我们知道因为Java语言是支持双字符的,所以可以将包名,类名,变量名,方法名定义成中文,或者其他国家的语言都可以的。所以本身这种做法是不会运行报错的,比如下面我们新建一个Java工程看一下效果:运行是没有任何问题的。看到
改进后的混淆器,算法上考虑得比较细了,可以作为一个通用函数以后做个FORM自动对某目录下的 VCX/SCX/PRG 进行混淆。看混出来结果我自己也发了神经,只混 local / lparameters也够了,再进一步的加密就是FLL化。Function gcObfuscateLparameters tcCode,tcOo*- 功能: 去掉注解. 针对 PRG代码|代码串的 混淆
转载
2024-03-21 19:49:57
399阅读
前言:因为最近工作需要爬取APP应用的信息,考虑到目前市场上比较成熟的应用市场整合网站,因此选择了七麦来下手,也由此发现了七麦的反爬策略,所以这次我们来分析一下七麦网站的接口的参数的由来。开始:我们首先来看看七麦的接口,如下图所示: 正常请求 正常响应我们可以看到这是正常情况下的请求,看到了一个很有趣的参数。参数构成是这样的: analysis: IRIdE
arm架构下ollvm平坦化的反混淆app样本:douyin9.9.0 so样本:libcms.so 逆向工具:ida,jadx观察函数控制流程图(CFG)所要获取的签名算法位于leviathan方法中,该方法是个native方法,在libcms.so中没有静态关联函数,所以我们需要找到其动态注册的位置。首先,分析Jni_OnLoad函数,Jni函数的动态注册一般都在这里进行:关于ollvm的基本
转载
2024-07-20 16:53:47
123阅读
在混淆电路介绍(一)中,我们介绍了混淆电路(Garbled Circuits,GC)背后依赖的密码学思想:不经意传输(Oblivious Transfer,OT)。在混淆电路介绍(二)中,我们成功地将一个比较大小的函数转化成了一个逻辑电路。在这篇文章中,我们将基于以上两篇文章,详细介绍 GC 协议的原理。首先我们回顾一下定义。混淆电路是一种密码学协议。遵照这个协议,两个 party 能在互相不知晓
Visual Studio Code(以下简称vscode)是一款免费开源的现代化轻量级代码编辑器,在性能、语言支持、开源社区方面,都做的很不错,广受各类开发方向的码农喜爱。由于vscode有些定制化的功能需要安装插件,这让很多初次使用的朋友有点无所适从,本次特别整理了Lua开发相关的vscode入门推荐配置,希望对大家有所帮助。1下载安装打开官网:https://code.visualstudi
转载
2024-08-24 13:48:30
199阅读
在mov指令的图灵完备性被证明之后,就产生了一种使用mov指令代替其他各种指令的混淆机制,运算,跳转,函数调用都可以全部使用mov指令实现。混淆器movfuscator 可以将源码编译为mov混淆之后的程序,增加逆向成本。git clone https://github.com/xoreaxeaxeax/movfuscator
cd movfuscator
./build.sh
目录一、实战篇 - Lua的安装和Makefile二、实战篇 - Lua的API使用三、实战篇 - C语言中实现动态调用Lua一、实战篇 - Lua的安装和Makefile前面的篇章,我们详细的介绍了整个Lua语言的架构和实现原理。Lua是一门C语言编写的脚本语言,非常的轻巧,大部分情况下Lua的使用场景是作为宿主语言存在。web脚本、游戏脚本、物联网等场景。通俗点讲,你可以将Lua语
转载
2024-03-02 11:07:35
166阅读
Lua杂谈系列,就以代码覆盖率测试的luacov开头吧简介说到lua的覆盖率测试,我们一般都会想到用luacov做代码覆盖率测试 在干货|使用luacov统计lua代码覆盖率一文中,介绍了基本的luacov用法,但是缺少对luacov深入挖掘的相关内容。并且同时,原生的luacov提供了一套简洁的覆盖率测试实现以及报告输出形式,但是在实际许多场景中,采用原生luacov还是远远满足不了需求的 因此
转载
2024-03-29 09:36:37
88阅读
1)Lua全局变量代码规范 2)AssetBundle LockPersistentManager开销 3)Unity内置字体在资源检测报告中不算冗余资源 4)特定Android设备上,Adreno发生冻屏问题 5)Mask和RectMask性能上的区别 LuaQ:使用Lua语言作为脚本辅助开发已经非常流行了,但是Lua语言中的全局变量是一个令人头疼的问题,因为无需声明就可以
转载
2024-08-12 22:48:47
96阅读
概述: 案例:Cesium打包流程,相关技术点和大概流程原理:代码优化的意义:压缩 优化 混淆优化:如何完善Cesium打包流程关键字:Cesium gulp uglifyjs 字数:2330 | 阅读时间:7min+ 1 Cesium打包流程 如果没有记错,Cesium从2016年初对代码构建工具做了一次调整,从g
转载
2024-04-21 17:26:29
84阅读
Andoird 混淆代码学习心得(上)之前做Android混淆比较凌乱,基本都是在copy之前的配置,所以决定系统的整理下混淆打包的内容,深入理解下原理。转载: 1.混淆配置 在Android Studio当中混淆APK实在是太简单了,借助SDK中自带的Proguard工具,只需要修改build.gradle中的一行配置即可。可以看到,现在build.gradle中minifyEnabled的值
转载
2024-04-27 20:04:07
28阅读
在游戏开发中,为了避免被直接搜索到内存数据, 经常需要对代码和内存进行混淆, 因此对于cocos2dx+lua的游戏来说,也需要这种方式来在一定程度上防止玩家作弊在lua中,table是个很重要的数据结构,既可以作为map使用,也可以作为array使用,因此是内存数据容器的基石,所以只要能修改了对table操作的行为,那么就可以对使用者来说,进行透明化的实现数据混淆,实现存入table时自动混淆,
转载
2024-03-07 13:32:15
330阅读
# Python混淆工具实现流程
## 1. 简介
在本文中,我将向你介绍一种实现Python混淆工具的方法。混淆代码可以使代码更难以理解和分析,从而增加代码的安全性。我们将使用一些常见的混淆技术,包括重命名变量、修改代码结构等。
## 2. 实现步骤
下面是实现Python混淆工具的步骤:
```mermaid
journey
title 实现Python混淆工具的步骤
原创
2023-10-27 05:10:11
198阅读
变量在使用前,必须在代码中进行声明,即创建该变量。编译程序执行代码之前编译器需要知道如何给语句变量开辟存储区,用于存储变量的值。Lua 变量有三种类型:全局变量、局部变量、表中的域。Lua 中的变量全是全局变量,那怕是语句块或是函数里,除非用 local 显式声明为局部变量。局部变量的作用域为从声明位置开始到所在语句块结束。变量的默认值均为 nil。 -- test.lua 文件脚本
a = 5
转载
2024-05-21 22:08:17
191阅读