Ⅰ 反编译是什么意思
计算机软件反向工程(Reverse engineering)也称为计算机软件还原工程,是指通过对他人软件的目标程序(比如可执行程序)进行“逆向分析、研究”工作,以推导出他人的软件产品所使用的思路、原理、结构、算法、处理过程、运行方法等设计要素,
某些特定情况下可能推导出源代码。反编译作为自己开发软件时的参考,或者直接用于自己的软件产品中。
(1)python3反编译扩展阅读
反编译是一个复杂的过程,反编译软件有:
1、SWF相关的反编译程序
Action Script Viewer
第一个也是最强大的商业SWF反编译工具,同类产品中,它的AS代码反编译效果最好,SWF转Fla工程重建成功率最高。
2、Android相关的反编译程序
SMALI/BAKSMAL
SMALI/BAKSMALI是一个强大的apk文件编辑工具,用于Dalvik虚拟机(Google公司自己设计用于Android平台的虚拟机)来反编译和回编译classes.dex。其语法是一种宽松式的Jasmin/dedexer语法,而且它实现了.dex格式所有功能(注解,调试信息,线路信息等)。
3、Python相关的反编译程序
uncompyle2
uncompyle2可以直接转化为十分完美的python源码,并可以将反编译后的源码再次生成字节码文件。
参考资料来源:网络-反向编译
Ⅱ python源码编程成pyc后,怎么防止反编译
无法防止反编译,但可以混淆,让你即使反编译了,也看不懂语法
下面一段源码
sd=1
defseed(s):
globalsd
sd=s
defrandn(n):
globalsd
sd=(sd*1103515245+12345)&0x7fffffff
returnsd%n
defmain():
seed(11)
foriinxrange(4):
printrandn(313)
if__name__=='__main__':
main()
混淆后
oo000=1
if9-9:Ii.o0o00Oo0O-iI11I1II1I1I
defoooo(s):
globaloo000
oo000=s
if11-11:ii1I-ooO0OO000o
defii11i(n):
globaloo000
oo000=(oo000*1103515245+12345)&0x7fffffff
returnoo000%n
if66-66:iIiI*iIiiiI1IiI1I1*o0OoOoOO00
defI11i():
oooo(11)
forO0Oinxrange(4):
printii11i(313)
if78-78:i11ii11iIi11i.oOoO0oo0OOOo+IiiI/Iii1ii1II11i
if__name__=='__main__':
I11i()#
Ⅲ 反编译python编写的exe文件的详细方法
接下来具体说一下步骤:
这个文件在pyinstaller库里,还没有安装的需要安装一下(已经安装的跳过安装)
安装完成后在python安装路径下的\Lib\site-packages文件夹搜索archive_viewer.py文件
找到文件后可以复制到你想要放置的位置(不复制也行)
这一步会把编译出的文件都罗列出来,像这样
但是我们只需要找到我们exe对应的名字的文件就好了,确认存在之后滑到最下面,会发现有个?号用于输入接下来的命令,在这边我们输入
会显示 to filename? 让你输入需要输出的pyc文件名称,这边输入 your_app.pyc 回车就好了
接下来又会显示?号,接着输入 x struct 回车,输入struct文件名称 struct 回车
由于用PyInstaller打包后,pyc文件的前8个字节会被抹掉,所以最后要自己添加回去。前四个字节为python编译的版本,后四个字节为时间戳。
这边使用Hex Editor Neo软件同时打开.pyc文件和struct文件,复制struct文件前面8个字节插入到.pyc文件的前面:
这样我们就得到了完整的pyc文件
安装uncompyle库
反编译
Ⅳ python文件后缀是什么
python文件后缀总结:
(1).py:这通常是您编写的输入源代码。
(2).py3:Python3脚本(Python3脚本通常以.py而不是.py3结尾,很少使用)。
(3).pyc:这是编译好的字节码。如果导入一个模块,python将生成一个*.pyc包含字节码的文件,以便再次导入它更容易(也更快)。
.pyc二进制文件可以反编译成.py文件,反编译软件叫Easy Python Decompiler。
(4).pyo:这是在优化(-O)时创建的*.pyc文件,从Python3.5开始,Python将只使用.pyc而不是.pyo和.pyc。
(5).pyd:这基本上是一个Windows DLL文件。
(6).pyi:MyPy存根,存根文件(PEP 484)。
(7).pyw:用pythonw.exe执行的Windows的Python脚本。
(8).pyx:将Cython src转换为C/C++。
(9).pyz:Python脚本归档(PEP 441)(这是一个包含标准Python脚本头之后的二进制形式的压缩Python脚本(ZIP)的脚本)。
(10).pywz:用于MS-Windows的Python脚本归档(PEP 441)(这是一个包含标准Python脚本头之后的二进制形式的压缩 Python脚本(ZIP)的脚本)。
(11).py [cod]:.gitignore中的通配符表示该文件可能是.pyc,.pyo或.pyd。
(12).rpy:包含应用程序或框架特定功能的RPython脚本或Python脚本。
(13).pyde:处理使用的Python脚本。
(14).pyp:Py4D Python插件。
(15).pyt:Python声明文件。
众多python培训视频,尽在python学习网,欢迎在线学习!
Ⅳ Python的while 1跟while True到底有什么区别
定义两个方法,分别使用while循环
defw():
while1:
pass
defw2():
whileTrue:
pass
单从功能上说,两种无任何区别,那么,来看看字节码上的区别:
importdis#载入反编译模块,Python内置的
dis.dis(w)#对应的是while1,下面是输出
20SETUP_LOOP3(to6)
3>>3JUMP_ABSOLUTE3
>>6LOAD_CONST0(None)
9RETURN_VALUE
dis.dis(w2)#对应的是whileTrue,下面是输出
20SETUP_LOOP10(to13)
>>3LOAD_GLOBAL0(True)
6POP_JUMP_IF_FALSE12
39JUMP_ABSOLUTE3
>>12POP_BLOCK
>>13LOAD_CONST0(None)
16RETURN_VALUE
很明显, while 1的字节码只有while True的一半.
为什么呢? 因为Python2.x中True不是关键字,只是一个全局变量而已
Python3中,True、False是关键字,就没有什么区别了。
更详细,更专业的分析,请看
http://stackoverflow.com/questions/3815359/while-1-vs-for-whiletrue-why-is-there-a-difference
Ⅵ python写的程序,转成了exe文件,怎么进行反编译为python源码
1、电脑桌面,输入“win+R”组合键,在弹出窗口中输入“cmd”,点击确定。