脱壳工具之UPX
- 针对win64位
- 仅在命令行下才能使用
- 使用-h可查询命令
- -o是输出文件 file是文件名
- 使用时可以直接拖动进命令行
- 命名使用规则 upx.exe -d -o 生成文件名 脱壳文件名
- 文件特色,保留原函数,能脱大部分的壳
python文件下的逆向
-
PYC文件
-
python为了提高运行效率也会进行编译
python是解释型语言,运行的时候需要通过python解释器编译,所以先编译出pyc文件后,可以节省编译这一步的耗时时间。 -
不想让源码泄露。
因为py文件是可以直接看到源码的,pyc文件可以独立于py文件,删除py文件也不会出错。只需要编译成pyc文件再发布出去就好了。 -
PYC文件格式
-
Python代码的编译结果就是PyCodeObject对象。PyCodeObject对象可以由虚拟机加载后直接运行,而pyc文件就是PyCodeObject对象在硬盘上的保存形式。
-
PYC文件格式
pyc文件结构主要包括两部分:pyc文件头部表示和
PyCodeObject对象部分。上面对Pycodeobject对象的二进制部分已经有了了解,pyc文件头部比较简单,在python2中只占用8个字节包含两个字段magic和mtime
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IGIvbbUo-1604675688401)(http://note.youdao.com/s/RBAt36xE)]
-
前四个字节为特征字节 后面四个是生成时间
-
python2的特征码为 03 f3 0d 0a
-
PYO文件
-
pyo文件是源代码文件经过优化编译后生成的文件,是pyc文件的优化版本。编译时需要使用-o和-oo选项来生成pyo文件。在Python3.5之后,不再使用.pyo文件名,而是生成文件名类似“test.opt-n.pyc的文件。
-
PYC反编译
在线反编译
- 网站 https://tool.lu/pyc/
- 缺点同一个源码反编译两遍
- 优点源码相似度很高
离线反编译
- 编译软件
- uncompyle6是一个原生python的跨版本反编译器和fragment反编译器,是decompvle- uncompule- uncompyle2等的接替者。
uncompyle6可将python字节码转换回等效的python源代码,它接受python1.3版到3.8版的字节码,这其中跨越了24年的python版本,此外还包括Dropbox的Python 2.5空1节码和一些pvPv字节码。 - eithub项目:https://github.com/ rocky/python-uncompyle6
- 安装python后可以直接使用命令行安装pip install uncompyle6
- 使用方法
- -o outfile必须先写
- uncompyle6-o].py..pvc
- 在windows上使用uncompyle6
在windows里pip安装后,会在%python home%\Scriptsl目录下生成
uncompyle6.exe。只要把%python_home%\Scripts