Carder.life

Carder.life (http://txgate.io:443/index.php)
-   Хакинг. Программирование (http://txgate.io:443/forumdisplay.php?f=27)
-   -   Воруем чужой код. Реверс инжиниринг Python. {Reverse} 2019. (http://txgate.io:443/showthread.php?t=37925)

blackedd 02-19-2025 08:20 PM


http://image.prntscr.com/image/lxXO-...Yp8ylyyO3Q.png
Хола, хацкер, хотел когда-то узнать, что скрывается за скомпилированным приложением? Сегодня мы рассмотрим способ реверса скомпилированного (pyinstaller'ом) exe-шника. Поехали!
Что нам понадобится?
- https://sourceforge.net/projects/pyinstallerextractor/
- https://github.com/rocky/python-uncompyle6
- https://mh-nexus.de/en/hxd/ / Или другой https://www.google.com/search?q=hex+editors редактор.
Для начала скачиваем скрипт Extractor. После устанавливаем Uncompyle6 при помощи pip'a:
Code:
<pre class="alt2" dir="ltr" style="
margin: 0px;
padding: 6px;
border: 1px solid rgb(0, 0, 0);
width: 640px;
height: 34px;
text-align: left;
overflow: auto;
background: rgb(37, 37, 37) none repeat scroll 0% 0%;
border-radius: 5px;
font-size: 11px;
text-shadow: none;">pip install uncompyle6</pre>
https://image.prntscr.com/image/KDNi...f4_MAoJkNg.png
Установка UnCompyle6.
Теперь мы можем приступить к реверсу.
Мне в руки попал РАТника на питоне, скомпилированного pyinstaller'ом. Собственно, порядок действий не будет отличаться от любого другого файла. Приступим.
Сначала нам нужно получить все файлы/библиотеки/dll из исполняемого файла. Для этого нам нужен pyExtractor. Запускаем скрипт следующим образом:
Code:
<pre class="alt2" dir="ltr" style="
margin: 0px;
padding: 6px;
border: 1px solid rgb(0, 0, 0);
width: 640px;
height: 34px;
text-align: left;
overflow: auto;
background: rgb(37, 37, 37) none repeat scroll 0% 0%;
border-radius: 5px;
font-size: 11px;
text-shadow: none;">python pyinstxtractor.py имяфайла.exe</pre>
http://image.prntscr.com/image/UOAkS...cnqnqHqgpQ.png
Пример успешного выполнения.
Рядом с exe-шником создалась папка: File.exe_extracted
http://image.prntscr.com/image/U5Jcn...sa3cFOYI9Q.png
ут, в моём случае мне понадобится файл BlackSec, в ином это будет имя файла без расширения. (К примеру ваш файл назывался build.exe, после Extractor'a конечный файл будет просто build).
Файл BlackSec - pyc без "магического" числа.
pyc - Это скомпилированный байт-код. Если вы импортируете модуль, python построит файл *.pyc, который содержит байт-код, чтобы упростить импорт
Что такое "магическое" число говорить не буду, но вот ссылочка на Вику, она вам всё расскажет.
Нам нужно получить pyc файл для получения кода. Для этого запускаем HEX редактор и переносим туда файл без расширения, в моём случае это BlackSec:
http://image.prntscr.com/image/jBQpW...cYPd629Y7A.png
Сейчас нам нужно присвоить нашему файлу магическое число, его мы возьмём из соседних файлов в папке PYZ-00.pyz_extracted. Копируем любой файл из папки, (я всегда использую__future__.pyc) в HEX редактор:
http://image.prntscr.com/image/FSbco...frYw1f7rZw.png
Теперь нам нужно скопировать байты, в которых содержится магическое число, чтобы всё прошло успешно, нужно чтобы первая строка двух файлов (BlackSec &amp; __future__.pyz) были одинаковыми. Копируем первые 12 байтов:
http://image.prntscr.com/image/RikgA...cBfuXbQ3sQ.png
И вставляем в начало нашего файла:
http://image.prntscr.com/image/iAdrC...lmgqw1EYkw.png
Далее нажимаем на: Файл =&gt; Сохранить как... И сохраняем с расширением .pyc:
http://image.prntscr.com/image/VLJ0L..._2TEfQfeEQ.png
По сути всё практически готово, осталось декомпилировать .pyc файл при помощи uncompyle, для этого в cmd запускаем команду:
Code:
<pre class="alt2" dir="ltr" style="
margin: 0px;
padding: 6px;
border: 1px solid rgb(0, 0, 0);
width: 640px;
height: 34px;
text-align: left;
overflow: auto;
background: rgb(37, 37, 37) none repeat scroll 0% 0%;
border-radius: 5px;
font-size: 11px;
text-shadow: none;">uncompyle6 -o source.py ИмяВашегоФайла.pyc</pre>
http://image.prntscr.com/image/vjjfO...IRQOcLfIMw.png
Всё, возле нашего pyc файла появился файл содержащий код exe-шника.
http://image.prntscr.com/image/8Ym3I...1Pokk1bMWA.png
Mission Passed!
Заключение.
Как видишь, хацкер, python тоже поддаётся декомпиляции. В сторону защиты кода следует использовать обфускаторы/протекторы, для питона порекомендую pyArmor, он превращает код в "непонятный" набор символов.
На этом статья заканчивается, до связи, хацкер.
@ Dark $ide


All times are GMT. The time now is 01:12 PM.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2025, vBulletin Solutions, Inc.