精华内容
下载资源
问答
  • step 1 安装和配置uncompyle2 更新uncompule2模块 step 2 反编译text.pyc uncompyle2 -o text.py text.pyc
  • .pyc反编译在线工具

    千次阅读 2017-07-01 13:45:01
    http://tool.lu/pyc 效果还是不错的。 只是把一些汉字变成了十六进制

    http://tool.lu/pyc
    效果还是不错的。
    这里写图片描述
    只是把一些汉字变成了十六进制
    这里写图片描述

    展开全文
  • pyc反编译.rar

    2019-11-24 09:12:20
    这是个windows版的工具,可以反编译单个pyc,pyo 文件,或者选定反编译一个指定文件夹下面的pyc,pyo 文件, 确实很好用.
  • python的pyc反编译

    2019-07-11 15:24:32
    1,下载反编译工具:Easy Python Decompiler 下截地址:https://sourceforge.net/projects/easypythondecompiler/ 2,准备好字节码表,方便对照。使用python2.7和python3.6进行获取字节码: 获取方法: import ...

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

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

    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
    
    展开全文
  • python2.6 pyc反编译

    万次阅读 2014-01-25 00:24:24
    同学请我帮他反编译下几个pyc文件,生成pyc文件的python版本是2.6.6 尝试了以下几个工具: 【1】uncompyle2 github:https://github.com/wibiti/uncompyle2 之前用过,但是有个限制是必须是python2.7以上生成的...

    同学请我帮他反编译下几个pyc文件,生成pyc文件的python版本是2.6.6

    尝试了以下几个工具:

    【1】uncompyle2

    github:https://github.com/wibiti/uncompyle2

    之前用过,但是有个限制是必须是python2.7以上生成的pyc

    怀着试试的心理,还是按照说明使用了:

    E:\kkxue文档\python\反编译\uncompyle2-master\scripts>python uncompyle2 log_error
    .pyc
    Error:  uncompyle2 requires Python 2.7.

    好了,下一个


    【2】UnPyc

    github:https://github.com/tswr/UnPyc

    直接上执行后的结果:

    C:\Users\Administrator\Desktop\zhou\UnPyc-disasm_0.18>python UnPyc -dv log_error
    .pyc > result.txt
    打开result.txt,结果发现是汇编代码:

    --== Disasm ==--
    00000008 CODE:
                 argcount:
    00000009         LONG: 0L (00 00 00 00)
                 nlocals:
    0000000D         LONG: 0L (00 00 00 00)
                 stacksize:
    00000011         LONG: 5L (05 00 00 00)
                 flags:
    00000015         LONG: 64L (40 00 00 00)
                     (NOFREE)
                 code:
    00000019         STR: 'd\x00\x00d\x01\x00k\x00\x00Z\x00\x00e\x01\x00e\x00\x00i\x02\x00\x83\x01\x00d\x02\x00j\x01\x00o\x16\x00\x01d...' (94 01 00 00 64 00 00 64 01 00 6B 00...)
                     00000000     64 - LOAD_CONST          0000 = 000001B7 INT: -1 (FF FF FF FF)
                     00000003     64 - LOAD_CONST          0001 = 000001BC None (4E)
                     00000006     6B - IMPORT_NAME         0000 = 000002E0 STR: 'sys' (03 00 00 00 73 79 73)
                     00000009     5A - STORE_NAME          0000 = 000002E0 STR: 'sys' (03 00 00 00 73 79 73)
                     0000000C     65 - LOAD_NAME           0001 = 000002E8 STR: 'len' (03 00 00 00 6C 65 6E)
                     0000000F     65 - LOAD_NAME           0000 = 000002E0 STR: 'sys' (03 00 00 00 73 79 73)
                     00000012     69 - LOAD_ATTR           0002 = 000002F0 STR: 'argv' (04 00 00 00 61 72 67 76)
                     00000015     83 - CALL_FUNCTION       0001
                     00000018     64 - LOAD_CONST          0002 = 000001BD INT: 3 (03 00 00 00)
                     0000001B     6A - COMPARE_OP          0001 = "<="
                     0000001E     6F - JUMP_IF_FALSE       0016 = -> 00000037
                     00000021     01 - POP_TOP             
                     00000022     64 - LOAD_CONST          0003 = 000001C2 STR: "Please enter the:\n\t For example:'we..." (29 00 00 00 50 6C 65 61 73 65 20 65...)
                     00000025     47 - PRINT_ITEM          
                     00000026     48 - PRINT_NEWLINE       
                     00000027     65 - LOAD_NAME           0000 = 000002E0 STR: 'sys' (03 00 00 00 73 79 73)
                     0000002A     69 - LOAD_ATTR           0003 = 000002F9 STR: 'exit' (04 00 00 00 65 78 69 74)
                     0000002D     64 - LOAD_CONST          0004 = 000001F0 INT: 2 (02 00 00 00)
                     00000030     83 - CALL_FUNCTION       0001
                     00000033     01 - POP_TOP             
                     00000034     6E - JUMP_FORWARD        0067 = -> 0000009E
                     00000037     01 - POP_TOP             
                     00000038     65 - LOAD_NAME           0000 = 000002E0 STR: 'sys' (03 00 00 00 73 79 73)
                     0000003B     69 - LOAD_ATTR           0002 = 000002F0 STR: 'argv' (04 00 00 00 61 72 67 76)
                     0000003E     64 - LOAD_CONST          0005 = 000001F5 INT: 1 (01 00 00 00)
                     00000041     19 - BINARY_SUBSCR       

    但是看不懂,就算看得懂,也不直观啊,这位作者还明白地说,反编译功能还未实现!

    		if 'D' in sys.argv[1]:
    			print "# --== Decompile ==--"
    			print ">>> not implemented yet"
    

    没办法,下一个(不过UnPyc以后学习了汇编会很有用)

    【3】pyc2py

    github:https://github.com/eduble/pyc2py

    执行时报一个错误:

    [root@netbase3_7road pyc2py-master]# python main.py ./test/log_error.pyc ./test/log_error.py
    Traceback (most recent call last):
      File "main.py", line 39, in ?
        mod = __import__(module_name)
    ImportError: Bad magic number in ./test/log_error.pyc
    

    查了下资料主要是python版本不匹配导致

    即生成pyc的python版本和目前反编译pyc的python版本不一致导致

    如我现在的版本就是python2.4:

    [root@netbase3_7road pyc2py-master]# python 
    Python 2.4.3 (#1, Jan  9 2013, 06:47:03) 
    [GCC 4.1.2 20080704 (Red Hat 4.1.2-54)] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> 
    
    

    安装了python 2.6之后(额外安装,即make altinstall),就解决了这个问题.

    [root@netbase3_7road pyc2py-master]# python2.6 main.py ./test/log_error.pyc > ./test/log_error.py
    [root@netbase3_7road pyc2py-master]# cat ./test/log_error.py
    
    
    
    [root@netbase3_7road pyc2py-master]# 
    

    但是发现反编译没有成功!

    这时候你会恼火吗???

    为什么不再找找?

    【4】解决方案:http://depython.com

    here:

    http://www.codeproject.com/Messages/3506499/how-to-convert-pyc-files-to-py-files-in-python.aspx

    直接有个免费的反编译的网站可以使用:http://depython.com/index.php

    但是注意版本只支持python 2.0到2.6.

    我上传测试pyc之后ok,出来了!!!


    展开全文
  • pyc文件反编译

    千次阅读 2020-10-09 21:03:40
    找一个pyc文件(不是源代码文件),然后搜索相关反编译工具pyc反编译成Python源代码,最好能多找几种工具或者途径达到反编译的目的。 我找的是另一位同学的pyc文件 1、在线反编译 2、Easy Python Decompiler...

    找一个pyc文件(不是源代码文件),然后搜索相关反编译工具把pyc反编译成Python源代码,最好能多找几种工具或者途径达到反编译的目的。

    我找的是另一位同学的pyc文件
    1、在线反编译
    在这里插入图片描述

    2、Easy Python Decompiler反编译工具
    在这里插入图片描述

    但是他的代码可能用的是最新的python环境,Easy Python Decompiler目前只支持带python3.4。但我反编译其他文件没有问题。
    3、使用uncompyle6代码反编译

    import os
    import sys
    
    
    def displayFile(file):
        unPath = sys.executable
        unPath = unPath[0: unPath.rfind(os.sep)]
        newname = file[0:file.rfind('.')] + '.py'
        command = "python -u " + unPath + "\scripts\uncompyle2 " + file + ">" + newname
        try:
            os.system(command)
        except :
            print
            file
    
    
    if __name__ == '__main__':
        # print unPath
        print("init")
        displayFile('D:\\hh.pyc')
        print("finished")
    

    反编译出来的源代码为:

    import string
    base64_charset = string.ascii_uppercase + string.ascii_lowercase + string.digits + '+/'
    a1 = 'A12345678'
    a2 = ''
    a3 = ''
    n1 = len(a1) % 3
    n2 = len(a1) // 3
    for i in range(1, n1):
        a1 += '\x00'
    
    # WARNING: Decompyle incomplete
    import string
    base64_charset = string.ascii_uppercase + string.ascii_lowercase + string.digits + '+/'
    a1 = 'A12345678'
    a2 = ''
    a3 = ''
    n1 = len(a1) % 3
    n2 = len(a1) // 3
    for i in range(1, n1):
        a1 += '\x00'
    
    展开全文
  • 1. 由Python文件编译为...2. .pyc的反编译,使用 uncompyle, 也可以使用网上在线的反编译工具 需要安装 uncompyle pip install uncompyle 演示: 其他命令 uncompyle6 --help 查看帮助 uncompyle6 models.pyc...
  • 批量反编译pyc工具

    2017-06-29 11:26:35
    很好用的批量反编译pyc工具,美中不足是转义后的文件后缀是pyc_dis,需要自己修改一下
  • 1,下载反编译工具:Easy Python Decompiler 下截地址:https://sourceforge.net/projects/easypythondecompiler/ 2,准备好字节码表,方便对照。使用python2.7和python3.6进行获取字节码: 获取方法: import ...
  • PyInstaller Extractor可以提取出PyInstaller所创建的exe可执行文件的资源内容。之后再采用pyc反编译工具即可得到源码。教程:https://blog.luzy.top/posts/3136266189/
  • 很好用的批量反编译pyc工具,美中不足是转义后的文件后缀是pyc_dis,需要自己修改一下,看到了之前编译时留下的pyc文件,灵光一现,试试能不能反编译呢?度娘告诉我,pyc文件的反编译很容易!说明:Easy Python ...
  • ​python反编译工具一抓一大把为什么还要自己搞?python混肴代码可以让部分工具反编译失败,这还不是最难受的,有的人直接修改了python字节码,自己编译了python,会有人这么无聊吗?没错我碰上了碰上这种情况怎么办...
  • pyc文件反编译为py文件

    千次阅读 2020-02-28 15:39:51
    近期时不时需要把工程里的 pyc 文件反编译出来,查看接口函数的逻辑。此前有师兄安利了uncompyle6工具,我使用了几次,发现反编译出来的代码逻辑很清晰,此处我也不能打包票 uncompyle6 反编译出的源码一定无误,...
  • py,反编译三、使用方法 前言 pyc时py编译后的二进制文件 一、py->pyc,编译 1、正常运行py文件即会在__pycache__文件夹下得到xxx…cpython-3x.pyc,即以python3.x版本编译得到的二进制pyc文件 2、使用py_...
  • 使用这个工具十分简单 Easy Python Decompiler v1.2.7z 最高兼容
  • python 将pyc 文件反编译成py源文件

    千次阅读 2017-11-13 11:07:03
    1.下载反编译工具Easy Python Decompiler https://sourceforge.net/projects/easypythondecompiler/ 2.反编译pyc文件 3.将下列代码保存为bat文件,放到使用Easy Python Decompiler转换成功后的文件夹下,双击...
  • pyc文件反编译为python代码

    千次阅读 2019-06-25 15:50:15
    pyc文件反编译为python代码在线工具新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右...
  • Usage: uncompyle2 [OPTIONS]... [ FILE | DIR]...Examples:uncompyle2 foo.pyc bar.pyc # decompile foo.pyc, bar.pyc to stdoutuncompyle2 -o . foo.pyc bar.pyc # decompile to ./foo.dis and ....
  • python反编译.zip

    2019-05-30 19:36:22
    python pyinstaller exe反编译工具:pyinstxtractor.py pyc反编译工具:Easy Python Decompiler
  • pyc文件的反编译工具有uncompile2和decompile等,具体方法比较复杂,教程可以google 前几天发现一个小软件,Easy Python Decompiler v1.2,集成了这两个工具,一键反编译,大家可以去找找。 转载于:...
  • 一、工具  https://github.com/Mysterie/uncompyle2                     -----------------------2016-6-3 11:24:19-- ... source:【1】用uncompyle2 反编译pyc文件  ...
  • Python安全小工具反编译pyc文件

    千次阅读 2018-08-26 12:46:52
    有时需要查看某个Python Web目录内Python源码,但dump下来只有pyc文件而没有py文件,这时需要我们反编译pyc文件为py文件。为了方便就写个脚本遍历目录内的pyc文件并进行反编译。 主要应用Python的第三方uncompyle6...
  • 分类专栏:python汇编/汇编/逆向工程 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/farrellcn/article/details/54908739 ...
  • ​python反编译工具一抓一大把为什么还要自己搞?python混肴代码可以让部分工具反编译失败,这还不是最难受的,有的人直接修改了python字节码,自己编译了python,会有人这么无聊吗?没错我碰上了碰上这种情况怎么办...
  • 下载插件 步骤 List 1 安装: 安装命令:pip install uncompyle; 反编译命令: uncompile -o . 文件名.pyc 注意有两个. 举个????:uncompile -o . 1.pyc 反编译需要注意,先上图;
  • ​python反编译工具一抓一大把为什么还要自己搞?python混肴代码可以让部分工具反编译失败,这还不是最难受的,有的人直接修改了python字节码,自己编译了python,会有人这么无聊吗?没错我碰上了碰上这种情况怎么办...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 121
精华内容 48
关键字:

pyc反编译工具