Как понять разобрать по составу слово: Разбор слова по составу

Дизассемблирование

— Как перепроектировать файлы .so, найденные в Android APK?

спросил

Изменено 1 год, 4 месяца назад

Просмотрено 286 тысяч раз

Я знаю, как реконструировать обычные APK-файлы Android с помощью таких инструментов, как APK-tool и dex2jar, но я не знаю, как работать с запутыванием. Может ли кто-нибудь помочь или хотя бы дать несколько указателей? Я знаю, что это в значительной степени составляет самостоятельное обучение, но я действительно не знаю, что искать или где искать. Некоторые примеры были бы действительно полезны. Спасибо!

Редактировать:

Когда я извлекаю все из APK, я получаю несколько файлов SMALI (я пробовал JD-GUI, но строки содержали случайные имена. Вероятно, запутаны с помощью Proguard.), некоторые файлы ресурсов и файлы «.so». в каталоге lib. Как мне проанализировать файл «.so». Я знаю, что файлы SO — это своего рода библиотеки DLL мира Linux, но какие инструменты можно использовать для анализа файлов SO. Любые ссылки на видео будут очень полезны. 🙂

Кроме того, как бы мне обойти, если бы в APK был файл JAR вместо файла SO?

  • дизассемблирование
  • бинарный анализ
  • обфускация
  • android
  • деобфускация

6

Файл .so представляет собой скомпилированную библиотеку, в большинстве случаев из исходного кода C или C++. .so означает Shared Object, это не имеет ничего общего с запутыванием, это просто означает, что кто-то написал части приложения на C.

В некоторых случаях существует существующий код C, и программисту просто проще его построить интерфейс JNI для вызова библиотеки из java; в других случаях программисту нужно преимущество в скорости, которое скомпилированный C имеет по сравнению с java.

И, конечно же, если я хочу скрыть, как работает какая-то часть моего приложения, написав это на C и скомпилировав в .so, его будет намного сложнее отменить.

Если вы хотите перевернуть Android .so, у вас есть следующие варианты:

  • Купить коммерческую версию IDA pro. Демо-версии не подойдут, так как не умеют дизассемблировать код ARM. Это дорогой, но на сегодняшний день лучший инструмент для работы с неизвестным объектным кодом.
  • Если приложение включает в себя версии .so для разного железа и если в нем есть библиотека для андроида на x86, то для его дизассемблирования можно использовать бесплатную версию IDA 5.1.
  • Если у вас есть доступ к системе Linux, получите цепочку инструментов gcc для ARM, включающую objdump, и используйте objdump —disassemble, чтобы получить огромный текстовый файл, содержащий дизассемблированный код. Затем получайте удовольствие от этого текстового файла. Могут быть наборы инструментов gcc для целей ARM, которые также работают в Windows, но я никогда не пробовал.
  • Вы также можете загрузить файл .so на http://onlinedisassembler.com/, чтобы получить дизассемблированный файл, если вы не хотите устанавливать набор инструментов gcc.

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

8

Помимо предложений Гунтрама, попробуйте переназначаемый декомпилятор, также известный как retdec. Он может декомпилировать двоичный файл в код Python или C. По крайней мере, для меня он читается легче, чем чистый ассемблер (и работает для двоичных файлов ARM).

Очень хорошо подходит для черновых набросков общего объекта.

Существует подключаемый модуль для некоторых версий IDA, но основным ограничением является то, что он не поддерживает 64-битный код.

3

Вы также можете попробовать динамический подход, перехватывая API и наблюдая за аргументами и возвращаемыми значениями. Это позволит вам просматривать данные, поступающие в криптографические API, что может очень помочь при работе с сетевыми протоколами. Ознакомьтесь с набором инструментальных средств Frida для кроссплатформенного решения с открытым исходным кодом (Android, iOS, Windows, Mac и Linux). Существует руководство, показывающее, как за несколько минут создать интерактивный инструментарий, который внедряет код в приложение «Yo» на iOS и отображает сетевые подключения с помощью Google Maps.

2

Используйте android-ndk, https://developer.android.com/ndk/downloads/index.html.

Вы можете использовать цепочки инструментов внутри ndk для выполнения желаемого типа дизассемблирования. Например, если я декомпилирую apk и получу из него библиотеку . so, я сделаю:

./android-ndk-r15b/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/bin/arm- linux-androideabi-objdump -T "SAMPLE.so | меньше

Чтобы получить objdump .

Вы также можете реконструировать файлы APK напрямую на устройстве Android.

  1. Часть Java: Показать Java
  2. .so файлы: дизассемблер Android.

( Отказ от ответственности: я разработчик)

Дизассемблировать ЛЮБЫЕ файлы, включая общие библиотеки Android (также известные как файлы .so) (NDK, JNI), файлы Windows PE (EXE, DLL, SYS и т. д.) , исполняемые файлы Linux, объектные файлы, ЛЮБЫЕ файлы, которые вы хотите, такие как изображения, аудио и т. д. (для развлечения) полностью на Android. Дизассемблер на основе Capstone на андроид.

  • Показывает информацию о файлах elf.
  • Показывает таблицу символов (функции или объекты,… имена) файлов elf.
  • Дизассемблирует разделы кода.
  • Имеет различные варианты экспорта разборки. (Перезагружаемый необработанный файл, компилируемый текстовый файл, аналитические текстовые файлы, json и перезагружаемая база данных)
  • Поддерживает проекты.
  • Поддерживает прямой запуск из файловых браузеров
    .
  • Поддерживает многие ABI (arm, x86, x64, MIPS, PowerPC,…)
  • Перейти к адресу по именам символов или шестнадцатеричному адресу.
  • Раскрашивание синтаксиса.
  • Поддержка PE и других форматов bin.
  • При необходимости отсортируйте символы.
  • Не нужно нажимать кнопку Разобрать !
  • Раскрасить инструкции PUSH/POP.
  • Лучше раскрасить инструкции дуги ARM.
  • Добавлено меню Follow Jump для инструкций по прыжкам. ( С BackStack )
  • Может переопределить настройку автоматического синтаксического анализа
  • Вы можете скопировать инструкцию в буфер обмена.
  • Теперь он анализирует IAT, EAT заголовков PE.
  • Исправлены ошибки.
  • РУКА
  • ARM BlackHat
  • Интел
  • Вики

Это приложение использовалось — Замковый камень — Хранение-выборщик — Colorpickerview — Java-binutils — PECOFF4J.

https://reverseengineering.stackexchange.com/a/20124/23870

https://reverseengineering.stackexchange.com/a/18203/23870

Ссылка по теме (тема RE)

2

Вы также можете попробовать инструмент Снеговик: https://derevenets.com/.

Snowman — собственный код декомпилятора C/C++

Он поддерживает архитектуры ARM, x86 и x86-64, как указано на их веб-сайте.

5

Вы можете попробовать гидру. Ghidra — это среда обратного проектирования программного обеспечения (SRE), созданная и поддерживаемая Исследовательским управлением Агентства национальной безопасности.

Эта платформа включает в себя набор полнофункциональных высококачественных инструментов анализа программного обеспечения, которые позволяют пользователям анализировать скомпилированный код на различных платформах, включая Windows, macOS и Linux. Возможности включают разборку, сборку, декомпиляцию, построение графиков и сценариев, а также сотни других функций. Ghidra поддерживает широкий спектр наборов инструкций процессора и исполняемых форматов и может работать как в интерактивном, так и в автоматическом режимах. Пользователи также могут разрабатывать собственные подключаемые модули Ghidra и/или сценарии с использованием Java или Python. ссылка: https://github.com/NationalSecurityAgency/ghidra

2

Согласно этому сообщению в блоге, GikDbg выглядит как мод Ollydbg для отладки собственных библиотек Android.

К сожалению, сайт GikDbg больше не существует.

Создатель frida уже ответил, но я просто хотел добавить, что, в частности, мы можем использовать удобный инструмент frida-trace с файлом . so, например.

 frida-trace -Ui 'nameOfYourLib.so!*' -p 
 

, чтобы динамически видеть, что вызывается (моменты входа и выхода) в этом файле .so во время выполнения, когда вы запускаете приложение в обычном режиме (он будет отфильтровывать только функции в nameOfYourLib.so). Например, это можно использовать в сочетании со статическим дизассемблером, чтобы найти интересные функции для более глубокого изучения.

разборка — Почему я не могу напрямую получить содержимое раздела `.bss`?

спросил

Изменено 8 лет, 11 месяцев назад

Просмотрено 13 тысяч раз

Тест на Linux 32bit.

Я использую эту команду, чтобы получить контекст .text .rodata и .data раздел:

 objdump -s -j . text elf_binary
objdump -s -j .rodata elf_binary
objdump -s -j .data elf_binary
 

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

 objdump -s -j .bss elf_binary
objdump: раздел '.bss' указан в параметре -j, но не найден ни в одном входном файле
 

В принципе, как я могу получить содержимое раздела .bss из двоичного файла ELF?

  • разборка
  • бинарный анализ
  • эльф

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

Посетите страницу Википедии для получения дополнительной информации.

Блок .bss , начинающийся с символа (также называемый сегментом неинициализированных данных — bss — старая инструкция сборки на древнем чипе IBM) раздел должен содержать глобальную переменную и статические переменные неинициализированные или инициализируется значением 0 или NULL.

admin

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *