πŸ”Ž Как ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠΎΠ΄ .exe Ρ„Π°ΠΉΠ»Π° Python: ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ руководство

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠΎΠ΄ .exe Ρ„Π°ΠΉΠ»Π°, созданного Π½Π° языкС Python, Ρ‚ΠΎ Ρƒ вас ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ нСкоторая ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ. Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° языкС Python компилируСтся Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ (.pyc Ρ„Π°ΠΉΠ»Ρ‹), Π° Π·Π°Ρ‚Π΅ΠΌ упаковываСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ инструмСнтов, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ PyInstaller ΠΈΠ»ΠΈ cx_Freeze, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ исполнимый Ρ„Π°ΠΉΠ» .exe для Windows.

Из-Π·Π° прСобразования ΠΈ ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ исходного ΠΊΠΎΠ΄Π°, просмотр ΠΊΠΎΠ΄Π° .exe Ρ„Π°ΠΉΠ»Π° ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² исходный ΠΊΠΎΠ΄ Π½Π° языкС Python ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ слоТным ΠΈΠ»ΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ.

print("Hello, World!")

ВмСсто просмотра ΠΊΠΎΠ΄Π° .exe Ρ„Π°ΠΉΠ»Π°, рСкомСндуСтся ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ исходному ΠΊΠΎΠ΄Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ссли ΠΎΠ½ доступСн. Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π²Π°ΠΌ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈ внСсти измСнСния, Ссли это Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ.

Π”Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚

Как ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠΎΠ΄ exe Ρ„Π°ΠΉΠ»Π° Python

Вопрос, ΠΊΠ°ΠΊ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠΎΠ΄ исполняСмого Ρ„Π°ΠΉΠ»Π° .exe Π½Π° языкС Python, ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ Ρƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ хотят ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΈΠ»ΠΈ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ исполняСмыС Ρ„Π°ΠΉΠ»Ρ‹ Python ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π΅ содСрТат явного исходного ΠΊΠΎΠ΄Π°, Π΅ΡΡ‚ΡŒ нСсколько способов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π²Π°ΠΌ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ эту Π·Π°Π΄Π°Ρ‡Ρƒ.

1. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π΄Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ

Один ΠΈΠ· популярных способов просмотра ΠΊΠΎΠ΄Π° .exe Ρ„Π°ΠΉΠ»Π° Π½Π° языкС Python - это использованиС дСкомпиляции. ДСкомпиляция - это процСсс прСобразования скомпилированного ΠΊΠΎΠ΄Π° ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² исходный ΠΊΠΎΠ΄. БущСствуСт нСсколько инструмСнтов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π΄Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ исполняСмыС Ρ„Π°ΠΉΠ»Ρ‹ Python.

Один ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ… инструмСнтов - uncompyle6. Он позволяСт Π΄Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ скомпилированныС ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Python 2.x ΠΈ 3.x ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² ΠΈΡ… исходный ΠΊΠΎΠ΄. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ uncompyle6, установитС Π΅Π³ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

pip install uncompyle6

ПослС установки uncompyle6 Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ для дСкомпиляции .exe Ρ„Π°ΠΉΠ»Π°:

uncompyle6 file_name.exe

Π—Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ "file_name.exe" Π½Π° имя вашСго исполняСмого Ρ„Π°ΠΉΠ»Π°. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ исходный ΠΊΠΎΠ΄ Python, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ.

2. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ дизассСмблированиС

Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ способ просмотра ΠΊΠΎΠ΄Π° исполняСмого Ρ„Π°ΠΉΠ»Π° .exe Π½Π° языкС Python - это использованиС дизассСмблирования. ДизассСмблированиС - это процСсс прСобразования машинного ΠΊΠΎΠ΄Π° ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² ассСмблСрный ΠΊΠΎΠ΄ ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΡƒΡŽ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ.

Для дизассСмблирования исполняСмого Ρ„Π°ΠΉΠ»Π° Python ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ инструмСнт dis. Π­Ρ‚ΠΎΡ‚ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ языка Python позволяСт Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ассСмблСрный ΠΊΠΎΠ΄ ΠΈΠ· скомпилированного Ρ„Π°ΠΉΠ»Π°. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ dis, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ шаги:

