软件逆向 四

本文介绍了Python的PYC文件及其反编译,包括PYC的结构、PYC与PYO的区别,以及如何使用uncompyle6进行离线反编译。此外,还分享了逆向分析技巧,如定位验证代码、常见密码算法和逆向工程算法的思路,为CTF比赛中的解题提供指导。
摘要由CSDN通过智能技术生成

脱壳工具之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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值