eXeLab
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
обновлён 2 декабря!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Русский / Russian English / Английский

Сейчас на форуме: parfetka (+4 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS · SVN ·

 eXeL@B —› Софт, инструменты —› Retargetable Decompiler
Посл.ответ Сообщение


Ранг: 748.2 (! !)
Статус: Участник
bytecode!

Создано: 27 января 2014 15:31 New!
Цитата · Личное сообщение · #1

Вроде не было ещё.
Features

Handles all the commonly used file formats (ELF, PE).
Currently supports the MIPS, ARM, and Intel x86 architectures.
Can decompile to two output high-level languages: C and a Python-like language.
Compiler and packer detection.
Extraction and utilization of debugging information (DWARF, PDB).
Signature-based removal of statically linked library code.
Reconstruction of functions, high-level constructs, types, etc.
Generation of call graphs, control-flow graphs, and various statistics.
It is actively developed.

Работает online:
http://decompiler.fit.vutbr.cz/decompilation/

Попробовал на очень простом рандомном примере, скомпиленном в GCC: http://pastebin.com/Dv8VgNTr
На дефолтных настройках обламывается на этапе data flow analysis =\

С другим простым примером справился, на выходе получился неплохой результат, похожий на рейсовский, но не рейсовский.


Ранг: 1015.9 (!!!!)
Статус: Участник

Создано: 27 января 2014 15:59 · Поправил: reversecode New!
Цитата · Личное сообщение · #2

его недавно пиарили
но декомпилить онлайн это не то, и на реальных примерах он либо падает либо таймаут в декомпиляции.
авторы сказали что тем кто зарегистрируется будет выделятся больше времени
но все равно не более чем игрушка

подождем когда может полный пакет где то уплывет

Ранг: 53.9 (постоянный)
Статус: Участник

Создано: 27 января 2014 16:00 New!
Цитата · Личное сообщение · #3

Даже слабо обфусцированные ехешники разобрать не может.
на анализе CFG помирает.


Ранг: 748.2 (! !)
Статус: Участник
bytecode!

Создано: 28 января 2014 19:09 New!
Цитата · Личное сообщение · #4

Отписал им пару багрепортов, довольно быстро и вежливо ответили, что C++ у них сейчас не в основном приоритете, мол попробуйте C версию файлов декомпильнуть. Так же говорят, что поправят эти баги в версии 1.6, радует, что они активно его пилят.


Ранг: 1015.9 (!!!!)
Статус: Участник

Создано: 28 января 2014 19:13 New!
Цитата · Личное сообщение · #5

на х эта онлайн декомпиляция нужна
спроси когда готовый бирань дадут что бы локально запускать можно было


Ранг: 1015.9 (!!!!)
Статус: Участник

Создано: 10 октября 2015 14:23 · Поправил: 10 октября 2015 14:25 reversecode New!
Цитата · Личное сообщение · #6

обновился 5 октября

New Version: 2.1

We are proud to inform you that we have made a new version of our retargetable decompiler! Among the main features of this release belong a new instruction-decoding algorithm, improved detection of C++ classes and functions, improved decompilation of programs using wide strings or functions from the Windows API, and improved annotations (comments) in the generated high-level language.


Code:
  1. A list of changes:
  2. •Added a new instruction-decoding algorithm. The new algorithm is more precise and requires less memory.
  3. •Added basic support for decompilation of COFF binary files, e.g. Windows object files (*.o).
  4. •Added a new optimization of comparisons with boolean literals. This optimization simplifies code that performs comparisons to true/false.
  5. •Improved detection of C++ classes. Our decompiler is now able to reconstruct class hierarchies, virtual-method tables, and recognize constructors, destructors, and virtual member functions. All these pieces of information are emitted as comments in the generated high-level language.
  6. •Improved decompilation of ELF binary files containing segments instead of sections.
  7. •Improved decompilation of PE binary files containing delayed imports.
  8. •Improved decompilation of programs that use functions from the standard C mathematical library (math.h).
  9. •Improved decompilation of shared (*.so) and dynamic (*.dll) libraries.
  10. •Improved decompilation of programs that use wide strings.
  11. •Improved decompilation of programs that use functions from the Windows API.
  12. •Improved decompilation of UPX-packed programs. Furthermore, we newly support unpacking of several UPX modifications.
  13. •Improved detection of the tool used to create the input binary file (e.g. compiler and packer), including detection whether the input file contains bytecode. Keep in mind that our machine-code decompiler may produce inaccurate results when decompiling bytecode.
  14. •Improved annotations (comments) in the generated high-level language: ◦Functions are now divided into several categories: user-defined, statically linked, dynamically linked, system-call, and instruction-idiom functions.
  15.      - Local variables that were created from global variables (e.g. registers) now include the name of the global variable in a comment.
  16.      - Register names now correspond to real register names (e.g. eax or ebx on Intel x86). Previously, we emitted our internal names.
  17.      - Goto-label addresses now correspond to addresses in the input binary file.
  18.      - The end address of a function is now the address of the last byte of the function (previously, it was the address of the first byte of the next function).
  19.  
  20. •Slightly improved reconstruction of for loops.
  21. •Selective decompilation is now less aggressive in terms of elimination of stack accesses. This change ensures that important stack accesses (such as loading of string literals) are kept in the generated source code.
  22. •Speeded up generation of the target high-level language when decompilation optimizations are disabled.
  23. •The decompiler may now produce warnings. They are shown in the decompilation log when decompiling through our decompilation web service.
  24. •Changes in our REST API:
  25.     -Added a new key to decompilation phases: warnings. It represents a list of warnings (strings) that were produced by the decompiler in the given phase.
  26.  
  27. •Many bug fixes.

| Сообщение посчитали полезным: 4kusNick, sendersu, Artem_N, t0ShA



Ранг: 1015.9 (!!!!)
Статус: Участник

Создано: 25 августа 2016 11:00 · Поправил: 25 августа 2016 11:02 reversecode New!
Цитата · Личное сообщение · #7

плагин к иде они все так же к ихнему апи сервису привязали ? стяните кому не лень глянуть

New Version: 2.2
We are proud to release a brand new version of the retargetable decompiler. Among its main features are a decompilation plugin for the IDA disassembler, implementation of a loader for all the supported file formats, and added support for decompilation of archives, object files, and files in the Intel HEX format.

Code:
  1. A list of changes:
  2. •Publicly released an experimental version of our decompilation plugin for the IDA disassembler.
  3. •Implemented a loader for all the supported file formats, which improves decompilation results.
  4. •Added support for decompilation of archives (ar format) and object files. Archives are statically linked libraries, commonly ending with .or .lib.
  5. •Added support for decompilation of files in the Intel HEX format.
  6. •Added detection of various YARA patterns (e.g. used cryptographic constants). Their presence is used to improve decompilation results. They are shown in comments in the generated C source code.
  7. •Improved unpacking of UPX-packed binaries.
  8. •Improved recognition of statically linked code.
  9. •Improved reconstruction of return types and arguments for external functions.
  10. •Reworked how raw machine code is decompiled so you no longer have to select a file format.
  11. •Changes in our fileinfo service:
  12.      It can now emit the output in the JSON format. Set "Output format" to "JSON" via settings when using the service.
  13.      It now produces more information about input files. For example, it now includes hashes (file, sections, imports), relocation tables for the COFF format, detected YARA patterns (e.g. used cryptographic constants), and information about resources and certificates.
  14. •Changes in our REST API:
  15.      Added support for decompilation of files in archives (ar format). To decompile a file from an archive, use the bin mode and pass either the index of the file in the archive (ar_index) or its name (ar_name).
  16.      Added support for decompilation of files in the Intel HEX format. To decompile such files, use the bin mode and pass the architecture and endianness of the machine code inside the file.
  17.      The raw_entry_point and raw_section_vma parameters in raw decompilations no longer accept the default value. In both cases, you have to explicitly pass an address.
  18.      The raw_endian parameter was renamed to endian. Use of the original name is still supported, but it is deprecated.
  19.      It is no longer required to set file_format in raw decompilations. When given, it will be ignored.
  20.      It is no longer possible to force an architecture when decompiling a file in the bin mode. The architecture is now detected automatically from the input file.
  21.      Compiler-optimization levels can now be also specified without the leading dash (e.g. you can pass O1 instead of -O1).
  22.      Added a new optional parameter output_format to the fileinfo service. You can use it to obtain the output in the JSON format. A related change is that the extension of the output file now depends on the output format.
  23. •Changes in our IDA plugin:
  24.      Added support for decompilation of COFF object files.
  25.      Added support for decompilation of Intel HEX files.
  26.      Added support for decompilation of files containing just raw machine code.
  27.      Added generation of IDA comments into C files generated by full decompilation.
  28.      The plugin no longer performs automatic decompilation of the opened file upon the start of IDA.
  29.      The plugin no longer ignores statically linked functions when selective decompilation is invoked through IDA.
  30.      The plugin does not allow decompilation of non-existing files like objects extracted from archives.
  31.      The plugin does not allow decompilations that it cannot properly handle.
  32. •Many bug fixes.

Ранг: 281.6 (наставник)
Статус: Участник
Destroyer of protectors

Создано: 25 августа 2016 11:07 New!
Цитата · Личное сообщение · #8

reversecode пишет:
плагин к иде они все так же к ихнему апи сервису привязали ?

We have made available an experimental version of our IDA plugin to registered users. It allows you to decompile files opened in the IDA Pro disassembler via our online decompilation service.


Ранг: 1015.9 (!!!!)
Статус: Участник

Создано: 25 августа 2016 11:19 New!
Цитата · Личное сообщение · #9

да я читать умею, это было еще в первой версии, но все же в душе надеюсь что хотя бы большую часть кода перенесли в плагин а не все тупо по айпи сервису
но для стянуть нужно региться, мне лень

Ранг: 281.6 (наставник)
Статус: Участник
Destroyer of protectors

Создано: 25 августа 2016 13:05 New!
Цитата · Личное сообщение · #10

reversecode пишет:
да я читать умею, это было еще в первой версии, но все же в душе надеюсь что хотя бы большую часть кода перенесли в плагин а не все тупо по айпи сервису
но для стянуть нужно региться, мне лень

сниффер говорит, что на сервер отправляется exe, а затем принимается полный листинг. всё в онлайне.


Ранг: 990.3 (! ! !)
Статус: Модератор
Author of DiE

Создано: 25 августа 2016 14:00 New!
Цитата · Личное сообщение · #11

обновился вот такой https://sourceforge.net/projects/decompiler/
вроде не одно и тоже, но странно почему почти одновременно? совпадение?)))


Ранг: 1015.9 (!!!!)
Статус: Участник

Создано: 25 августа 2016 14:44 New!
Цитата · Личное сообщение · #12

нее реко постоянно апдейтится и он на сишарпе, а ретдек на основе llvm


Ранг: 1015.9 (!!!!)
Статус: Участник

Создано: 12 декабря 2017 23:05 New!
Цитата · Личное сообщение · #13

https://github.com/avast-tl/retdec

| Сообщение посчитали полезным: shellstorm, plutos, Bronco


Ранг: 0.0 (гость)
Статус: Участник

Создано: 12 декабря 2017 23:22 New!
Цитата · Личное сообщение · #14

reversecode пишет: https://github.com/avast-tl/retdec

Ееее, дождался открытия.


Ранг: 1015.9 (!!!!)
Статус: Участник

Создано: 13 декабря 2017 16:35 New!
Цитата · Личное сообщение · #15

https://retdec.com/web/files/publications/retdec-slides-botconf-2017.pdf

Ранг: 580.2 (!)
Статус: Модератор

Создано: 13 декабря 2017 17:45 New!
Цитата · Личное сообщение · #16

Собрал утили под винду64. Если у кого время есть соберите плаг.

Ранг: 53.9 (постоянный)
Статус: Участник

Создано: 13 декабря 2017 21:25 New!
Цитата · Личное сообщение · #17

Проверил его в деле.
Что хорошо оптимайзит/сворачивает:
1) Мертвый код
2) Математику

Где есть ошибки:
1) Самомодифицирующийся код
2) Хитрая математика
3) Различные ассемблерные трюки.
Вышеперечисленное приводит к неверной декомпиляции и соответственно декомпиленный код будет выдавать неверный результат или же приводить к ACCESS VIOLATION.
Проверил на самописных примерах которые набросал в студии.

На данном этапе для продакшена нет смысла использовать.

| Сообщение посчитали полезным: Bronco



Ранг: 274.9 (наставник)
Статус: Участник
Advisor

Создано: 13 декабря 2017 21:56 · Поправил: Bronco New!
Цитата · Личное сообщение · #18

del


Ранг: 1015.9 (!!!!)
Статус: Участник

Создано: 13 декабря 2017 22:40 New!
Цитата · Личное сообщение · #19

что греха таить, нет и не будет замены хексрею
единственное что у него сильнее по сравнению с рейсом, это ир+оптимизатор llvm
но на одном нём никуда не выедешь

еще народ пишет что мемори лик есть --> Link <--

Ранг: 53.9 (постоянный)
Статус: Участник

Создано: 17 декабря 2017 12:18 · Поправил: deniskore New!
Цитата · Личное сообщение · #20

