pywhlobf 0.2.0 发布,也许是全球唯一能用的 Python 代码混淆器, 传送门
这次发布新增支持 string literals 混淆,基于 adamyaxley/Obfuscate
1
shinession 2022-02-27 10:24:51 +08:00 via Android
先收藏了,支持一下
|
2
Kinnice 2022-02-27 10:50:59 +08:00 via Android
|
3
balabalaguguji 2022-02-27 10:53:29 +08:00
先收藏了,后面用到再看
|
5
duke807 2022-02-27 11:40:19 +08:00 via Android
如果混淆覺得還不夠保險,可以把各別或全部 py 文件編譯成二進制,完全不會有源碼的那種(你可以檢查中間的 c 文件),譬如我一個項目,主 py 腳本編譯成可執行文件,被引用的 py 腳本編譯成 so 文件
編譯出来的 so 也可以被普通 py 文件 import (編譯過的和沒編譯的文件可以任意組合搭配) echo "cython main" cython --embed -o main.c main.py gcc -Os -I /usr/include/python3.8 -o main main.c -lpython3.8 -lpthread -lm -lutil -ldl mv main.py main.py_bk echo "cython ae_" cython --embed -o ae_.c ae_.py gcc -Os -I /usr/include/python3.8 -o ae_.so ae_.c -shared -fPIC -lpython3.8 -lpthread -lm -lutil -ldl mv ae_.py ae_.py_bk |
7
0o0O0o0O0o 2022-02-27 14:48:43 +08:00 via iPhone
不熟悉 python ,不过既然能够 py to c ,接下来是不是可以直接用 ollvm 以及它的一些 fork 呢?
|
8
huntzhan OP @0o0O0o0O0o 是的,有空打算把 https://github.com/obfuscator-llvm/obfuscator 也加进去
|
9
0o0O0o0O0o 2022-02-27 14:54:15 +08:00 via iPhone
@huntzhan 这个原版有点老了,可以找一些新的 fork ,升级了 llvm 版本,混淆也强力很多
|
10
huntzhan OP @0o0O0o0O0o 是的,一开始没上 ollvm 的原因也是因为看着 llvm 版本太老了,同时也没有找到比较多人用的替代选项。感觉这里面还是有一些坑的。可以帮忙推荐几个你觉得靠谱的新 fork 吗?
|
12
huntzhan OP @0o0O0o0O0o mark ,谢谢
|
13
xinyana 2022-02-27 15:59:11 +08:00 via Android
无论如何先支持一下
|
14
Garasu 2022-02-27 16:30:49 +08:00
你好,我属于刚入门 python 的非专业相关的。。。 想问一下,关于 python 的混淆和加密这类的知识应该怎么学?有没有相关的博文或书之类的推荐(目前仅有 python 和部分计算机组成原理基础的知识
|
15
huntzhan OP @Garasu 这部分知识与计算机专业本科的若干课程有关联,如 C/C++、编译原理、操作系统、信息安全等。如果是初学者,我的建议是先读 [CSAPP]( https://csapp.cs.cmu.edu/),这本书基本涵盖了上面的内容
|
17
vicalloy 2022-02-28 20:37:38 +08:00
楼主的这个是基于 cython 的?
最近在看 python 代码保护方面的东西。就目前看下来,没有让人很满意的。 1. cython 将 python 编译成 so 。试编译了一个小项目,编译可以成功,跑起来出错。 2. Nuitka 将 python 编译成 so 。编译成功,可以跑,涉及到多线程 /async 的地方有一定概率报错。根据官方说明,lock 的实现太慢,被直接去掉了。 3. 各类代码加密库。可用的不多,安全性也存疑。 |
18
huntzhan OP @vicalloy 基于 Cython 。Nuitka 的性能问题比较严重,我之前调研过也放弃了。之前执行出错的原因有深入调查吗? Cython 确实是有一些限制导致运行时出错。这个工具我用在生产环境上的多个项目,已经稳定跑了超多一年,可靠程度上我觉得应该不会有太大问题。
|
19
wzw 2022-02-28 21:39:51 +08:00 via iPhone
以前需要,现在转 go 了……
|
20
gengchun 2022-03-01 10:40:52 +08:00
这个能支持 alpine 那些 musl 吗?
|
21
huntzhan OP @gengchun 原理上并没有问题,见
https://www.python.org/dev/peps/pep-0656/ https://github.com/pypa/cibuildwheel/pull/768 https://github.com/pypa/manylinux/pull/1135 等有用户在 issue 上提说需要 musllinux 时我会看看这个怎么加 |
22
NanFengXiangWan 2022-03-02 00:18:48 +08:00 via iPhone
本人 python 小白,请问这个工具的主要应用场景和功能是什么🤔,混淆后怎么运行
|
23
LeeReamond 2022-03-02 07:24:47 +08:00
童年时期曾幻想过相关项目,自己写了一些 ast 混淆感觉也是聊胜于无,自我安慰,到现在感觉也没什么分发还要加密的需求,纯粹收藏学习了。一个疑问是既然混淆工具开源那逆向不是也很简单。另外混淆部分有 api 可以直接看输出么,比较好奇混淆后的结果是什么样的
|
24
huntzhan OP @NanFengXiangWan 比较常见是私有化部署场景,防止代码逻辑被客户逆向得到,确保商业授权可控。混淆后的 Python wheel 包可以通过 `pip install` 安装,与其他的包使用过程没有区别
|
25
huntzhan OP @LeeReamond 只要有足够的利益,总是可以逆出来的。混淆的方式目的在于提升逆向的成本,不是保证不能被逆向。开源与否问题不大,即使知道了流程是怎么做的,背后还有一个 C++ 编译器优化的“黑盒”在,有足够的复杂度。至于输出是什么,可以看看 Cython 的文档
|
26
LeeReamond 2022-03-04 03:20:09 +08:00
@huntzhan 我以为这个项目是解析 ast 然后混淆 python 代码再接入 cython 编译,所以你直接叫我看 cython 文档意思是这只是个 cython 快捷工具?
|
27
huntzhan OP @LeeReamond 是的,没有什么技术含量
|