昨天看见 最近用 Python 写了个工具,有没有什么办法防止被反编译 讨论 Python 源码保护的问题。
结果显而易见如帖子 33 楼说的:没什么办法能够完全阻止反编译。给予足够的付出,任何程序都可以逆向出来
但是略微提高些反编译的门槛的小方法还是有的,现在将一个加密代码用这个办法写了个小 DEMO ,欢迎各位尝试反编译,将此 DEMO 加密后的值: 3518d7401d60a79a22f326ada22f116d 进行解密。
DEMO: https://pan.baidu.com/s/1nuMV5Ip
加个小彩头吧~ 第一个给出反编译方法的 支付宝 10 块钱 (穷那...
可能感兴趣的同学都尝试了一下,不知道思路如何,我说说我的方法吧
common.pyc 可以直接反编译,这个很简单,但是里面又套了一层 zlib 解压后的对象, marshal.loads() 后是一个 code object
很多朋友到了这步可能就被卡住了,其实没有什么难的... 这里的 code object 可以直接导出 pyc 参考 示例
然后将导出的 pyc 再次反编译就可以得到源码了。
2
RadishWind 2017-03-02 10:16:18 +08:00
用 ctypes 调用就行吧
|
3
Kisesy 2017-03-02 10:17:11 +08:00
from Crypto.Cipher import AES
import base64 import sys from Crypto.Cipher import AES from binascii import b2a_hex, a2b_hex class prpcrypt: def __init__(self): global ak ak = 'gxu' self.mode = AES.MODE_CBC self.accs() self.eaf() self.afd() self.fds() def accs(self): global ak ak += 'isCc' def eaf(self): |
7
Kisesy 2017-03-02 10:48:22 +08:00
不用,大家技术交流而已,哈哈,也算是学习一下
|
8
ADUST 2017-03-02 10:53:53 +08:00
研究过一段时间,最终使用 ctypes 将 py 转为 c ,然后 gcc 编译为.o ,入口文件 import .o 就可以了
|
11
clino 2017-03-02 11:03:49 +08:00
我有个安全相关的工具,因为 py 容易被反编译,结果最后改成 go 来做,效果不错...
|
13
henices 2017-03-02 11:16:32 +08:00
使用定制的 python 主程序,这样别人的反不出你的代码了。但其实也就是增加别人的时间成本罢了。
|