首先先介绍一个在线反编译工具(基本上大多文件都可以实现):
https://tool.lu/pyc/
如果出现无法反编译的文件可以参照下面的方法进行反编译

1,下载反编译工具:Easy Python Decompiler

  • 下截地址:https://sourceforge.net/projects/easypythondecompiler/

2,准备好字节码表,方便对照。使用python2.7和python3.6进行获取字节码:

获取方法:

import opcode
for op in range(len(opcode.opname)):  print('0x%.2X(%.3d): %s' % (op, op, opcode.opname[op]))

字节码表附在最后面;

在使用Easy Python Decompiler反编译一个第三方pyc文件时,总是提示失败,并成生对应的文件test.pyc_dis_failed:

打开test.pyc_dis_failed文件查看时,最后一行有提示报错的地方:

根据提示,找到 1436行:

用ueditor工具打开pyc文件,按照这编文章的介绍进行理解字节码:
http://www.xumenger.com/01-python-pyc-20180521/

重点操作:

找到报错的 1436这一行对应的字节[71 46 03],然后将这三字节换成三个 BREAK_LOOP(对应为 50),即[50 50 50],然后继续pyc编译反编译,如果还是报错,根据报错的地方字节码,继续换成 BREAK_LOOP(一个字节换成一个BREAK_LOOP,直到没报错,反编译成功。

附:字节码表:python2.7字节码:0x00(000): STOP_CODE
0x01(001): POP_TOP
0x02(002): ROT_TWO
0x03(003): ROT_THREE
0x04(004): DUP_TOP
0x05(005): ROT_FOUR
0x06(006): <6>
0x07(007): <7>
0x08(008): <8>
0x09(009): NOP
0x0A(010): UNARY_POSITIVE
0x0B(011): UNARY_NEGATIVE
0x0C(012): UNARY_NOT
0x0D(013): UNARY_CONVERT
0x0E(014): <14>
0x0F(015): UNARY_INVERT
0x10(016): <16>
0x11(017): <17>
0x12(018): <18>
0x13(019): BINARY_POWER
0x14(020): BINARY_MULTIPLY
0x15(021): BINARY_DIVIDE
0x16(022): BINARY_MODULO
0x17(023): BINARY_ADD
0x18(024): BINARY_SUBTRACT
0x19(025): BINARY_SUBSCR
0x1A(026): BINARY_FLOOR_DIVIDE
0x1B(027): BINARY_TRUE_DIVIDE
0x1C(028): INPLACE_FLOOR_DIVIDE
0x1D(029): INPLACE_TRUE_DIVIDE
0x1E(030): SLICE+0
0x1F(031): SLICE+1
0x20(032): SLICE+2
0x21(033): SLICE+3
0x22(034): <34>
0x23(035): <35>
0x24(036): <36>
0x25(037): <37>
0x26(038): <38>
0x27(039): <39>
0x28(040): STORE_SLICE+0
0x29(041): STORE_SLICE+1
0x2A(042): STORE_SLICE+2
0x2B(043): STORE_SLICE+3
0x2C(044): <44>
0x2D(045): <45>
0x2E(046): <46>
0x2F(047): <47>
0x30(048): <48>
0x31(049): <49>
0x32(050): DELETE_SLICE+0
0x33(051): DELETE_SLICE+1
0x34(052): DELETE_SLICE+2
0x35(053): DELETE_SLICE+3
0x36(054): STORE_MAP
0x37(055): INPLACE_ADD
0x38(056): INPLACE_SUBTRACT
0x39(057): INPLACE_MULTIPLY
0x3A(058): INPLACE_DIVIDE
0x3B(059): INPLACE_MODULO
0x3C(060): STORE_SUBSCR
0x3D(061): DELETE_SUBSCR
0x3E(062): BINARY_LSHIFT
0x3F(063): BINARY_RSHIFT
0x40(064): BINARY_AND
0x41(065): BINARY_XOR
0x42(066): BINARY_OR
0x43(067): INPLACE_POWER
0x44(068): GET_ITER
0x45(069): <69>
0x46(070): PRINT_EXPR
0x47(071): PRINT_ITEM
0x48(072): PRINT_NEWLINE
0x49(073): PRINT_ITEM_TO
0x4A(074): PRINT_NEWLINE_TO
0x4B(075): INPLACE_LSHIFT
0x4C(076): INPLACE_RSHIFT
0x4D(077): INPLACE_AND
0x4E(078): INPLACE_XOR
0x4F(079): INPLACE_OR
0x50(080): BREAK_LOOP
0x51(081): WITH_CLEANUP
0x52(082): LOAD_LOCALS
0x53(083): RETURN_VALUE
0x54(084): IMPORT_STAR
0x55(085): EXEC_STMT
0x56(086): YIELD_VALUE
0x57(087): POP_BLOCK
0x58(088): END_FINALLY
0x59(089): BUILD_CLASS
0x5A(090): STORE_NAME
0x5B(091): DELETE_NAME
0x5C(092): UNPACK_SEQUENCE
0x5D(093): FOR_ITER
0x5E(094): LIST_APPEND
0x5F(095): STORE_ATTR
0x60(096): DELETE_ATTR
0x61(097): STORE_GLOBAL
0x62(098): DELETE_GLOBAL
0x63(099): DUP_TOPX
0x64(100): LOAD_CONST
0x65(101): LOAD_NAME
0x66(102): BUILD_TUPLE
0x67(103): BUILD_LIST
0x68(104): BUILD_SET
0x69(105): BUILD_MAP
0x6A(106): LOAD_ATTR
0x6B(107): COMPARE_OP
0x6C(108): IMPORT_NAME
0x6D(109): IMPORT_FROM
0x6E(110): JUMP_FORWARD
0x6F(111): JUMP_IF_FALSE_OR_POP
0x70(112): JUMP_IF_TRUE_OR_POP
0x71(113): JUMP_ABSOLUTE
0x72(114): POP_JUMP_IF_FALSE
0x73(115): POP_JUMP_IF_TRUE
0x74(116): LOAD_GLOBAL
0x75(117): <117>
0x76(118): <118>
0x77(119): CONTINUE_LOOP
0x78(120): SETUP_LOOP
0x79(121): SETUP_EXCEPT
0x7A(122): SETUP_FINALLY
0x7B(123): <123>
0x7C(124): LOAD_FAST
0x7D(125): STORE_FAST
0x7E(126): DELETE_FAST
0x7F(127): <127>
0x80(128): <128>
0x81(129): <129>
0x82(130): RAISE_VARARGS
0x83(131): CALL_FUNCTION
0x84(132): MAKE_FUNCTION
0x85(133): BUILD_SLICE
0x86(134): MAKE_CLOSURE
0x87(135): LOAD_CLOSURE
0x88(136): LOAD_DEREF
0x89(137): STORE_DEREF
0x8A(138): <138>
0x8B(139): <139>
0x8C(140): CALL_FUNCTION_VAR
0x8D(141): CALL_FUNCTION_KW
0x8E(142): CALL_FUNCTION_VAR_KW
0x8F(143): SETUP_WITH
0x90(144): <144>
0x91(145): EXTENDED_ARG
0x92(146): SET_ADD
0x93(147): MAP_ADD
0x94(148): <148>
0x95(149): <149>
0x96(150): <150>
0x97(151): <151>
0x98(152): <152>
0x99(153): <153>
0x9A(154): <154>
0x9B(155): <155>
0x9C(156): <156>
0x9D(157): <157>
0x9E(158): <158>
0x9F(159): <159>
0xA0(160): <160>
0xA1(161): <161>
0xA2(162): <162>
0xA3(163): <163>
0xA4(164): <164>
0xA5(165): <165>
0xA6(166): <166>
0xA7(167): <167>
0xA8(168): <168>
0xA9(169): <169>
0xAA(170): <170>
0xAB(171): <171>
0xAC(172): <172>
0xAD(173): <173>
0xAE(174): <174>
0xAF(175): <175>
0xB0(176): <176>
0xB1(177): <177>
0xB2(178): <178>
0xB3(179): <179>
0xB4(180): <180>
0xB5(181): <181>
0xB6(182): <182>
0xB7(183): <183>
0xB8(184): <184>
0xB9(185): <185>
0xBA(186): <186>
0xBB(187): <187>
0xBC(188): <188>
0xBD(189): <189>
0xBE(190): <190>
0xBF(191): <191>
0xC0(192): <192>
0xC1(193): <193>
0xC2(194): <194>
0xC3(195): <195>
0xC4(196): <196>
0xC5(197): <197>
0xC6(198): <198>
0xC7(199): <199>
0xC8(200): <200>
0xC9(201): <201>
0xCA(202): <202>
0xCB(203): <203>
0xCC(204): <204>
0xCD(205): <205>
0xCE(206): <206>
0xCF(207): <207>
0xD0(208): <208>
0xD1(209): <209>
0xD2(210): <210>
0xD3(211): <211>
0xD4(212): <212>
0xD5(213): <213>
0xD6(214): <214>
0xD7(215): <215>
0xD8(216): <216>
0xD9(217): <217>
0xDA(218): <218>
0xDB(219): <219>
0xDC(220): <220>
0xDD(221): <221>
0xDE(222): <222>
0xDF(223): <223>
0xE0(224): <224>
0xE1(225): <225>
0xE2(226): <226>
0xE3(227): <227>
0xE4(228): <228>
0xE5(229): <229>
0xE6(230): <230>
0xE7(231): <231>
0xE8(232): <232>
0xE9(233): <233>
0xEA(234): <234>
0xEB(235): <235>
0xEC(236): <236>
0xED(237): <237>
0xEE(238): <238>
0xEF(239): <239>
0xF0(240): <240>
0xF1(241): <241>
0xF2(242): <242>
0xF3(243): <243>
0xF4(244): <244>
0xF5(245): <245>
0xF6(246): <246>
0xF7(247): <247>
0xF8(248): <248>
0xF9(249): <249>
0xFA(250): <250>
0xFB(251): <251>
0xFC(252): <252>
0xFD(253): <253>
0xFE(254): <254>
0xFF(255): <255>python3.6字节码:
0x00(000): <0>
0x01(001): POP_TOP
0x02(002): ROT_TWO
0x03(003): ROT_THREE
0x04(004): DUP_TOP
0x05(005): DUP_TOP_TWO
0x06(006): <6>
0x07(007): <7>
0x08(008): <8>
0x09(009): NOP
0x0A(010): UNARY_POSITIVE
0x0B(011): UNARY_NEGATIVE
0x0C(012): UNARY_NOT
0x0D(013): <13>
0x0E(014): <14>
0x0F(015): UNARY_INVERT
0x10(016): BINARY_MATRIX_MULTIPLY
0x11(017): INPLACE_MATRIX_MULTIPLY
0x12(018): <18>
0x13(019): BINARY_POWER
0x14(020): BINARY_MULTIPLY
0x15(021): <21>
0x16(022): BINARY_MODULO
0x17(023): BINARY_ADD
0x18(024): BINARY_SUBTRACT
0x19(025): BINARY_SUBSCR
0x1A(026): BINARY_FLOOR_DIVIDE
0x1B(027): BINARY_TRUE_DIVIDE
0x1C(028): INPLACE_FLOOR_DIVIDE
0x1D(029): INPLACE_TRUE_DIVIDE
0x1E(030): <30>
0x1F(031): <31>
0x20(032): <32>
0x21(033): <33>
0x22(034): <34>
0x23(035): <35>
0x24(036): <36>
0x25(037): <37>
0x26(038): <38>
0x27(039): <39>
0x28(040): <40>
0x29(041): <41>
0x2A(042): <42>
0x2B(043): <43>
0x2C(044): <44>
0x2D(045): <45>
0x2E(046): <46>
0x2F(047): <47>
0x30(048): <48>
0x31(049): <49>
0x32(050): GET_AITER
0x33(051): GET_ANEXT
0x34(052): BEFORE_ASYNC_WITH
0x35(053): <53>
0x36(054): <54>
0x37(055): INPLACE_ADD
0x38(056): INPLACE_SUBTRACT
0x39(057): INPLACE_MULTIPLY
0x3A(058): <58>
0x3B(059): INPLACE_MODULO
0x3C(060): STORE_SUBSCR
0x3D(061): DELETE_SUBSCR
0x3E(062): BINARY_LSHIFT
0x3F(063): BINARY_RSHIFT
0x40(064): BINARY_AND
0x41(065): BINARY_XOR
0x42(066): BINARY_OR
0x43(067): INPLACE_POWER
0x44(068): GET_ITER
0x45(069): GET_YIELD_FROM_ITER
0x46(070): PRINT_EXPR
0x47(071): LOAD_BUILD_CLASS
0x48(072): YIELD_FROM
0x49(073): GET_AWAITABLE
0x4A(074): <74>
0x4B(075): INPLACE_LSHIFT
0x4C(076): INPLACE_RSHIFT
0x4D(077): INPLACE_AND
0x4E(078): INPLACE_XOR
0x4F(079): INPLACE_OR
0x50(080): BREAK_LOOP
0x51(081): WITH_CLEANUP_START
0x52(082): WITH_CLEANUP_FINISH
0x53(083): RETURN_VALUE
0x54(084): IMPORT_STAR
0x55(085): SETUP_ANNOTATIONS
0x56(086): YIELD_VALUE
0x57(087): POP_BLOCK
0x58(088): END_FINALLY
0x59(089): POP_EXCEPT
0x5A(090): STORE_NAME
0x5B(091): DELETE_NAME
0x5C(092): UNPACK_SEQUENCE
0x5D(093): FOR_ITER
0x5E(094): UNPACK_EX
0x5F(095): STORE_ATTR
0x60(096): DELETE_ATTR
0x61(097): STORE_GLOBAL
0x62(098): DELETE_GLOBAL
0x63(099): <99>
0x64(100): LOAD_CONST
0x65(101): LOAD_NAME
0x66(102): BUILD_TUPLE
0x67(103): BUILD_LIST
0x68(104): BUILD_SET
0x69(105): BUILD_MAP
0x6A(106): LOAD_ATTR
0x6B(107): COMPARE_OP
0x6C(108): IMPORT_NAME
0x6D(109): IMPORT_FROM
0x6E(110): JUMP_FORWARD
0x6F(111): JUMP_IF_FALSE_OR_POP
0x70(112): JUMP_IF_TRUE_OR_POP
0x71(113): JUMP_ABSOLUTE
0x72(114): POP_JUMP_IF_FALSE
0x73(115): POP_JUMP_IF_TRUE
0x74(116): LOAD_GLOBAL
0x75(117): <117>
0x76(118): <118>
0x77(119): CONTINUE_LOOP
0x78(120): SETUP_LOOP
0x79(121): SETUP_EXCEPT
0x7A(122): SETUP_FINALLY
0x7B(123): <123>
0x7C(124): LOAD_FAST
0x7D(125): STORE_FAST
0x7E(126): DELETE_FAST
0x7F(127): STORE_ANNOTATION
0x80(128): <128>
0x81(129): <129>
0x82(130): RAISE_VARARGS
0x83(131): CALL_FUNCTION
0x84(132): MAKE_FUNCTION
0x85(133): BUILD_SLICE
0x86(134): <134>
0x87(135): LOAD_CLOSURE
0x88(136): LOAD_DEREF
0x89(137): STORE_DEREF
0x8A(138): DELETE_DEREF
0x8B(139): <139>
0x8C(140): <140>
0x8D(141): CALL_FUNCTION_KW
0x8E(142): CALL_FUNCTION_EX
0x8F(143): SETUP_WITH
0x90(144): EXTENDED_ARG
0x91(145): LIST_APPEND
0x92(146): SET_ADD
0x93(147): MAP_ADD
0x94(148): LOAD_CLASSDEREF
0x95(149): BUILD_LIST_UNPACK
0x96(150): BUILD_MAP_UNPACK
0x97(151): BUILD_MAP_UNPACK_WITH_CALL
0x98(152): BUILD_TUPLE_UNPACK
0x99(153): BUILD_SET_UNPACK
0x9A(154): SETUP_ASYNC_WITH
0x9B(155): FORMAT_VALUE
0x9C(156): BUILD_CONST_KEY_MAP
0x9D(157): BUILD_STRING
0x9E(158): BUILD_TUPLE_UNPACK_WITH_CALL
0x9F(159): <159>
0xA0(160): <160>
0xA1(161): <161>
0xA2(162): <162>
0xA3(163): <163>
0xA4(164): <164>
0xA5(165): <165>
0xA6(166): <166>
0xA7(167): <167>
0xA8(168): <168>
0xA9(169): <169>
0xAA(170): <170>
0xAB(171): <171>
0xAC(172): <172>
0xAD(173): <173>
0xAE(174): <174>
0xAF(175): <175>
0xB0(176): <176>
0xB1(177): <177>
0xB2(178): <178>
0xB3(179): <179>
0xB4(180): <180>
0xB5(181): <181>
0xB6(182): <182>
0xB7(183): <183>
0xB8(184): <184>
0xB9(185): <185>
0xBA(186): <186>
0xBB(187): <187>
0xBC(188): <188>
0xBD(189): <189>
0xBE(190): <190>
0xBF(191): <191>
0xC0(192): <192>
0xC1(193): <193>
0xC2(194): <194>
0xC3(195): <195>
0xC4(196): <196>
0xC5(197): <197>
0xC6(198): <198>
0xC7(199): <199>
0xC8(200): <200>
0xC9(201): <201>
0xCA(202): <202>
0xCB(203): <203>
0xCC(204): <204>
0xCD(205): <205>
0xCE(206): <206>
0xCF(207): <207>
0xD0(208): <208>
0xD1(209): <209>
0xD2(210): <210>
0xD3(211): <211>
0xD4(212): <212>
0xD5(213): <213>
0xD6(214): <214>
0xD7(215): <215>
0xD8(216): <216>
0xD9(217): <217>
0xDA(218): <218>
0xDB(219): <219>
0xDC(220): <220>
0xDD(221): <221>
0xDE(222): <222>
0xDF(223): <223>
0xE0(224): <224>
0xE1(225): <225>
0xE2(226): <226>
0xE3(227): <227>
0xE4(228): <228>
0xE5(229): <229>
0xE6(230): <230>
0xE7(231): <231>
0xE8(232): <232>
0xE9(233): <233>
0xEA(234): <234>
0xEB(235): <235>
0xEC(236): <236>
0xED(237): <237>
0xEE(238): <238>
0xEF(239): <239>
0xF0(240): <240>
0xF1(241): <241>
0xF2(242): <242>
0xF3(243): <243>
0xF4(244): <244>
0xF5(245): <245>
0xF6(246): <246>
0xF7(247): <247>
0xF8(248): <248>
0xF9(249): <249>
0xFA(250): <250>
0xFB(251): <251>
0xFC(252): <252>
0xFD(253): <253>
0xFE(254): <254>
0xFF(255): <255>
-------------转自:https://blog.csdn.net/seagulhui1/article/details/90710266

python的pyc反编译相关推荐

  1. python文件编译与pyc反编译

    pyc是编译py之后生成的二进制文件.当我们发布系统的时候不想让别人看到源代码,就需要将py文件编译生成pyc文件,对外只提供pyc文件.同样,如果拿到一个python程序,只有pyc文件,我们就无法 ...

  2. 方便无阻且全面的python程序exe反编译,可以不使用十六进制编辑器完成的常规反编操作

    Python源代码能够被pyinstaller打包为脱离Python环境的exe可执行文件,然而,在有些特殊情况下,比如剖析病毒,数据恢复,需要反过来把可执行文件反编译为Python源代码,这个过程是 ...

  3. 将.pyc反编译成.py

    在使用atom查看.py文件时,发现乱码了,于是在网上一顿搜索. .pyc文件是.py文件运行产生的,对于下次执行会加快执行速度,但想要阅读源码的话,需要将它反编译成.py文件. 下面记录下如何将.p ...

  4. Python .pyc的编译和反编译

    1. 由Python文件编译为.pyc文件 python -m compileall  test.py 2. .pyc的反编译,使用uncompyle 最方便的就是使用pip安装 uncompyle: ...

  5. 【python】pyc文件反编译为py文件

    需求:把项目里的 pyc 文件反编译出来,查看接口函数的逻辑 解决方案:uncompyle6可将python字节码转换回等效的python源代码,它接受python 1.3版到3.8版的字节码 具体实 ...

  6. 什么是pyc文件,把python的py文件编译成pyc文件,把pyc文件反编译成py文件。以及python编译的如何设置不生成pyc文件

    文章目录 1 什么是pyc文件 1.1 什么是pyc文件 1.2 pyc文件是怎么生成的,有什么好处 2 把python的py文件编译成pyc文件 2.1 使用python内置库py_compile把 ...

  7. python pyc文件解析_如何反编译pyc文件

    如何将.pyc和.pyo文件反编译为.py文件 pyc大约在python2刚出的时候有.后来就很少找得到了.有一次,不小心把.py删除了,通过pyc还把代码还原了. 你搜索uncompyle2, de ...

  8. pyc文件反编译为py文件

    近期时不时需要把工程里的 pyc 文件反编译出来,查看接口函数的逻辑.此前有师兄安利了uncompyle6工具,我使用了几次,发现反编译出来的代码逻辑很清晰,此处我也不能打包票 uncompyle6 ...

  9. exe反编译_反编译Python生成exe软件(Py3-polySML)

    反编译对象为一篇文献上的软件,反编译只是为了了解一些源代码的逻辑. 过程参考文章:python3.7.4反编译生成的.exe 反编译对象:polySML 此对象为python打包,且未进行加密加壳软件 ...

  10. 谈谈Python的编译和反编译

    用Python写脚本,小程序可谓非常方便,但它需要有特定的python环境才能运行,因此如果你想在别的电脑上运行时就会出现许多问题,就算已经安装了Python,但版本可能相差较大,且相关的依赖库没有安 ...

最新文章

  1. Python使用matplotlib可视化散点图、并在可视化图像的底部和右边添加边缘直方图、自定义边缘直方图的色彩(Marginal Histogram)
  2. SCAPY pcap文件数据分析 python3
  3. WebRTC音频预处理单元APM的整体编译及使用
  4. python错误 ImportError: No module named setuptools 解决方法[转]
  5. 如何系统地理解「交易平台」?
  6. struts2学习笔记(常见错误)
  7. DOM-动态操作心得
  8. 史上最强Android 开启照相或者是从本地相册选中一张图片以后先裁剪在保存并显示的讲解附源码...
  9. python错误修复方法_python常见异常及解决方法
  10. 实习踩坑之路:ElasticSearch搜索出来了不是自己的数据?Elastic会像MyBatisPlus一样会帮我们做判断null的操作么?分片精确度如何控制?
  11. python和c#区别_Python和C#哪个好?有什么区别?
  12. 计算机桌面图标右上角出现双箭头符号,电脑桌面上的图标有小箭头怎么清除?...
  13. idea中各种颜色的含义
  14. 语义标签(Semantic label)与多模态模型的一些关系
  15. 产品经理的职责和分类
  16. jeecms oracle v5_jeecms v5 spring和ehcache的整合
  17. Scratch软件编程等级考试三级——20191221
  18. JAVA基础-Object类(简单说明),String类,.equals()方法
  19. php五只猴子分椰子_(笔试题)分椰子
  20. GIS原理篇 地图投影

热门文章

  1. 共享没有计算机网络连接不上去,苹果usb共享给电脑连接不上怎么办
  2. 计算机网络原理-韩立刚-第四章 网络层
  3. 鼠标自动点击器linux,鼠标自动点击器PC版下载
  4. 鼠标连点器脚本c语言,鼠标连点器3000(MailBar) v2.4.2 安装版
  5. 删除android电视软件下载,【教程】无需root!卸载小米电视/盒子内置应用竟如此简单...
  6. 数学-泰勒展开和拉格朗日
  7. 《转》android利用socket与java后台交互的设计与实现
  8. 运筹优化算法工程师面试问题汇总
  9. Django作为微信小程序后端实践
  10. 安卓原生系统_安卓原生系统为什么比MIUI和EMUI等国产系统更流畅