import dis

def main():
    # Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° исполняСмого Ρ„Π°ΠΉΠ»Π°
    with open('file_name.exe', 'rb') as file:
        data = file.read()

    # Π”Π΅ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π°Π½Π°Π»ΠΈΠ· Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π°
    bytecode = dis.Bytecode(data)
    for instr in bytecode:
        print(instr)

Π—Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ "file_name.exe" Π½Π° имя вашСго исполняСмого Ρ„Π°ΠΉΠ»Π°. ПослС запуска скрипта Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ассСмблСрный ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдставляСт Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

3. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ

Если Π²Π°ΠΌ Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Ρ‹ΠΉ исходный ΠΊΠΎΠ΄ ΠΈΠ· исполняСмого Ρ„Π°ΠΉΠ»Π° .exe, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ для изучСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠžΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ - это инструмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Π²Π°ΠΌ шаг Π·Π° шагом ΠΈΡΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, состояниС памяти ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ инструкций.

Для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ исполняСмого Ρ„Π°ΠΉΠ»Π° Python Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ pdb. Pdb являСтся стандартным ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ языка Python ΠΈ позволяСт Π²Π°ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ пошагово ΠΈ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅ состояниС. Π’ΠΎΡ‚ ΠΊΠ°ΠΊ это ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ:

import pdb

def main():
    # ΠžΡ‚Π»Π°Π΄ΠΊΠ° исполняСмого Ρ„Π°ΠΉΠ»Π°
    pdb.run('file_name.exe')

Π—Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ "file_name.exe" Π½Π° имя вашСго исполняСмого Ρ„Π°ΠΉΠ»Π°. Запустив скрипт, Π²Ρ‹ смоТСтС пошагово Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ состояниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ Π΅Π΅ Ρ€Π°Π±ΠΎΡ‚Ρƒ.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π₯отя исполняСмыС Ρ„Π°ΠΉΠ»Ρ‹ Python ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π΅ содСрТат явного исходного ΠΊΠΎΠ΄Π°, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ способы просмотра ΠΈ изучСния ΠΈΡ… Ρ€Π°Π±ΠΎΡ‚Ρ‹. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ инструмСнтов, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ uncompyle6, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ исходный ΠΊΠΎΠ΄ ΠΈΠ· скомпилированного Ρ„Π°ΠΉΠ»Π°. ДизассСмблированиС с использованиСм модуля dis ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π²Π°ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ассСмблСрный ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. И Π½Π°ΠΊΠΎΠ½Π΅Ρ†, ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ pdb позволяСт Π²Π°ΠΌ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ пошагово.

НадСюсь, эта ΡΡ‚Π°Ρ‚ΡŒΡ ΠΏΠΎΠΌΠΎΠ³Π»Π° Π²Π°ΠΌ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ, ΠΊΠ°ΠΊ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠΎΠ΄ исполняСмого Ρ„Π°ΠΉΠ»Π° .exe Π½Π° языкС Python! Π£Π΄Π°Ρ‡ΠΈ Π² ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠΈ ΠΈ Π°Π½Π°Π»ΠΈΠ·Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ!

Π’ΠΈΠ΄Π΅ΠΎ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

РСвСрсинг python ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΏΠΎΡ‡Π΅ΠΌΡƒ python Π½Π΅ бСзопасСн

Python Π² .EXE β–Ί КАК?

Python Π² EXE

ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ:

🐍 Какой Python ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для Windows 7?

πŸ” Как Π΄Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ exe python: Π»Π΅Π³ΠΊΠΎ ΠΈ быстро πŸ‘¨β€πŸ’»

РСшСниС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ name is not defined Π² Python: Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ?

πŸ”Ž Как ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠΎΠ΄ .exe Ρ„Π°ΠΉΠ»Π° Python: ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ руководство

Как ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρƒ-ΠΊΠ»ΠΈΠΊΠ΅Ρ€ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅: 10 простых шагов для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

🎨 Как Π½Π°Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ Π² Python: пошаговоС руководство πŸ–ŒοΈ

πŸ” Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ пустой массив Π² Python: простой способ