Sumber Belajar‎ > ‎Programming Language‎ > ‎Python‎ > ‎Python BootCamp‎ > ‎Cookbook‎ > ‎

Bagaimana cara decompile file .pyc

Penulis masih mencoba untuk melakukan hal ini, bagi yang ingin mencoba, untuk sementara dapat membaca referensi dibawah ini. Sebagai informasi, .pyc yang saya miliki "sepertinya" dikompilasi menggunakan python 2.7

Percobaan 1, menggunakan unpyclib

Laskar@OpenThinkLabs:$python -m unpyclib.application -Dq table.pyc

__doc__ = 'Generic table model'

------
  File "/usr/local/lib/python2.7/dist-packages/unpyclib/decompile.py", line 1062, in codeDecompile
    stack, curIndent)
  File "/usr/local/lib/python2.7/dist-packages/unpyclib/decompile.py", line 193, in _POP_TOP
    r += ind(curIndent) + str(o) + '\n'
Traceback (most recent call last):
  File "/usr/lib/python2.7/runpy.py", line 162, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "/usr/lib/python2.7/runpy.py", line 72, in _run_code
    exec code in run_globals
  File "/usr/local/lib/python2.7/dist-packages/unpyclib/application.py", line 242, in <module>
    start()
  File "/usr/local/lib/python2.7/dist-packages/unpyclib/application.py", line 225, in start
    print decompiler.decompile(),
  File "/usr/local/lib/python2.7/dist-packages/unpyclib/decompile.py", line 1102, in decompile
    flowGraph.DFADecompile(self)
  File "/usr/local/lib/python2.7/dist-packages/unpyclib/structure.py", line 807, in DFADecompile
    mode='conditional')
  File "/usr/local/lib/python2.7/dist-packages/unpyclib/decompile.py", line 1078, in codeDecompile
    traceback.print_tb(sys.exc_info()[2]) + \
TypeError: cannot concatenate 'str' and 'NoneType' objects

Percobaan 2, menggunakan uncompyle

Berhasil! :) [Update : HASIL TIDAK SEMPURNA]

Jika ingin decompile satu file :

Laskar@OpenThinkLabs: $ uncompyle2 -o tmp/ table.pyc 

Jika ingin docompile seluruh file :

Laskar@OpenThinkLabs: $ uncompyle2 -o tmp/ * 

working directory, adalah direktori tempat file .pyc berada.

Untuk informasi lebih lanjut tentang cara menggunakan uncompyle, tinggal jalankan perintah 

Laskar@OpenThinkLabs: $ uncompyle2 -h


Percobaan 3, menggunakan fupy

Setelah mencoba menggunakan fupy [4] hasilnya sempurna, tidak ada potongan kode yang hilang, jika menggunakan uncompyle2, ditemukan beberapa potongan kode yang hilang, sehingga jika dikompilasi ulang outputnya tidak akan sama. 

Referensi


Comments