Сейчас на форуме: Rio, tyns777, zombi-vadim (+6 невидимых) |
eXeL@B —› Программирование —› Декомпилирование python |
. 1 . 2 . >> |
Посл.ответ | Сообщение |
|
Создано: 25 июля 2014 11:19 · Личное сообщение · #1 Помогите пож декомпилировать pyc файлы см вложение, уже голову сломал с ошибкой RuntimeError: Bad magic number in .pyc file 91ef_25.07.2014_EXELAB.rU.tgz - licensemanager.zip |
|
Создано: 25 июля 2014 11:49 · Личное сообщение · #2 |
|
Создано: 25 июля 2014 12:03 · Личное сообщение · #3 |
|
Создано: 25 июля 2014 12:13 · Личное сообщение · #4 |
|
Создано: 25 июля 2014 12:14 · Личное сообщение · #5 Есть полный доступ к серверу На сервере скрипты отрабатывают корректно без ошибок Версия / # python -V Python 2.7.6 Под линуксом но к себе переносил на версию 2.7 питона, ругается Так что нужно запускать на севрере декомпиляторы нашел: 1. EasyPythonDecompiler но он под виндой, и на сервере отработать его не могу 2. https://code.google.com/p/unpyc3/ но он под 3ю версию, под 2,7 пока не переделывал 3 unpyc там нет реаилазована декомпиляция, только дизасемблер, дизасемб проходит только на файле __init__.pyc на остальных ругается на __init__.pyc вот показывает /share/python/site-packages/ni/licensemanager # python /share/python/test/unpyc/UnPyc -d __init__.pyc --== Disasm ==-- 00000008 CODE: argcount: 00000009 LONG: 0L (00 00 00 00) nlocals: 0000000D LONG: 0L (00 00 00 00) stacksize: 00000011 LONG: 1L (01 00 00 00) flags: 00000015 LONG: 64L (40 00 00 00) (NOFREE) code: 00000019 STR: '/\x00\x00d' (04 00 00 00 2F 00 00 64) 00000000 2F 00000001 00 - STOP_CODE 00000002 00 - STOP_CODE 00000003 64 - LOAD_CONST None consts: 00000022 TUPLE: ( 00000027 None (4E) ) names: 00000028 TUPLE: () varnames: 0000002D TUPLE: () freevars: 00000032 TUPLE: () cellvars: 00000037 TUPLE: () filename: 0000003C STR: '/share/python/site-packages/ni/lice...' (39 00 00 00 2F 73 68 61 72 65 2F 70...) name: 0000007A STR: '<module>' (08 00 00 00 3C 6D 6F 64 75 6C 65 3E) firslineno: 00000087 LONG: 1L (01 00 00 00) lnotab: 0000008B STR: '' (00 00 00 00) Куда можно еще комнуть? |
|
Создано: 25 июля 2014 12:19 · Личное сообщение · #6 https://github.com/wibiti/uncompyle2/issues/23 я добавил 62215 надо дальше декомпиль фиксить Code:
Добавлено спустя 2 минуты BoRoV на маршал не ругается, значит 50/50 что не кастомная Добавлено спустя 3 минуты можешь попробовать челу пульнуть на гитхаб, может пофиксит |
|
Создано: 28 июля 2014 08:26 · Личное сообщение · #7 |
|
Создано: 28 июля 2014 11:23 · Личное сообщение · #8 |
|
Создано: 28 июля 2014 12:52 · Личное сообщение · #9 |
|
Создано: 05 февраля 2015 16:30 · Личное сообщение · #10 |
|
Создано: 05 февраля 2015 16:49 · Личное сообщение · #11 |
|
Создано: 05 февраля 2015 17:00 · Личное сообщение · #12 |
|
Создано: 05 февраля 2015 17:07 · Личное сообщение · #13 |
|
Создано: 05 февраля 2015 17:15 · Поправил: VodoleY · Личное сообщение · #14 ну с русским то разобрались. >>проверяет на флаг thread_stopped Инт.. это ж в секции ресурсов все лежит. имхо нет там кода Добавлено спустя 2 минуты reversecode пишет: да есть такой компилируемый питон на скок я помню, питон ток в байткод компилируется.. включая стайклес питон.. ну типа получаются РУС РУО файлы... ----- Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме.... |
|
Создано: 05 февраля 2015 17:29 · Личное сообщение · #15 VodoleY пишет: ну типа получаются РУС РУО файлы... Такие там тоже есть, но это не оно. Я уже опробовал HexRays: Code:
_pyx_n_s__os - объект строки Короче фу такое реверсить, мне в свое время Visual Basic хватило, все апи его знал( |
|
Создано: 05 февраля 2015 17:33 · Личное сообщение · #16 |
|
Создано: 05 февраля 2015 18:04 · Личное сообщение · #17 int пишет: Короче фу такое реверсить, мне в свое время Visual Basic хватило, все апи его знал Там ничего общего с васиком, никто же не кричит фу Qt, фу boost, просто питоновские типы данных. Собиралось скорее всего GCC, стало быть эти же сигнатуры накладывать, тогда читается довольно просто, сами типы можно посмотреть в исходниках питона. Код полностью нативный, там нет байткода, питоновский исходник переводится в c++ и потом собирается со всеми зависимостями. |
|
Создано: 05 февраля 2015 18:12 · Личное сообщение · #18 |
|
Создано: 05 февраля 2015 20:09 · Личное сообщение · #19 reversecode пишет: аналог с васиком корректен Нет, наиболее корректный вариант, это сравнение с бустом, никто же не говорит, что шаблоны это пикод. При компиляции получается 100% нативный код, никакой интерпретации, просто используются питоновские типы, например tuple, dict, но это реализуется в сишке и без питона, при компиляции берется просто питоновская реализация, иначе любое использование чужих классов уже становится васиком. К слову, это далеко не все компиляторы делают и в данном случае не могу со 100 процентной уверенностью сказать, что и у инта так же. Компиляторов прилично наплодили. |
|
Создано: 05 февраля 2015 20:10 · Личное сообщение · #20 |
|
Создано: 05 февраля 2015 22:01 · Личное сообщение · #21 reversecode пишет: я с тобой не согласен Есть язык, есть разные реализации языка и его рантайма, причем разница может быть столь существенная, что общего кроме языка ничего и нет. Например сравнить visual basic и purebasic, у последнего фрондет FASM, полностью нативный и прозрачный код. Сравнить тип tuple, независимо от реализации, будь она на с++ или pascal, tuple, всегда будет tuple и единственным отличием будет язык с реализацией. Для того же питона 100500 реализаций, на базе java vm, .net vm, фронтед gcc, jit на базе llvm. Один язык, разная реализация, разный рантайм. |
|
Создано: 05 февраля 2015 22:11 · Поправил: reversecode · Личное сообщение · #22 |
|
Создано: 05 февраля 2015 23:12 · Личное сообщение · #23 reversecode пишет: если аналогия нейтивного васика == аналогия нейтивного питона В данном случае нативный питон == GCC с реализацией словарей, строк и прочей мишурой. boost::spirit яркий пример, что не все измеряется васиками, используя спирит, запилив питоновские типы, бинарь станет васиком? По поводу хаскеля, то язык функциональный и естественно типы будут другие, будет другой код на выхлопе, но опять же, там ничего васикоподобного нет, тот же linq прекрасно реализовывается в плюсах, недавно на хабре статья была с монадами на плюсах, естественно и нативный выхлоп алгоритмически будет похож.) |
|
Создано: 05 февраля 2015 23:16 · Личное сообщение · #24 |
|
Создано: 06 февраля 2015 01:29 · Личное сообщение · #25 reversecode пишет: то ты знак перепутал, надо != ставить Ничего не перепутал, питоновский код транслируется в pure c\c++ код, а тот в свою очередь собирается GCC, а это уже никак не васик, а вполне себе с\с++ компилятор, который опять же повторюсь, собирает именно сишный исходник, следовательно ни о каком васике тут речи нет, иначе любой слой абстракции в рамках с\с++ это васик. Полученный после транслятора код соответствует стандарту, там нет никаких сторонних препроцессоров и прочих костылей, есть лишь pure c, который собирается GCC или той же студией. Или же записываем все сторонние библиотеки в васик, например тот же Poco, который ни разу не стандартный набор классов. |
|
Создано: 06 февраля 2015 03:00 · Личное сообщение · #26 Бредовый какой-то спор у вас... F_a_u_s_t По твоей логике вот это что? Code:
Вызоы из стандартной библиотеки си++? Оно все равно взаимодействует с питоновским кодом и живет в своих рантаймах. Статическую сборку можно сделать без всей этой мишуры? Нет, т.к. нет это не pure си\си++ ни разу. |
|
Создано: 06 февраля 2015 03:04 · Личное сообщение · #27 |
|
Создано: 06 февраля 2015 21:09 · Поправил: F_a_u_s_t · Личное сообщение · #28 int пишет: Вызоы из стандартной библиотеки си++? Динамическая линковка буста это вызов из стандартной библиотеки с++, а компиляция delphi с динамическим рантаймом это что? чем отличается state_t call_objetc_ref( py_object* _object ) от state_t call_objetc_ref( cpp_object* _object )? Если crt линковать динамически, то она станет васиком, верно? int пишет: Статическую сборку можно сделать без всей этой мишуры? Нет, т.к. нет это не pure си\си++ ни разу. Сначала вопрос, затем предвосхищение, типичная логическая ошибка. Вообще то можно, как можно и сам питон собрать статически, собственно как и пых. В данном случае у тебя просто частный случай, миксед код. reversecode пишет: у тебя все перемешалось, люди, кони,.. еще и кроликов втянул сюда ты даже не понял к чему там сравнение с васиком было зацеплено Вообще то я уже пару раз спроси где именно там васик, вместо прямого ответа, появились какие то пространные мысли, которые я вовсе не озвучивал. Опять же, vcl тебе в пример, линкуется динамически, чем TObject отличается от Py_Object? Покажи мне в коде таблицу байткода или плайн текст питоновского кода, при учете что там eval не используется. Началось сравнение рантаймов, это апишечку из crt я знаю, а вот эта из vcl мне не знакома и стало быть васик. С такой логикой только на фронт. А если еще немного подумать и представить, что это так же можно и статически линковать. Или взять ipython и собрать один бинарь со всем .net окружением. Собирается динамически по одной простой причине, реальный мир это настоящий ужас для перфекциониста и баг может оказаться в любой из библиотек, проще же обновить одну библиотеку, чем пересоберать все окружение. В обще жду конструктивные аргументы в духе это васик, потому что потому и следовательно это васик, а не какие то вбросы фраз. |
|
Создано: 06 февраля 2015 21:36 · Личное сообщение · #29 |
|
Создано: 06 февраля 2015 21:54 · Личное сообщение · #30 int пишет: Хочешь конструктивно? 20 файлов .so. Цена вопроса? Нет, спасибо, там сущий ад, у питона довольно мозгодробительная эмуляция ООП. Тут только делать сигнатуры для IDA и смотреть исходники питона. int пишет: Я не энциклопедия форматов и компиляторов питона. И я говорю про конкретный увиденный код, к чему все эти примеры даны? Примеры были даны на восклицание reversecode python == basic, хотя там ничего общего, с таким успехом и stuxnet написан на basic, собственно в этом весь сыр бор, все сугубо для истины и дзена из любви к искусству. |
. 1 . 2 . >> |
eXeL@B —› Программирование —› Декомпилирование python |