Сейчас на форуме: vsv1, asfa, tyns777 (+4 невидимых)

 eXeL@B —› Вопросы новичков —› Введение в реверсинг с нуля, используя IDA PRO
<< 1 ... 9 . 10 . 11 . 12 . 13 . >>
Посл.ответ Сообщение


Ранг: 59.5 (постоянный), 326thx
Активность: 0.170.76
Статус: Участник

Создано: 28 ноября 2016 22:13 · Поправил: yashechka
· Личное сообщение · #1

Привет Всем.
Здесь буду потихоньку выкладывать новый курс по ИДЕ (перевод статей автора Рикардо Нарваха)
--> Link <--
А тут, красивые PDF.
--> Link <--
Как только закончу снимать отладку, перейду на реверсинг с нуля и на что-то ещё.

Буду рад услышать любые комментарии по курсу
--> Link <--

Также всем Спасибо за лайки.

===
--> 01 <-- - Знакомство с IDA PRO.
--> 02 <-- - Системы счисления.
--> 03 <-- - Регистры процессора.
--> 04 <-- - Стек и самые простые инструкции.
--> 05 <-- - Инструкции LEA и MOV.
--> 06 <-- - Математические инструкции.
--> 07 <-- - Безусловный переход JMP, CALL и RET.
--> 08 <-- - Сегменты.
--> 09 <-- - Загрузчик и первые функции.
--> 10 <-- - Запуск встроенного отладчика.
--> 11 <-- - Флаги процессора.
--> 12 <-- - Первый реверс.
--> 13 <-- - IPYTHON.
--> 14 <-- - Упакованные файлы.
--> 15 <-- - Распаковка PE файла.
--> 16 <-- - Скрипт и IAT.
--> 17 <-- - Удаленная отладка.
--> 18 <-- - Практика.
--> 19 <-- - Реверсинг крекми CRUEHEADa.
--> 20 <-- - Уязвимости.
--> 21 <-- - Переполнение буфера в стеке.
--> 22 <-- - Различая в машинном коде.
--> 23 <-- - Практика.
--> 24 <-- - Практика.
--> 25 <-- - Структуры.
--> 26 <-- - Структуры.
--> 27 <-- - Структуры. (--> 27.2 <--)
--> 28 <-- - Структуры.
--> 29 <-- - Подготовка к CVE.
--> 30 <-- - CVE-2008-4654.
--> 31 <-- - POC для CVE. (--> 31.2 <--)
--> 32 <-- - Добавляем WINDBG.
--> 33 <-- - Подлючение MONA.PY.
--> 34 <-- - Знакомство с DEP.
--> 35 <-- - DEP и NO DEP.
--> 36 <-- - DEP и NO DEP.
--> 37 <-- - DEP и NO DEP.
--> 38 <-- - SEH и CANARY.
--> 39 <-- - DEP, SEH + CANARY.
--> 40 <-- - Универсальный шеллкод.
--> 41 <-- - Строки в куче, стеке и сегменте данных.
--> 42 <-- - Решение упражнения 41А.
--> 43 <-- - Решение упражнения 41B.
--> 44 <-- - HEAP.
--> 45 <-- - Упражнение 41B.
--> 46<-- - Практика с кучей.
--> 47<-- - LOW FRAGMENTATION HEAP.
--

| Сообщение посчитали полезным: Apocalypse, zds, srm60171, =TS=, gleco1, Gideon Vi, Djeck, zNob, SReg, ksol, filyaxxxcom, N_E_O, Orlyonok, Abraham, mak, ClockMan, VodoleY, Bad_guy, verdizela, negoday, _k0NkurS, TOM_RUS, vnekrilov, anonymous, HandMill, DICI BF, olafudaf, tRuNKator, CoolMax_86, TryAga1n, AtilkaShooter, CyberGod, BiteMoon, d745150, mr_yoda2, IranR, Nau, AlxVD, needmic, Diabolic, hlmadip, BAHEK, CKAP, Norinke, Znoy, YoY, Medsft, oxiusova, ww00, awoland, Isaev, rukop84, Rio, Hugo Chaves, papavlo, r_e, ac86, ys72

