2020-03-21

Python代码混淆器制作

         代码混淆我们都知道无非就是把变量改改,该加密的加密运行的时候解密啥的。但是当你啥都不知道没有这些基础知识时我们该怎么办呢?今天我为大家说说如何自己制作一个Python的代码混淆器.首先声明一下不是爬虫啊!不是把你的代码然后requests到http://pyob.oxyry.com/然后post返回混淆好的。咱们直接做个本地的奥。

了解Python的BIF:

    BIF(built-in functions) 顾名思义,就是Erlang内建函数。它们通常用来完成那此无法用Erlang完成的任务。比如将列表转换为元组或者获取当前(来自https://blog.csdn.net/qq_20545159/article/details/46334323的解释)反正就是Python的内置方法函数,简单来说就是不能混淆的东西。然后我百度了一下获取所有的BIF的方法:

dir(__builtins__)

但是你会发现输出的结果大概就是这个样子是个列表的形式,所以说我们怎么把他提取出来呢?

看着头疼..

   非常简单咱们用个For循环迭代 (感谢Lpoem的建议)递归列举出这些:

i = -1

x =len(dir(__builtins__))

for iin range(0, x -1):

i = i +1

  print(dir(__builtins__)[i])


就会输出成这个样子啦

这段话就是递归的方法将列表中的所有BIF一个一个提取出来。懂的人自然懂,不懂的人就老老实实的Copy吧.

现在我们得到了所有的BIF,python的内置函数,现在我们就可以百度如何替换文本.然后我们把这个获得到的这些BIF存到一个文版网站上面(例如码云,pastbin都可以).我在这里用码云[这个是国内的网站访问速度比较快]https://gitee.com/没有的自己注册个账号就可以了


咱们来添加以下吧



就是这个样子


点提交就好了


然后我们点击这个


好了这样就变成了个可更新的BIF库了

下面让我们通过requests这个神库来获取一下吧:


搞定了这个网站以后有什么新的出了咱们直接添加就好了


我们利用正则表达试获取出来了里面的单词啥的

现在我们获得这个就可以判断一下是否存在我们的BIF库中.现在我们会发现print

是BIF中的一员,所以咱们来用in试试能不能准确的找出来。


看起来真不赖hhhhh


BUG!

俗话说的好,代码五分钟debug两小时...我们会发现x明明不是BIF啊,为什么会出现呢?原来他这个字母是出现在了某个单词中。怎么办呢?换一个存BIF的方法,回到解放前,爬虫给我爪巴,列表爸爸最好用!

完美Bypass我们的BUG

好了最后一步替换文本咱们一般喜欢加密成让大家自闭的变量来我给你们演示一下:

lIlIlIlIlIlIlIlIlIIIIlIlIlIIIlI

OoOOOo0oOoo0oo0oOoOooOoOo00o0ooooOoOo000o00

第一个你们能分得清哪个是i那个是L嘛看不出来的吧嘿嘿

第二个:卧槽你这啥玩意我脑子疼!大O小o还有0混在一起我都头皮发麻...


哈哈哈搞定这么长的变量[我好损啊]

有更好的建议可以给我提出我肯定会出改正篇的.然后这个代码其实就是Beta版你们可以写open,把你们的代码以txt的文件存好然后再那PyQt做个专业一点的界面这样做出来的就比较方便使用了,我在这里就给大家提供个想法,那个爬虫其实可以用只是我是菜鸡,除了in我懒得找其他的BIF代替,干脆直接还是用列表取值就行了。。

有问题可以联系我:QQ

2076966127

你可能感兴趣的:(2020-03-21)