使用pyinstaller逆向.pyc文件


Posted in Python onDecember 20, 2019

搭建python环境

1.百度搜索python3.7下载,找到官网下载安装包,运行安装包并配置环境变量。

使用pyinstaller逆向.pyc文件

使用pyinstaller逆向.pyc文件

使用pyinstaller逆向.pyc文件

2.这里一定要安装python3.7版本的,我之前安装python3.5,不能正常使用pyinstalller库。

使用pyinstaller逆向.pyc文件

3.能显示一下界面说明安装成功

使用pyinstaller逆向.pyc文件

安装pyintaller

1.进入scripts脚本目录,执行pip install pyinstaller,不过我这里已经下好了。

使用pyinstaller逆向.pyc文件

2.使用archive_viewer.py工具,提取出CM.pyc文件,接着open PYZ-00.pyz压缩包,提取出压缩包中的两个.pyc文件。

使用pyinstaller逆向.pyc文件

使用pyinstaller逆向.pyc文件

使用pyinstaller逆向.pyc文件

3.编辑三个.pyc文件,就是PyInstaller在打包.pyc时,会把.pyc的magic和时间戳去掉,所以需要手工修复,在文件的头部插入03 F3 0D 0A 74 a7cf 5c。

使用pyinstaller逆向.pyc文件

4.用pip install uncompyle6命令语句, 下载uncompyle6 工具,接着反汇编

使用pyinstaller逆向.pyc文件

CM.py代码如下:

# uncompyle6 version 3.6.0
# Python bytecode 2.7 (62211)
# Decompiled from: Python 3.7.4 (tags/v3.7.4:e09359112e, Jul 8 2019, 20:34:20) [MSC v.1916 64 bit (AMD64)]
# Embedded file name: b'D:\\\xd7\xca\xc1\xcf\xce\xc4\xbc\xfe\\a\xd1\xd0\xbe\xbf\xb7\xbd\xcf\xf2\xb2\xce\xbf\xbc\xd7\xca\xc1\xcf\\3-\xbc\xc6\xcb\xe3\xbb\xfa\xc8\xa1\xd6\xa4(\xd6\xd8\xb5\xe3)\\\xbf\xf2\xbc\xdc\\volatility\xce\xc4\xbc\xfe\\volatility-master\\vol.py'
# Compiled at: 2018-12-07 00:22:54
"""
@author:    AAron Walters
@license:   GNU General Public License 2.0
@contact:   awalters@4tphi.net
@organization: Volatility Foundation
"""
import sys
if sys.version_info < (2, 6, 0):
  sys.stderr.write('Volatility requires python version 2.6, please upgrade your python installation.')
  sys.exit(1)
try:
  import psyco
except ImportError:
  pass

if False:
  import yara
import textwrap, volatility.conf as conf
config = conf.ConfObject()
import volatility.constants as constants, volatility.registry as registry, volatility.exceptions as exceptions, volatility.obj as obj, volatility.debug as debug, volatility.addrspace as addrspace, volatility.commands as commands, volatility.scan as scan
config.add_option('INFO', default=None, action='store_true', cache_invalidator=False, help='Print information about all registered objects')

def list_plugins():
  result = '\n\tSupported Plugin Commands:\n\n'
  cmds = registry.get_plugin_classes(commands.Command, lower=True)
  profs = registry.get_plugin_classes(obj.Profile)
  if config.PROFILE == None:
    config.update('PROFILE', 'WinXPSP2x86')
  assert not config.PROFILE not in profs, 'Invalid profile ' + config.PROFILE + ' selected'
  profile = profs[config.PROFILE]()
  wrongprofile = ''
  for cmdname in sorted(cmds):
    command = cmds[cmdname]
    helpline = command.help() or ''
    for line in helpline.splitlines():
      if line:
        helpline = line
        break

    if command.is_valid_profile(profile):
      result += ('\t\t{0:15}\t{1}\n').format(cmdname, helpline)
    else:
      wrongprofile += ('\t\t{0:15}\t{1}\n').format(cmdname, helpline)

  if wrongprofile and config.VERBOSE:
    result += '\n\tPlugins requiring a different profile:\n\n'
    result += wrongprofile
  return result


def command_help(command):
  outputs = []
  for item in dir(command):
    if item.startswith('render_'):
      outputs.append(item.split('render_', 1)[(-1)])

  outputopts = '\nModule Output Options: ' + ('{0}\n').format(('{0}').format(('\n').join([(', ').join(o for o in sorted(outputs))])))
  result = textwrap.dedent(('\n  ---------------------------------\n  Module {0}\n  ---------------------------------\n').format(command.__class__.__name__))
  return outputopts + result + command.help() + '\n\n'


def print_info():
  """ Returns the results """
  categories = {addrspace.BaseAddressSpace: 'Address Spaces', commands.Command: 'Plugins', 
    obj.Profile: 'Profiles', 
    scan.ScannerCheck: 'Scanner Checks'}
  for c, n in sorted(categories.items()):
    lower = c == commands.Command
    plugins = registry.get_plugin_classes(c, lower=lower)
    print '\n'
    print ('{0}').format(n)
    print '-' * len(n)
    result = []
    max_length = 0
    for clsname, cls in sorted(plugins.items()):
      try:
        doc = cls.__doc__.strip().splitlines()[0]
      except AttributeError:
        doc = 'No docs'

      result.append((clsname, doc))
      max_length = max(len(clsname), max_length)

    for name, doc in result:
      print ('{0:{2}} - {1:15}').format(name, doc, max_length)


def main():
  sys.stderr.write(('Volatility Foundation Volatility Framework {0}\n').format(constants.VERSION))
  sys.stderr.flush()
  debug.setup()
  registry.PluginImporter()
  registry.register_global_options(config, addrspace.BaseAddressSpace)
  registry.register_global_options(config, commands.Command)
  if config.INFO:
    print_info()
    sys.exit(0)
  config.parse_options(False)
  debug.setup(config.DEBUG)
  module = None
  cmds = registry.get_plugin_classes(commands.Command, lower=True)
  for m in config.args:
    if m in cmds.keys():
      module = m
      break

  if not module:
    config.parse_options()
    debug.error('You must specify something to do (try -h)')
  try:
    if module in cmds.keys():
      command = cmds[module](config)
      config.set_help_hook(obj.Curry(command_help, command))
      config.parse_options()
      if not config.LOCATION:
        debug.error('Please specify a location (-l) or filename (-f)')
      command.execute()
  except exceptions.VolatilityException as e:
    print e

  return


if __name__ == '__main__':
  config.set_usage(usage='Volatility - A memory forensics analysis platform.')
  config.add_help_hook(list_plugins)
  try:
    main()
  except Exception as ex:
    if config.DEBUG:
      debug.post_mortem()
    else:
      raise
  except KeyboardInterrupt:
    print 'Interrupted'
# okay decompiling CM.pyc

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
手动实现把python项目发布为exe可执行程序过程分享
Oct 23 Python
python中的装饰器详解
Apr 13 Python
简单介绍Python中利用生成器实现的并发编程
May 04 Python
python使用电子邮件模块smtplib的方法
Aug 28 Python
关于numpy中np.nonzero()函数用法的详解
Feb 07 Python
利用Python实现Windows下的鼠标键盘模拟的实例代码
Jul 13 Python
Empty test suite.(PyCharm程序运行错误的解决方法)
Nov 30 Python
Python读取二进制文件代码方法解析
Jun 22 Python
python 爬虫如何正确的使用cookie
Oct 27 Python
python操作ini类型配置文件的实例教程
Oct 30 Python
Python实现图片指定位置加图片水印(附Pyinstaller打包exe)
Mar 04 Python
Python函数对象与闭包函数
Apr 13 Python
Python3 实现减少可调用对象的参数个数
Dec 20 #Python
python获取引用对象的个数方式
Dec 20 #Python
Python 获取命令行参数内容及参数个数的实例
Dec 20 #Python
python 读写文件包含多种编码格式的解决方式
Dec 20 #Python
pandas 中对特征进行硬编码和onehot编码的实现
Dec 20 #Python
使用python3批量下载rbsp数据的示例代码
Dec 20 #Python
Python使用QQ邮箱发送邮件报错smtplib.SMTPAuthenticationError
Dec 20 #Python
You might like
重置版战役片段
2020/04/09 魔兽争霸
php iconv() : Detected an illegal character in input string
2010/12/05 PHP
PHP图片裁剪函数(保持图像不变形)
2014/05/04 PHP
php之curl实现http与https请求的方法
2014/10/21 PHP
PHP连接数据库实现注册页面的增删改查操作
2016/03/27 PHP
PHP页面间传递值和保持值的方法
2016/08/24 PHP
浅谈Yii乐观锁的使用及原理
2017/07/25 PHP
Js sort排序使用方法
2011/10/17 Javascript
Javascript获取HTML静态页面参数传递值示例
2013/08/18 Javascript
自己写的Javascript计算时间差函数
2013/10/28 Javascript
jquery.hotkeys监听键盘按下事件keydown插件
2014/05/11 Javascript
jQuery循环滚动新闻列表示例代码
2014/06/17 Javascript
js实现键盘控制DIV移动的方法
2015/01/10 Javascript
jQuery点击按钮弹出遮罩层且内容居中特效
2015/12/14 Javascript
使用JavaScript实现ajax的实例代码
2016/05/11 Javascript
基于JS实现的笛卡尔乘积之商品发布
2016/05/13 Javascript
js oncontextmenu事件使用详解
2017/03/25 Javascript
详解VueJS应用中管理用户权限
2018/02/02 Javascript
React如何解决fetch跨域请求时session失效问题
2018/11/02 Javascript
vue 实现搜索的结果页面支持全选与取消全选功能
2019/05/10 Javascript
如何在Vue中抽离接口配置文件
2019/10/31 Javascript
从零学python系列之数据处理编程实例(二)
2014/05/22 Python
Python压缩解压缩zip文件及破解zip文件密码的方法
2015/11/04 Python
Python实现SSH远程登陆,并执行命令的方法(分享)
2017/05/08 Python
python实现数据库跨服务器迁移
2018/04/12 Python
pycharm设置注释颜色的方法
2018/05/23 Python
Python文件监听工具pyinotify与watchdog实例
2018/10/15 Python
Django实现将一个字典传到前端显示出来
2020/04/03 Python
PyTorch的torch.cat用法
2020/06/28 Python
Python Request类源码实现方法及原理解析
2020/08/17 Python
Django权限控制的使用
2021/01/07 Python
Coggles美国/加拿大:高级国际时装零售商
2018/10/23 全球购物
Wiggle新西兰:自行车、跑步、游泳
2020/05/06 全球购物
Linux管理员面试经常问道的相关命令
2014/12/12 面试题
工厂仓管员岗位职责
2015/04/01 职场文书
python 实现图片特效处理
2022/04/03 Python