Ранг: 3.4 (гость), 1thx
Активность: 0.040
Статус: Участник

Создано: 18 июня 2019 23:59
· Личное сообщение · #2

подскажите, пожалуйста, как из скрипта отличить байт, который неопределен в области памяти (ИДА его отображает ?? и пишет .byte 0xFF;(array 1) ) от реального байта, значение которого фактически имеет значение 0xFF ?
Code:
  1. XRAM:027E 00          XRAM_27E:       .byte 0x00              ; DATA XREF: CODE:3581&#8593;i
  2. XRAM:027F 00          XRAM_27F:       .byte 0x00              ; DATA XREF: CODE:3582&#8593;i
  3. XRAM:0280 FF          XRAM_280:       .byte 0xFF              ; DATA XREF: CODE:3583&#8593;i
  4. XRAM:0281 ??                          .byte 0xFF;(array 1)
  5. XRAM:0282 ??                          .byte 0xFF;(array 1)
  6. XRAM:0283 ??                          .byte 0xFF;(array 1)

функция isUnknown(GetFlags(ea)) не помогает, т.к. в обоих случаях false. Также и функция Byte(ea) в обоих случаях возвращает 0xFF




Ранг: 337.5 (мудрец), 348thx
Активность: 2.112.42
Статус: Участник

Создано: 19 июня 2019 00:09
· Личное сообщение · #3

PhilXe

У контроллеров примитивная архитектура и у всех одинакова. Это некоторая область в младших адресах с кучей говна и палок, называется SFR". Тоесть регистры отображены в память и что бы с этим кривым говном работать нужно изучить тонны матчасти. Когда шьётся такой контроллер разраб не касается этих извратов, к примеру для примитивных PIC есть даже компилер басика, не смотря на то, что там переменных несколько десятков.

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

-----
vx





Ранг: 271.2 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

Создано: 19 июня 2019 00:48
· Личное сообщение · #4

PhilXe
idc.is_loaded(ea)
difexacaw
На всякий случай - там речь о флаге initialized области памяти. Что тебе подумалось хз даже.

-----
2 оттенка серого


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

Ранг: 3.4 (гость), 1thx
Активность: 0.040
Статус: Участник

Создано: 19 июня 2019 01:20
· Личное сообщение · #5

f13nd пишет:
is_loaded(ea)

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

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

Ранг: 3.4 (гость), 1thx
Активность: 0.040
Статус: Участник

Создано: 20 июня 2019 00:37
· Личное сообщение · #6

еще вопросик:
есть ли какая-то встроенная idc-функция поиска последовательности байтов (аналог команд Search sequence of bytes <Alt-B> и next of sequence of bytes <Ctrl-B>) или нужно самостоятельно перешерстить весь диапазон в цикле?




Ранг: 271.2 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

Создано: 20 июня 2019 05:53
· Личное сообщение · #7

PhilXe пишет:
idc-функция поиска последовательности байтов

(все idc-функции описаны в idc/idc.idc) idc.find_binary(0,SEARCH_DOWN,"FF FF FF")

-----
2 оттенка серого


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

Ранг: 3.4 (гость), 1thx
Активность: 0.040
Статус: Участник

Создано: 21 июня 2019 15:12 · Поправил: PhilXe
· Личное сообщение · #8

f13nd пишет:
все idc-функции описаны в idc/idc.idc

да, но точнее будет сказать, что все они перечислены, но описаны понятным для применения образом далеко не все, поэтому я сначала пытаюсь там посмотреть, потом пытаюсь почитать во встроенной справке ИДА, потом на сайте ИДА, потом поискать в Интернете примеры использования в разных idc-скриптах пользователей, но, к сожалению, не все возможные комбинации удается отыскать, соответственно, пишу в эту тему, в которой Вы любезно помогаете ценными подсказками, что говорит о вашей отзывчивости и хорошем знании программирования ИДА, за что Вам ОГРОМНОЕ спасиБо

Сейчас, например, пытаюсь разобраться почему не во всех случаях появляется распознавание библиотечных функций компилятора по файлу сигнатур (предполагаю, что оказывается влияние паразитных фиктивных точек входа с ложными чанками), но пока не буду напрягать никого вопросами, может сам разберусь и с этой особенностью, как удалось вычислить поведение ИДА с конфигом 8051 и созданием специфичных сегментов RAM и FSR/SFR, а также изменением их адресации на правильную...



Ранг: 58.3 (постоянный), 50thx
Активность: 0.040.08
Статус: Участник

Создано: 21 июня 2019 15:27
· Личное сообщение · #9

PhilXe пишет:
поэтому я сначала пытаюсь там посмотреть, потом пытаюсь почитать во встроенной справке ИДА


Вообще-то, если внимательно посмотреть, то встроенная справка - это просто куски из файла idc.idc.
А для того, чтоб что-то из этой кучи начать применять, приходится всячески экспериментировать (особенно, если начинаешь возиться с какой-нибудь новой для тебя темой (с процедурами, которые до этого не использовал).
Описаний толковых нет нигде.
Особенно интересно, когда получаешь код (пример) от Ильфака и он никак не вписывается в описание, данное в idc.idc!!!



Ранг: 3.4 (гость), 1thx
Активность: 0.040
Статус: Участник

Создано: 21 июня 2019 16:20
· Личное сообщение · #10

DrVB_5_6 пишет:
встроенная справка - это просто куски из файла idc.idc

именно куски, т.к. некоторые функции не упоминаются вовсе и я по началу входил в ступор при разборе чужих скриптов видя в них "несуществующие" функции...
DrVB_5_6 пишет:
когда получаешь код (пример) от Ильфака и он никак не вписывается в описание, данное в idc.idc!!!

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




Ранг: 271.2 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

Создано: 21 июня 2019 16:30
· Личное сообщение · #11

PhilXe пишет:
созданием специфичных сегментов RAM и FSR/SFR, а также изменением их адресации на правильную...

Наверное с такими наполеоновскими планами надо было изначально выбрать платформу ghidra, там возможностей побольше и в целом внутреннее устройство посолидней выглядит. Особенно учитывая то, что 8051 лучедекомпилер не грозит, в гидре какой-никакой был бы. Правда апи посложней.

-----
2 оттенка серого


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

Ранг: 3.4 (гость), 1thx
Активность: 0.040
Статус: Участник

Создано: 21 июня 2019 17:15
· Личное сообщение · #12

f13nd пишет:
с такими наполеоновскими планами

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

знать бы о ней, но Вы упомянули и поищу материалы по ней -- а Вы уже использовали для реальных задач? интресен опыт с 8051 и stm32
f13nd пишет:
Особенно учитывая то, что 8051 лучедекомпилер не грозит, в гидре какой-никакой был бы. Правда апи посложней

что такое "лучедекомпилер"?




Ранг: 271.2 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

Создано: 21 июня 2019 17:26
· Личное сообщение · #13

PhilXe пишет:
а Вы уже использовали для реальных задач?

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

Декомпилеры hex-rays, встраиваемые в иду.

-----
2 оттенка серого




Ранг: 58.3 (постоянный), 50thx
Активность: 0.040.08
Статус: Участник

Создано: 21 июня 2019 17:27
· Личное сообщение · #14

PhilXe пишет:
да, тоже натыкался на нерабочие примеры кода


Нет, код-то рабочий, коль его сам Ильфак или Скочинский дают, только использование функций в нём не совпадает с описанием этих функций в idc.idc!!!



Ранг: 3.4 (гость), 1thx
Активность: 0.040
Статус: Участник

Создано: 21 июня 2019 17:40
· Личное сообщение · #15

f13nd пишет:
идой больше не пользуюсь. Почти все что нужно уже сам дописал и использую только гидру. Даже отсутствие поддержки нужных архитектур не остановило, там с разработкой собственных процессорных модулей все хорошо. А если самому что-то дорабатывать, гидра имхо лучший выбор

а без доработки "из коробки" 8051 не хуже чем ИДА переваривает? есть декомпилятор в Си-подобный псевдокод?
DrVB_5_6 пишет:
код-то рабочий, коль его сам Ильфак или Скочинский дают, только использование функций в нём не совпадает с описанием этих функций в idc.idc

а имеющийся в папке ИДЫ 8051bits.idc работает неправильно, поэтому пришлось его переписать для правильной работы




Ранг: 271.2 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

Создано: 21 июня 2019 17:53
· Личное сообщение · #16

PhilXe пишет:
а без доработки "из коробки" 8051 не хуже чем ИДА переваривает?

Разбор динамической адресации (по-моему для 8051 не очень принципиально) лучше. Декомпилер в псевдокод есть.

-----
2 оттенка серого




Ранг: 3.4 (гость), 1thx
Активность: 0.040
Статус: Участник

Создано: 21 июня 2019 18:29 · Поправил: PhilXe
· Личное сообщение · #17

f13nd пишет:
Декомпилер в псевдокод есть

заинтриговали Вы меня, захотелось поставить и попробовать... Как с подключением аппаратных отладчиков дело обстоит?
Есть ли тема на форуме по Гидре, чтобы не засорять эту тему? если нет, то можно ли к Вам в личку написать?
P.S.
тему на форуме нашел...




Ранг: 271.2 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

Создано: 21 июня 2019 18:40
· Личное сообщение · #18

PhilXe пишет:
Как с подключением аппаратных отладчиков дело обстоит?

Никак. Отладки ни в какой форме там нету.

-----
2 оттенка серого




Ранг: 3.4 (гость), 1thx
Активность: 0.040
Статус: Участник

Создано: 21 июня 2019 19:37
· Личное сообщение · #19

f13nd пишет:
Никак. Отладки ни в какой форме там нет

тогда для stm32 альтернативы для ИДА пока нет? (чтобы можно было отлаживать код без исходника)




Ранг: 271.2 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

Создано: 21 июня 2019 20:19
· Личное сообщение · #20

PhilXe пишет:
тогда для stm32 альтернативы для ИДА пока нет?

Наверное, я вообще привык к тому что отладка совсем в другом ПО делается. Что там у ARM с идой не в курсе.

-----
2 оттенка серого




Ранг: 3.4 (гость), 1thx
Активность: 0.040
Статус: Участник

Создано: 21 июня 2019 22:35 · Поправил: PhilXe
· Личное сообщение · #21

опять непонятка: как получить содержимое всей текстовой строки, которую находит функция find_text и потом выделить из нее нужную подстроку?




Ранг: 271.2 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

Создано: 21 июня 2019 23:38
· Личное сообщение · #22

PhilXe пишет:
выделить из нее нужную подстроку?

Запихать все уже написанные функции в питоноскрипт как idaapi.CompileLine(r""" <idc> """), вызывать их idc.eval_idc("idc_function();") В справочнике сказано, что возвращать значение функции eval_idc может. А idc это урезанный везде где только можно язык, где даже массивов нету. В питоне с обработкой строк полный порядок.

-----
2 оттенка серого





Ранг: 324.3 (мудрец), 222thx
Активность: 0.480.37
Статус: Участник

Создано: 22 июня 2019 00:10 · Поправил: DenCoder
· Личное сообщение · #23

f13nd пишет:
А idc это урезанный везде где только можно язык, где даже массивов нету

Да массивы-то есть, работа только с ними через функции:
Code:
  1. idx = GetFirstIndex(AR_LONG, arid)
  2. idx = GetNextIndex(AR_LONG, arid, idx)
  3. long = GetArrayElement(AR_LONG, arid, idx)
  4. SetArrayLong(arid, idx, long)


Но питон всё-таки лучше, да и idc вроде как отмирает, не?

Добавлено спустя 12 минут
PhilXe пишет:
как получить содержимое всей текстовой строки, которую находит функция find_text и потом выделить из нее нужную подстроку?

В idc манипулировать строковыми функами strstr(), substr(), ...

https://www.hex-rays.com/products/ida/support/idadoc/183.shtml .. 191.shtml

А вообще заведите женщину и не мучайтесь

-----
IZ.RU


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


Ранг: 271.2 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

Создано: 22 июня 2019 01:02
· Личное сообщение · #24

DenCoder пишет:
Но питон всё-таки лучше, да и idc вроде как отмирает, не?

У idc всего одно преимущество - питон не надо ставить

-----
2 оттенка серого




Ранг: 3.4 (гость), 1thx
Активность: 0.040
Статус: Участник

Создано: 23 июня 2019 17:13
· Личное сообщение · #25

f13nd пишет:
У idc всего одно преимущество - питон не надо ставить

а разве тот, который ИДА7.0 устанавливает не годится и нужно ставить дополнительно другой?

еще нужна подсказка для улучшения распознавания лоадером кода 8051:
по-умолчанию ИДА вклюяает автоанализ, что приводит к глупым результатам, поэтому в конфиге приходится его отключать путем изменения на ENABLE_ANALYSIS = NO, но в этом режиме не происходит обработка сигнатур из приготовленного sig-файла -- как бы сделать так, чтобы изначально автоанализ был выключен и мой загрузчик все начальные приготовления сделал без вмешательства "распознавателя" ИДЫ, а потом из скрипта в нужный момент включить автоанализ чтобы обработались сигнатуры библиотечных функций из sig-файла?




Ранг: 271.2 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

Создано: 23 июня 2019 20:08 · Поправил: f13nd
· Личное сообщение · #26

PhilXe пишет:
а разве тот, который ИДА7.0 устанавливает

Ида не устанавливает питон, с такими штуками могут возникнуть проблемы с авторскими правами. Идапитон интерфейсный плагин, но не сам питон.

-----
2 оттенка серого




Ранг: 3.4 (гость), 1thx
Активность: 0.040
Статус: Участник

Создано: 24 июня 2019 00:03 · Поправил: PhilXe
· Личное сообщение · #27

PhilXe пишет:
как бы сделать так, чтобы изначально автоанализ был выключен и мой загрузчик все начальные приготовления сделал без вмешательства "распознавателя" ИДЫ, а потом из скрипта в нужный момент включить автоанализ чтобы обработались сигнатуры библиотечных функций из sig-файла?

так и не нашел способ из скрипта сделать ENABLE_ANALYSIS = NO, чтобы потом в нужный момент сделать ENABLE_ANALYSIS = YES, но удалось обойти это иным образом путем изначального задания отключенного состояния в загрузчике функцией set_flag(INF_AF, AF_CODE, 0) и set_flag(INF_AF, AF_DOCODE, 0), а потом в нужный момент после завершения подготовительных обработок включил обратно функцией set_flag(INF_AF, AF_CODE, 1)

Правда, я не совсем понял, что делает set_flag(INF_AF, AF_DOCODE, 1)?




Ранг: 59.5 (постоянный), 326thx
Активность: 0.170.76
Статус: Участник

Создано: 27 июня 2019 21:58
· Личное сообщение · #28

--> 67.1<--
--> 67.2<--
Ну, что сказать, друзья. Мы - победили. На текущий момент - курс переведен. Почему на текущий? Потому что в конце 67 части написано, что увидимся в 68. Сейчас, я скорее, ставлю запятую, а не точку. Пришло время подвести итоги, всего этого. Приятного чтения.

| Сообщение посчитали полезным: Nihil enim, subword, Vintersorg, mak, SReg, CyberGod, parfetka, ksol, HandMill


Ранг: 59.5 (постоянный), 326thx
Активность: 0.170.76
Статус: Участник

Создано: 28 июня 2019 22:08
· Личное сообщение · #29

--> Link <--

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

Ранг: 23.7 (новичок), 11thx
Активность: 0.040.02
Статус: Участник

Создано: 28 июня 2019 22:57
· Личное сообщение · #30

кажется, часть 66 осталась не переведена..




Ранг: 59.5 (постоянный), 326thx
Активность: 0.170.76
Статус: Участник

Создано: 29 июня 2019 09:14
· Личное сообщение · #31

Файл с переводом перестал открываться, поэтому я пошел дальше. Дополню позже. Сейчас отчет.


<< 1 ... 9 . 10 . 11 . 12 . 13 . >>
 eXeL@B —› Вопросы новичков —› Введение в реверсинг с нуля, используя IDA PRO
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати