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

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

http://pyob.oxyry.com/

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

原理就是重命名程序中的变量名,除了
模块公开名字 (__all__里面列出的名字,没有定义__all__的话就是所有下划线开头的名字)
类公开名字 (除双下划线之外的名字)
关键字参数
之外的所有变量都可以被重命名。
34583 次点击
所在节点    Python
66 条回复
mengzhuo
2014-10-28 19:20:05 +08:00
这也太容易逆向了吧……
还是原版的结构
差评
love
2014-10-28 19:28:24 +08:00
@mengzhuo
结构是一样,可是里面的名字都变了,阅读理解这样子的代码还不如重写快呢,这就达到了不让别人在你的代码的基础再次开发的目的了。
另外接下来会有穿插无用代码的功能。
holyghost
2014-10-28 19:42:29 +08:00
加花来达到免杀。。。
holmesabc
2014-10-28 20:21:21 +08:00
混淆和加密还是两码事的。
再怎么变量明替换,想看懂都不是什么难事。

搞个ide或者编辑器,做一下变量名替换就好
laotaitai
2014-10-28 20:36:19 +08:00
@holmesabc
就是啊, 借助王垠写的pysonar2, 一样把所谓"他妈都不认识"弄成"他奶奶"都认识的地步.
jiongjionger
2014-10-28 21:02:19 +08:00
= =和我以前做的PHP混淆一样。0O0O0O000OOO。哈哈
love
2014-10-28 21:25:02 +08:00
@laotaitai 变量名替换不可逆,信息丢了就是丢了,你要找回原来变量所代表的意思非常难,这就象修改比最渣还渣十倍的代码,会让人崩溃的,因为你还要完全顺着原代码的想法来猜变量名,事实上还原这样子的代码比重写更难。
yushiro
2014-10-28 21:30:20 +08:00
@love 你认为看代码就必须要有意思很简单直接的变量名吗?
raincious
2014-10-28 21:33:09 +08:00
© 2014 oxyry.com, all rights reversed.

这是啥意思?我的代码粘贴进去转一圈出来就是你的了么……

另外改变量名这种的……真的无效。
love
2014-10-28 21:39:10 +08:00
刚才随便从网上找了个8皇后算法的小脚本,

这是加密前:
https://gist.github.com/weijar/ded24f0b6949b8f502f8
这是加密后:
https://gist.github.com/weijar/377e463fbee60e243f02

这二个都可以运行,但是不知道算法的情况下想搞明白后一个是要吐血的。
love
2014-10-28 21:44:14 +08:00
@raincious 写程序最难的就是命名了,把程序里的名字去掉了这个程序就没剩下什么了。。。

另外这是网站的copyright,不是转换出来的程序的。
evlos
2014-10-28 21:44:31 +08:00
@love 看起来真带感,已收藏w//
laotaitai
2014-10-28 21:45:13 +08:00
呃,我想了想, 我觉得题主还是说的对, 就算用了IDE, 你改名怎么改? 不知道这代码是干嘛的, 变量名如何取?

所以, 对不起题主, 我支持你继续写下去. 说不定将来我用得上.
love
2014-10-28 21:45:52 +08:00
@yushiro 不看名字看什么?你看看上面混淆后的代码,不告诉你是8皇后你会知道是什么吗?
binux
2014-10-28 21:46:13 +08:00
你把 OOOOOOOOOOO00O000 换成 a1, a2, a3, int1, int2, int3, list1, list2, list3 试试
laotaitai
2014-10-28 21:46:38 +08:00
等哪天你公布到github时, 留下你的支付宝二维码, 我给你捐10元.
izoabr
2014-10-28 21:52:58 +08:00
页面弄个中文版更好了就
love
2014-10-28 22:00:52 +08:00
@binux 用长名字和短名字的加密强度其实差不多,因为长名字可以用IDE方便地改成短名字,但这不是问题,加密的目的是去掉原先名字包含的信息。
GtDzx
2014-10-28 22:08:31 +08:00
感觉是防君子不防小人的功能
xiaozhao992003
2014-10-28 22:10:34 +08:00
这代码加密的真够狠的啊

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

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

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

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

© 2021 V2EX