Bronco помню, что просил примеры, но не было времени.
Проверил еще на косяки.
Неверно декомпилит работу с флагами.
В некоторых случаях в декомпилированном файле он вставляет вызов определенных ассемблерных команд, через asm вставку, но при работе с EFLAGS такого не происходит. Логика кода будет меняться и работать как нужно декомпиленный код не будет.
Code:
  1. DECLSPEC_NOINLINE uint32_t test()
  2. {
  3.          printf("started\n");
  4.          __asm
  5.          {
  6.                  mov ah, 46h
  7.                  sahf
  8.                  xor eax,eax
  9.                  pushf
  10.                  pop ax
  11.                  add eax, 0xFFFFAAAA
  12.          }
  13. }
  14.  
  15. int32_t decompiled(void) {
  16.          // entry
  17.          function_401060((int32_t)"started\n");
  18.          return -0x5510;
  19. }



Итого:
1) Ошибки при декомпиляции самомодифицирующегося кода (смотрите 27 комментарий для понимания о чем идет речь)
2) Ошибки при декомпиляции SSE2-SSE4.2 математика (при использовании intrinsic-ов в студии)
3) Ошибки при декомпиляции использования EFLAGS (чтение запись и затем использование результата)
4) Ошибка при декомпиляции asm трюков.
5) Ошибка при декомпиляции хитрых примеров с использованием SEH/VEH. (Декомпилер оптимизирует слишком агрессивно)
На самом деле список ошибок можно расширить.

Еще я не проверял ARM 32 битный, думаю там косяков будет прилично.

| Сообщение посчитали полезным: Bronco, SReg


Ранг: 43.4 (посетитель)
Статус: Участник

Создано: 17 декабря 2017 14:55 New!
Цитата · Личное сообщение · #21

deniskore пишет:
1) Ошибки при декомпиляции самомодифицирующегося кода.

deniskore пишет:
4) Ошибка при декомпиляции asm трюков.

Бред какой-то. Причем тут декомпиляция вообще?
Вы случайно не пробовали Сишным компилятором программульку на Коболе или Фортране покомпилировать? Иль хотя бы исходники на Vbasic подсуньте!!!
И что получается?...
Попробуйте представить общественности исходный код на ЯВ, после трансляции которого (любым существующим в настоящее время компилятором) будет самомодифицирующийся код!!!
Как нароете - можно выставлять претензии...

| Сообщение посчитали полезным: shellstorm


Ранг: 0.0 (гость)
Статус: Участник

Создано: 17 декабря 2017 15:10 New!
Цитата · Личное сообщение · #22

DrVB_5_6 пишет: Бред какой-то. Причем тут декомпиляция вообще?

+1. Причем здесь какие то "трюки" если это декомпилятор, если ломается граф, значит нужно фиксить построение графа, если неверно восстанавливает какую то конструкцию следовательно нужно фиксить или добавлять паттерн для распознавания подобных конструкций. Касательно оптимизации здесь даже не смешно, причем декомпилятор если оптимизирует llvm, достаточно отключить оптимизацию и будет идти весь поток со всем трешем. Здесь можно сказать лишь емкое мда.


Ранг: 274.9 (наставник)
Статус: Участник
Advisor

Создано: 17 декабря 2017 15:41 · Поправил: Bronco New!
Цитата · Личное сообщение · #23

shellstorm пишет:
Причем здесь какие то "трюки"

Code:
  1. MOV WORD PTR [R13 + 0x170], 0x5A80
  2. ...
  3. XOR DI, DI
  4. ADD DI, WORD PTR [R13 + 0x170]
  5. SHLD DI, DI, A
  6. SHLD DI, DI, 4
  7. PUSH RDX
  8. MOV DX, DI
  9. NOT DI
  10. OR DX, FF1E
  11. OR DI, E1
  12. AND DX, DI
  13. XOR DX, FFFF
  14. MOV DI, DX
  15. POP RDX
  16. PUSH R12
  17. MOV R12W, DI
  18. NOT DI
  19. OR R12W, 4DFF
  20. PUSH RAX
  21. MOV AX, B200
  22. AND AX, DI
  23. ADD DI, B200
  24. SUB DI, AX
  25. POP RAX
  26. PUSH RSI
  27. MOV SI, R12W
  28. AND SI, DI
  29. XCHG R12W, SI
  30. POP RSI
  31. NOT R12W
  32. MOV DI, R12W
  33. POP R12
  34. SHLD DI, DI, C
  35. SHRD DI, DI, D
  36. AND DI, 7FFF
  37. ...
  38. PUSH RCX
  39. ROR RCX, 10
  40. POP RCX
  41. CMOVB DX, WORD PTR DS:[R13 + 170]

DrVB_5_6 пишет:
Причем тут декомпиляция вообще?

хм...а разве в проекте есть транслятор в асм?
собственно задача топа обозначить возможности сабжа, и лучше чем на примерах способа нет.
господа какашки оставте быдловатому хамлО, его и так хватает.

Ранг: 43.4 (посетитель)
Статус: Участник

Создано: 17 декабря 2017 16:12 New!
Цитата · Личное сообщение · #24

Bronco пишет:
хм...а разве в проекте есть транслятор в асм?

А у Вас с логикой проблем нет?
Все почему-то думают, что как в довольно примитивном "Нех-Rays" что ни подсунь, он тебе какую-нибудь хрень выплюнет.
Я ж в предыдущем посте написал: предоставьте исходник на ЯВ, а затем результат компиляции.
Тогда и будем обсуждать проблемы декомпиляции.

А то какой-нибудь клоун возьмёт NotePad и начинает затевать базар, что у этого поделия нет совсем функционала, который должен быть у обычной IDE.

Bronco пишет:
господа какашки оставте хамлу, его и так хватает.

А это Вы о чем?
Вроде пока ничего подобного (по крайней мере) в предыдущих 2-3 постах не наблюдалось!

| Сообщение посчитали полезным: difexacaw


Ранг: 0.0 (гость)
Статус: Участник

Создано: 17 декабря 2017 16:18 New!
Цитата · Личное сообщение · #25

Bronco пишет: Причем здесь какие то "трюки"

Засуньте в рельсы хотя бы морфин и рельсы внезапно соснут, снимать обфускацию или заниматься девиртуализацией это вообще не задача декомпилятора, если хочется чего то странного, так исходники открыты и более того, они неплохо написаны, добавьте паттерны и будет распознавать странное.


Ранг: 274.9 (наставник)
Статус: Участник
Advisor

Создано: 17 декабря 2017 16:41 · Поправил: Bronco New!
Цитата · Личное сообщение · #26

shellstorm пишет:
Засуньте в рельсы хотя бы морфин и рельсы внезапно соснут,

энджой, для языка общения который даже не третий, оборот речи очень даже не плохой
по сабжу пока интересует оптимизация и трансляция псевдокода, де компиляцию в данном контексте воспринимаю не более, чем для комфорта чтения выхлопа на языке высокого уровня.
ОпенСорс не спорю, но проект большой, и модули (та же llvm) заточены только под него.
Вот вникать в сорцы глубже, времени пока нет.
DrVB_5_6 пишет:
А это Вы о чем?

Да всё о том же. указать ошибку оппоненту, можно разными способами, но применять метод базарных торгов, не самый лучший выбор.

Ранг: 53.9 (постоянный)
Статус: Участник

Создано: 17 декабря 2017 16:48 · Поправил: deniskore New!
Цитата · Личное сообщение · #27

DrVB_5_6 пишет:
Бред какой-то. Причем тут декомпиляция вообще?
Вы случайно не пробовали Сишным компилятором программульку на Коболе или Фортране покомпилировать? Иль хотя бы исходники на Vbasic подсуньте!!!
И что получается?...
Попробуйте представить общественности исходный код на ЯВ, после трансляции которого (любым существующим в настоящее время компилятором) будет самомодифицирующийся код!!!
Как нароете - можно выставлять претензии...

Вы вообще сабж "трогали"?
Обьясняю для тех кто не понял, что имелось ввиду под самомодифицирующимся кодом.
Есть софт у которого написан свой декриптор+распаковщик кода, так вот функции распаковки и модификации кода декомпилированы этим инструментом неверно, если я скопипастю код который он сгенерил, ничего работать не будет. Хекс-рейс на этом же софте отрабатывает нормально, с небольшими допилами кода.

Ранг: 0.0 (гость)
Статус: Участник

Создано: 17 декабря 2017 16:50 New!
Цитата · Личное сообщение · #28

Bronco пишет: энджой, для языка общения который даже не третий, оборот речи очень даже не плохой

Дуров со своим детищем сильно подтянул знания языка, иногда в падежах путаюсь, но это уже несущественно.

Bronco пишет: ОпенСорс не спорю, но проект большой, и модули (та же llvm) заточены только под него.

Нет, проект средненький и читается легко, касательно качества декомпилятора, это один из лучших паблик декомпиляторов и лучший среди открытых, как в плане выхлопа, так и в плане качества кода, а еще проект модульный, что очень удобно для того, чтобы тырить код в свой проект.
Хейт в целом удивил, учитывая, что рельсы обламываются даже на простом коде и без ручного напильника на говнокоде работает чуть лучше чем никак.

| Сообщение посчитали полезным: Bronco, r_e



Ранг: 542.9 (!)
Статус: Участник
_Вечный_Студент_

Создано: 23 марта 2019 07:59 New!
Цитата · Личное сообщение · #29

retdec обновился до версии 3.3
В числе изменений пожалуй самое интересное, на мой взгляд:
Added basic support for decompilation of x86-64 binaries (previously, RetDec supported only 32b Intel x86).


--> RetDec v3.3<--

| Сообщение посчитали полезным: mak

 eXeL@B —› Софт, инструменты —› Retargetable Decompiler

Оригинальный DVD-ROM: eXeL@B DVD !

Вы находитесь на форуме сайта EXELAB.RU
Проект ReactOS