写了个 Python 源码加密的工具,把源码混淆得它妈都不认识

2014-10-28 19:01:51 +08:00
 love
Python目前没有一个好用的混淆工具,所以我写了一个。
另外要说的是编译成pyc是一点用处也没有的,用打包工具打成exe也是容易从exe里提取出来的。

http://pyob.oxyry.com/

新鲜出炉,欢迎提交BUG :)

原理就是重命名程序中的变量名,除了
模块公开名字 (__all__里面列出的名字,没有定义__all__的话就是所有下划线开头的名字)
类公开名字 (除双下划线之外的名字)
关键字参数
之外的所有变量都可以被重命名。
34617 次点击
所在节点    Python
66 条回复
jsq2627
2014-10-29 12:32:13 +08:00
@geew 先把这堆0O0O0O0OO0O这样的东西用同样的原理替换成 a1, a2, a3 这样能分辨、不眼花的变量名。然后开始读代码,尝试还原。用 IDE 的 refactor,认出一个变量就还原一个变量名,改一轮下来就八九不离十了。
除非是复杂的算法模块,一般的变量都是很容易分辨功能的。
josephok
2014-10-29 12:51:22 +08:00
DiffView
2014-10-29 13:01:19 +08:00
替换所有变量名为肉眼容易分辨的,然后边猜边替换,读2轮下来也就八九不离十了=。=
love
2014-10-29 13:17:04 +08:00
@robinxiaobin @jsq2627 函数名和类名也被混淆了,在不知道函数是干什么的情况下很难知道变量是干什么的。

另外同一个变量名,在不同的作用域里是被转成不同的名字的,比如在这个函数里的相同名字在另一个函数里会被转成不同的名字,你在这个函数里猜中的话也不能来个全文替换的。

总之要还原比重写麻烦多了。
zkd8907
2014-10-29 13:23:12 +08:00
@geew 这个混淆只是把变量名称变成了会眼花的值,直接替换成简单的变量再去阅读就可以,不一定要变成原始的变量名。而且本身程序流程没有混淆,在这种情况下,想要读懂程序还是有可能的。
wdlth
2014-10-29 14:06:18 +08:00
这和那些所谓的PHP加密不是差不多么……
shunia
2014-10-29 15:58:12 +08:00
@josephok
42楼说的对
shadowpsp
2014-10-29 16:14:45 +08:00
42楼真相了
procen424
2014-10-29 17:21:47 +08:00
只改名字是不行哒。
找个合适的ide,以 "阅读-重命名" 的循环方式过一遍代码,然后纠正所有起得不合适的名字,这就还原出原貌了。
sanddudu
2014-10-29 18:33:30 +08:00
juicy
2014-10-29 19:41:28 +08:00
42楼。。。。把程序写烂就是最好的加密方式。。。
sohoer
2014-10-29 20:02:23 +08:00
支持楼主!
混淆最终的目的是尽量避免二次开发,这是它为什么不叫加密。
鸟巢采集器也是混淆,用的proguard比楼主的更酷
yangff
2014-10-29 20:16:16 +08:00
且不说真要复原也就那么回事(mcp人肉复原教你做人)
本来做逆向就不需要变量名。。
noanti
2014-10-29 20:29:51 +08:00
同楼上,逆向根本不需要变量名。
如果一段python很有价值,你这混淆挡得住为利益而逆向它的人?
如果没有价值,混淆给谁看?
dingyaguang117
2014-10-29 20:39:31 +08:00
有用的,我试图理解过混淆后的代码,几乎不可读
love
2014-10-29 20:40:36 +08:00
@noanti
你根本弄错了这个混淆器的目的是要让别人不能拿了你的代码再次开发售卖,你看到个软件觉得功能很好有前景,也想写一个来卖卖,你是试徒复原这个天书书一样的代码呢还是干脆重写一个?
原有的代码写得乱了也可能需要推倒重来,这个还要乱上十倍的代码根本没有在上面开发的必要。
另外代码的价值一大部分是在命名上,去掉了命名的代码价值就没有了。
love
2014-10-29 21:11:01 +08:00
@wdlth PHP加密几乎都是伪加密,把代码变换个形式而已,相当于用一个标准算法套了个壳,可惜它是完全可逆的,你只要分析下加密后的代码所用的算法(因为算法含在加密后的文件里),就能完全复原一个字节都不会少,而且对所有用这个算法的文件都通用。
noanti
2014-10-29 21:24:26 +08:00
@love
“另外代码的价值一大部分是在命名上,去掉了命名的代码价值就没有了。”
哦,代码价值原来如此。
wdlth
2014-10-29 22:33:15 +08:00
@love 你这个无非就是Python版的PHP微盾嘛……
tangzx
2014-10-30 07:52:03 +08:00
源码他妈……

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/142171

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX