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

ВИДЕОКУРС ВЗЛОМ
выпущен 8 мая!


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

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

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

 eXeL@B —› Софт, инструменты —› GHIDRA software reverse engineering (SRE) suite of tools
<< . 1 . 2 . 3 . 4 . 5 . >>
Посл.ответ Сообщение


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

Создано: 6 марта 2019 04:20 · Поправил: DimitarSerg New!
Цитата · Личное сообщение · #1



A software reverse engineering (SRE) suite of tools developed by NSA's Research Directorate in support of the Cybersecurity mission

It helps analyze malicious code and malware like viruses, and can give cybersecurity professionals a better understanding of potential vulnerabilities in their networks and systems.


GHIDRA 9.0.2 released !
--> Changelog <--
--> Download <--
--> GHIDRA Sources [github] <--

--> CheatSheet: <--

--> Презентация с RSA <--

--> Twitter от имени гидры: <--
--> Онлайн курсы: <--
--> Документация по API <--

--> Daenerys <-- is an interop framework that allows you to run IDAPython scripts under Ghidra and Ghidra scripts under IDA Pro with little to no modifications.
--> FindCrypt - Ghidra Edition <--
--> An Abstract Interpretation-Based Deobfuscation <--

--> Канал гидры на youtube: <--
Список видео на канале:
Code:
  1. 1. Ghidra quickstart & tutorial: Solving a simple crackme
  2. 2. Reverse engineering with #Ghidra: Breaking an embedded firmware encryption scheme
  3. 3. Reversing WannaCry Part 1 in Ghidra

--> GHIDRA | Reverse Engineering a PWN Challenge <--

--> Модернизация GHIDRA. Загрузчик для ромов Sega Mega Drive <--
--> Хакер - Ghidra vs crackme. Обкатываем конкурента IDA Pro на примере решения хитрой крэкми с VM <--
--> Reverse Engineering Gootkit with Ghidra Part I <--
--> A few Ghidra tips for IDA users, part 0 - automatic comments for API call parameters <--

| Сообщение посчитали полезным: SReg, sefkrd, CyberGod, Vnv, Gideon Vi, cppasm, mak, v00doo, Rio, Orlyonok, sergio12, kp0m, memadm



Ранг: 438.2 (мудрец)
Статус: Участник
_Вечный_Студент_

Создано: 8 марта 2019 04:03 · Поправил: plutos New!
Цитата · Личное сообщение · #2

ZaZa пишет:
разумеется, с целью все той же отладки


--> похоже, что не все с этим согласны<--.


Ранг: 184.4 (ветеран)
Статус: Участник

Создано: 8 марта 2019 04:14 New!
Цитата · Личное сообщение · #3

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

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



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

Создано: 8 марта 2019 05:53 New!
Цитата · Личное сообщение · #4

f13nd пишет:
где надо ручищами пробрасывать порты


upnp ) но, да, пугают пьяного ежа голым задом.

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


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

Создано: 8 марта 2019 09:34 · Поправил: kunix New!
Цитата · Личное сообщение · #5

f13nd пишет:
Учитывая то, что большинство подключены к интернетам через роутер, где надо ручищами пробрасывать порты, чтобы попасть в них из интернетов, так себе сенсация.

как насчет DNS rebinding?


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

Создано: 8 марта 2019 16:45 New!
Цитата · Личное сообщение · #6

Ghidra: A quick overview for the curious --> Link <--

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



Ранг: 184.4 (ветеран)
Статус: Участник

Создано: 9 марта 2019 09:27 New!
Цитата · Личное сообщение · #7

Начал делать (верней на 2/3 примерно сделал) процессорный модуль на трикор. Используемый там движок sleigh немного капризный и ошибок не прощает, зато почти не оставляет возможности ошибиться. В целом интересная штука. Нашлось несколько неверно раскодируемых идой форматов инструкций и одна в trace32. Если не останавливаться просто на дизассемблере и немного подразвить модуль, можно организовать декомилятор. Своими руками. Без пиратского хексрейза, карл. Вы все еще смеетесь над фразой "убийца иды"?

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


Ранг: -10.0 (нарушитель)
Статус: Участник

Создано: 9 марта 2019 10:03 New!
Цитата · Личное сообщение · #8

f13nd пишет:
Если не останавливаться просто на дизассемблере и немного подразвить модуль, можно организовать декомилятор. Своими руками. Без пиратского хексрейза, карл.


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


Ранг: 184.4 (ветеран)
Статус: Участник

Создано: 9 марта 2019 10:08 New!
Цитата · Личное сообщение · #9

sty пишет:
Имеется в виду, что бесплатный декомилятор на базе GHIDRA будет ничем не хуже хексрейза?

Имеется в виду, что хексрейз есть на несколько самых ходовых архитектур всего. А на PPC например пиратского не существует. А здесь движок, изначально рассчитанный на строительство декомпиляторов и любой желающий относительно несложно может (хотя это титаническое задротство дизассемблеры делать) на любую архитектуру сделать декомпилер.


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

Создано: 9 марта 2019 11:10 New!
Цитата · Личное сообщение · #10

Кто смотрел как устроен Декомпиль ?! Может там чего интересного рипнуть можно

Base-src.zip\ghidra\app\util\pcode - ZIP archive, unpacked size 18,272,217 bytes

Code:
  1. import ghidra.app.plugin.processors.sleigh.template.ConstTpl;
  2. import ghidra.app.plugin.processors.sleigh.template.VarnodeTpl;
  3. import ghidra.program.model.address.AddressFactory;
  4. import ghidra.program.model.address.AddressSpace;
  5. import ghidra.program.model.pcode.PcodeOp;
  6. import ghidra.util.exception.InvalidInputException;
  7.  
  8. import java.util.HashMap;
  9. import java.util.List;
  10.  
  11. class PcodeSpec {
  12.  
  13.          //
  14.          // Input Spec Flags
  15.          //
  16.          private static final int CONSTANT = 0x01;
  17.          private static final int UNIQUE = 0x02;
  18.          private static final int ADDRESS = 0x04;
  19.          private static final int REGISTER = 0x08;
  20.          private static final int RELATIVE_ADDRESS = 0x10;
  21.          private static final int CUR_SPACE_POINTER = 0x20;
  22.  
  23.          //
  24.          // Common Input Specs
  25.          //
  26.  
  27.          private static final int ANY = CONSTANT | UNIQUE | ADDRESS | REGISTER | RELATIVE_ADDRESS;
  28.          private static final int ANY_VARIABLE = UNIQUE | ADDRESS | REGISTER;
  29.  
  30.          private static final int[] NO_INPUT = new int[] {};
  31.          private static final int[] ANY_ONE_INPUT = new int[] { ANY };
  32.          private static final int[] ANY_TWO_INPUTS = new int[] { ANY, ANY };
  33.          private static final int[] DIRECT_BRANCH_INPUTS = new int[] { CONSTANT | ADDRESS |
  34.                  RELATIVE_ADDRESS };
  35.          private static final int[] DIRECT_CONDITIONAL_BRANCH_INPUTS = new int[] {
  36.                  CONSTANT | ADDRESS | RELATIVE_ADDRESS, ANY_VARIABLE };
  37.          private static final int[] DIRECT_CALL_INPUTS = new int[] { ADDRESS };
  38.          private static final int[] INDIRECT_FLOW_INPUTS = new int[] { UNIQUE | ADDRESS | REGISTER |
  39.                  RELATIVE_ADDRESS | CUR_SPACE_POINTER };
  40.          private static final int[] LOAD_INPUTS = new int[] { CONSTANT, ANY };
  41.          private static final int[] STORE_INPUTS = new int[] { CONSTANT, ANY, ANY };
  42.          private static final int[] SHIFT_INPUTS = new int[] { ANY, CONSTANT };
  43.  
  44.          //
  45.          // Output Type
  46.          //
  47.          private static final int OUTPUT_NONE = 0;
  48.          private static final int OUTPUT_INPUT0_SIZE = 1;
  49.          private static final int OUTPUT_INPUT0_SIZE_EXTENDED = 2;
  50.          private static final int OUTPUT_INPUT0_SIZE_TRUNCATED = 3;
  51.          private static final int OUTPUT_INPUT1_SIZE = 4;
  52.          private static final int OUTPUT_BOOLEAN = 5;
  53.          private static final int OUTPUT_ANY_SIZE = 6;
  54.  
  55.          private static HashMap<String, PcodeSpec> pcodeNameSpecMap;
  56.          private static HashMap<Integer, PcodeSpec> pcodeSpecMap;
  57.  
  58.          private String opName;
  59.          private int opCode;
  60.          private int outputType;
  61.          private boolean inputSizesMustMatch;
  62.          private int[] inputSpecs;

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


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

Создано: 11 марта 2019 12:40 New!
Цитата · Личное сообщение · #11

По ощущениям сырой продукт. Мне кажется они юзают его в строго регламентированном порядке и для определенных целей в основном (прошивки думаю) и поэтому для pe оно прям не фонтан. Надо подождать версии 11+ думаю) тогда будет норм. Судя по тому сколько на гитхабе траблов нарыли и их характер, то работы много. Все будет ясно когда сорцы на гитхаб зальют - интересна частота фиксов и фидбэк - это будет определяющим.


Ранг: 184.4 (ветеран)
Статус: Участник

Создано: 11 марта 2019 12:46 New!
Цитата · Личное сообщение · #12

superakira пишет:
Мне кажется они юзают его в строго регламентированном порядке и для определенных целей в основном (прошивки думаю)

Страница 21 --> Link <--

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

Создано: 11 марта 2019 13:09 New!
Цитата · Личное сообщение · #13

f13nd и там мы видим выхлоп аля соурсер 20 летней давности) графы не особо нужны так-то. ну редко. имхо важна динамика развития и если будет норм, то это действительно конкурент. визуально и сама модель работы с данным ПО мне понравилась. но капец он слоупок.. и с символами он меня задрал.


Ранг: 184.4 (ветеран)
Статус: Участник

Создано: 11 марта 2019 14:12 New!
Цитата · Личное сообщение · #14

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

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


Ранг: 438.2 (мудрец)
Статус: Участник
_Вечный_Студент_

Создано: 16 марта 2019 06:15 New!
Цитата · Личное сообщение · #15

RolfRolles создал depository на github'e, которое со временем будет пополнять. Пока там немного, но начало интересное.

--> Ghidra Program Analysis Library<--

Code:
  1. Eventually -- hopefully -- this repository will contain a suite of program analysis-related plugins for Ghidra. I haven't written them yet. For now, there's a port of an abstract interpretation-based analysis that I use for deobfuscation and a binary upon which to test it.


Ранг: 184.4 (ветеран)
Статус: Участник

Создано: 16 марта 2019 12:00 · Поправил: f13nd New!
Цитата · Личное сообщение · #16

mak пишет:
Кто смотрел как устроен Декомпиль ?!

Декомпиль очень просто устроен. В \Ghidra\Processors\<name>\data\languages\ есть *.slaspec и *.sinc файлы иполученные из них промежуточные *.sla, в которых специальным псевдокодом описана инструкция. При дизасме получается нужный алгоритм в этом псевдокоде, декомпиль просто приводит его в более понятный и си-подобный (сворачивая обработку контекста и типов). --> Link <-- Позабавило, что декомпиль несет в себе почерк разработчика процессорного модуля, после этого стараешься не выписывать длинные запутанные портянки, боком выйдет. Рипать эти мегабайты не надо, проще присоединиться

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


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

Создано: 17 марта 2019 20:39 New!
Цитата · Личное сообщение · #17

plutos пишет:
RolfRolles создал depository на github'e, которое со временем будет пополнять. Пока там немного, но начало интересное.

Как этим пользоваться до конца так и не понял. Обьясните плз.


Ранг: 438.2 (мудрец)
Статус: Участник
_Вечный_Студент_

Создано: 18 марта 2019 01:48 · Поправил: plutos New!
Цитата · Личное сообщение · #18

RoKZaR пишет:
Как этим пользоваться до конца так и не понял. Обьясните плз.


как говорит сам автор в readme, это только начало, там пока еще только:
"there's a port of an abstract interpretation-based analysis that I use for deobfuscation and a binary upon which to test it."

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

Кроме того, там можно и прямо задавать--> вопросы<--:

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



Ранг: 438.2 (мудрец)
Статус: Участник
_Вечный_Студент_

Создано: 20 марта 2019 02:45 · Поправил: plutos New!
Цитата · Личное сообщение · #19

--> Daenerys<-- is an interop framework that allows you to run IDAPython scripts under Ghidra and Ghidra scripts under IDA Pro with little to no modifications.



картинка конечно великовата, зато хорошо видно дракона...
The project's logo symbolizes harmony between the two SRE frameworks.

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

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

Даже на картинке Ида выглядит посимпатичнее Гидры


Ранг: 184.4 (ветеран)
Статус: Участник

Создано: 20 марта 2019 13:18 · Поправил: f13nd New!
Цитата · Личное сообщение · #21

cppasm пишет:
Даже на картинке Ида выглядит посимпатичнее Гидры

Ну если нарисовать ее так, чтобы было ну совсем не похоже на оригинал --> Link <-- Глядя на портрет ломаешь голову - это художник ничего не знал о перспективе или ее правда так перекосило?
ЗЫ: а сама картинка про один из клонов санта-барбары --> Link <--

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

Создано: 20 марта 2019 18:55 New!
Цитата · Личное сообщение · #22

епт там нихера то не сделано... нате helloworld скелет, пишите мол, 121 github звёздочка...

Code:
  1. print("Hello world from Ghidra...")
  2. print("Current address is: %x" % idc.here())
  3. print("Min address: %x - Max address: %x" % (idc.MinEA(), idc.MaxEA()))
  4. print("Byte at current address is: %02x" % idc.Byte(idc.here()))
  5. print("BADADDR=%x" % idc.BADADDR)


Добавлено спустя 1 час 1 минуту
https://xlab.tencent.com/en/2019/03/18/ghidra-from-xxe-to-rce/

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

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


Ранг: 184.4 (ветеран)
Статус: Участник

Создано: 21 марта 2019 00:32 New!
Цитата · Личное сообщение · #24

Где-то мелькала хотелка в иде объявлять несклько областей памяти по пересекающимся адресам и там это невозможно. В движке гидры можно создать AddressSpace, применить на него .getAddress​(long byteOffset) и поместить получившийся объект Address куда хочется. Пересекаться с основным адресным пространством это альтернативное измерение не будет. Г - гибкость.

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

Создано: 21 марта 2019 00:47 New!
Цитата · Личное сообщение · #25

f13nd

Это не только проблема иды, а любого дизасма. Корреляции в графе, так как его части завязаны на диапазон адресов. Проще на примере показать.

Пусть инструкция начинается с адреса A. Далее есть ветвление на A + N, причём размер инструкции А > N. При этом дизасм глюкнет, так как строит граф проверкой адресов: if P ~ [A; N].

Нормальный дизасм не должен привязываться к адресам, корректная проверка должна быть if P = A или P = A + N.


Ранг: 438.2 (мудрец)
Статус: Участник
_Вечный_Студент_

Создано: 21 марта 2019 00:56 · Поправил: plutos New!
Цитата · Личное сообщение · #26

hash87szf пишет:
епт там нихера то не сделано...


Your contributions are welcome.


Ранг: 184.4 (ветеран)
Статус: Участник

Создано: 21 марта 2019 01:00 New!
Цитата · Личное сообщение · #27

difexacaw пишет:
При этом дизасм глюкнет, так как строит граф проверкой адресов

Не знаю с чего он глюкнет, просто пометит адрес этого ветвления как инвалид и отобразит адрес перехода как адрес_начала_инструкции+n. Теоретически можно такой антидизасм разогнуть даже в иде, если пофантазировать.

difexacaw пишет:
Нормальный дизасм не должен привязываться к адресам

Для 99.5% задач и одного адресного пространства хватает, но иногда хочется все 100%.

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

Создано: 21 марта 2019 01:04 New!
Цитата · Личное сообщение · #28

f13nd

Дизасм остановится, так как инструкция описана, не смотря на то, что она другая. Это редкие конструкции, но они отлично ломают дизасм если это нужно.


Ранг: 184.4 (ветеран)
Статус: Участник

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

difexacaw пишет:
Это редкие конструкции, но они отлично ломают дизасм если это нужно.

Если за дизасмом сидит разумное существо, умеющее не только кнопки давить, его это не остановит.

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

Создано: 22 марта 2019 22:28 New!
Цитата · Личное сообщение · #30

Дежурные ссылки JAVA
-->Open JDK 11 <--
--> AdoptOpenJDK <--

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

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

ZaZa пишет:
Британский ИБ-эксперт и глава Hacker House Мэтью Хики (Matthew Hickey) заметил, что в отладочном режиме инструмент АНБ открывает и «слушает» сетевой порт 18001, что позволяет подключиться к Ghidra удаленно, через JDWP (разумеется, с целью все той же отладки). Хики отмечает, что исправить проблему совсем несложно.

Поправка.
Linux, launch.sh
Code:
  1. VMARG_LIST+=" -Xrunjdwp:transport=dt_socket,server=y,suspend=${SUSPEND},address=127.0.0.1:${DEBUG_PORT}"

Windows, launch.bat
Code:
  1. set VMARG_LIST=!VMARG_LIST! -Xrunjdwp:transport=dt_socket,server=y,suspend=!SUSPEND!,address=127.0.0.1:!DEBUG_PORT!
<< . 1 . 2 . 3 . 4 . 5 . >>
 eXeL@B —› Софт, инструменты —› GHIDRA software reverse engineering (SRE) suite of tools

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

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