Сейчас на форуме: 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


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

Создано: 10 мая 2019 20:34
· Личное сообщение · #2

Может это поможет?
--> Link <--




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

Создано: 10 мая 2019 20:35
· Личное сообщение · #3

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

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




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

Создано: 10 мая 2019 20:52
· Личное сообщение · #4

yashechka,
благодарю за ссылку, но это не для 8051 и не увидел исходников, в которых можно что-то подчерпнуть для моей задачи, кроме того эти загрузчики, как я понял, написаны с использованием СДК, а мне показалось, что для моих загрузчиков должно хватить idc-скрипта или на python-е, хотя из-за недостатка опыта может и ошибаюсь

f13nd,
благодарю за ответ, но поскольку прошивки отличаются, то вручную каждый раз выбирать я уже замучился и-за разных адресов и раскладки в памяти по сегментам. Кроме того непонятно, как переименовывать битовые переменные (нашел только способ изменения руками в i51.cfg файле, но для каждой версии приходится плодить новый вариант), также не понял как менять из idc-скрипта некоторые байты, ну, и со станицами кода не понятно как поступить, т.к. адресное пространство микроконтроллера 64К и при выходе из подпрограмм ИДА сваливается на нулевую страницу... Как бы к этому подступиться?




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

Создано: 10 мая 2019 21:09
· Личное сообщение · #5

Это конечно не Ида, но вот посмотрите --> Link <--

Добавлено спустя 2 минуты
--> Link <--

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


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

Создано: 10 мая 2019 22:10
· Личное сообщение · #6

PhilXe пишет:
что для моих загрузчиков должно хватить idc-скрипта или на python-е

idc.loadfile() и ida_bytes.patch_bytes() в принципе позволяют из скрипта загружать файлы. Наверное можно так сделать, но если собираешься перед загрузкой файл анализировать, про idc лучше забудь, только петон. Про сегменты честно говоря не представляю себе в чем проблема, единственный проц с сегментацией, который я нормально знаю, прекрасно себя чувствует без условного деления на сегменты, вся межсегментная адресация срастается правильно.

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


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

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

Создано: 11 мая 2019 01:28
· Личное сообщение · #7

f13nd пишет:
idc.loadfile() и ida_bytes.patch_bytes() в принципе позволяют из скрипта загружать файлы. Наверное можно так сделать, но если собираешься перед загрузкой файл анализировать, про idc лучше забудь, только петон

благодарю, сначала попробую на idc, т.к. с python-ом я пока вообще не знаком, а если не получится, тогда буду просить помощи и пытаться смотреть примеры на нем. К сегментам вернусь после того, как что-то первоначальное заработает...



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

Создано: 27 мая 2019 14:13
· Личное сообщение · #8

мне нужно было решить задачи:
1) опознать файл;
2) выбрать процессор;
3) загрузить файл;
4) модифицировать его
У меня было ИДА5.5, но у нее нет функционала пользовательских загрузчиков на idc и python, который появился только с версии 5.6, поэтому обновился до версии 5.7.
Первую задачу в черновом варианте удалось решить на основе изучения примера загрузчика БИОС в ИДА, но выбрать тип процессора не удалось. Возникло предположение, что нужна другая версия, начал искать и обновился до версии 6.1, в которой удалось выбрать тип процессора, но не удалось выбрать конкретный процессор. Долго бился, но не получилось, поэтому предположил, что нужна более старшая версия ИДА.
Нашел на просторах 6.8, но с упоминанием о какой-то проблеме, поэтому начал искать другую и нашел 7.0.
Версия 7.0 оказалась уже с установщиком, который все установил, и мне удалось выбрать процессор, однако, появился доп.вопрос:
вместе с установщиком имеется какой-то патч -- для чего он? нужно ли его применить? и т.п.
или же можно продолжить работы и никакой потом проблемы не возникнет в дальнейшем? либо наоборот нужно сначала применить патч во избежание в дальнейшем чего-то мне неизвестного сейчас?

Подскажите, пожалуйста, новичку.
Заранее благодарю всех откликнувшихся




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

Создано: 27 мая 2019 14:35
· Личное сообщение · #9

PhilXe пишет:
но не удалось выбрать конкретный процессор

Насколько могу судить, выбор конкретного проца это применение профиля из \cfg (только он и содержит упоминания о конкретных процессорах). Если не найдешь апи для этого, файл всегда можно пропарсить питоноскриптом и применить его содержимое с помощью idc.set_name(), idc.create_dword() и т.д.
PhilXe пишет:
вместе с установщиком имеется какой-то патч -- для чего он?

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

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


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

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

Создано: 27 мая 2019 15:09 · Поправил: PhilXe
· Личное сообщение · #10

f13nd пишет:
выбор конкретного проца это применение профиля из \cfg (только он и содержит упоминания о конкретных процессорах)

да, я нашел там файл i51.cfg, в котором есть образцы нескольких разных моделей процессоров этого семейства и создал по образцу несколько своих, но из моего загрузчика только выскакивает окно ИДЫ с просьбой подтвердить выбор (или изменить), а как из скрипта выбрать сразу и исключить доп.вопросы я пока не понял
f13nd пишет:
Если не найдешь апи для этого, файл всегда можно пропарсить питоноскриптом и применить его содержимое с помощью idc.set_name(), idc.create_dword() и т.д.

а есть какие-то примеры как этим пользоваться на практике?
и еще попутно вопрос: сами процессоры семейства i8051 8-разрядные с 16-разрядным адресным пространством, соответственно, ИДА позволяет для них в качестве данных задать либо 8-битный байт, либо 16-битное слово, но для меня требуется некоторые данные представлять в виде 32-битных двойных слов -- можно ли этого добиться через интерфейс или из скрипта idc / py ?
f13nd пишет:
это патч для блек-листа

т.е. если нет перспектив когда-то в будущем открывать свои базы с разобранными файлами в более новых версиях ИДЫ, то патч можно не использовать? а когда появится версия свежее 7.0 тогда его и применить?




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

Создано: 27 мая 2019 15:54
· Личное сообщение · #11

PhilXe пишет:
а есть какие-то примеры как этим пользоваться на практике?

Ну вот например, делалось давно, idc внутри питона. На голом питоне не сильно будет отличаться --> Link <-- Вообще встроенные профили иды можно не использовать, в ней много каких нужных процессоров просто нет. Нажимаешь cancel при выборе процессора, а сам профиль грузишь таким скриптом и все. Если таки нужны идапрофили, парсь их регулярными выражениями, в интернете полно примеров.
PhilXe пишет:
требуется некоторые данные представлять в виде 32-битных двойных слов

Скорей всего достаточно будет создать 32битную область памяти. Где-то была тема про кофеварку, там 16битный проц где без проблем дворды объявляются.
PhilXe пишет:
патч можно не использовать?

Можно и не использовать. Не понадобится - не пользуйся, я обычно патчу сам что надо, всякие сомнительные патчи без описания не ставлю.

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


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

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

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

продвижки с версией 7.0 есть, т.е. загрузчик распознает файл и правильно его загружает, но при этом есть ряд проблем, которые хотелось бы все-таки как-то решить:
1) после загрузки я создаю 32-битный сегмент, но это не позволяет представлять данные в виде 32-битных двойных слов (только 8-битный байт или 16-битное слово). В результате экспериментов было установлено, что это из-за завязки не на битность сегмента, а из-за выбранного конкретного ассемблера, т.е. если вручную заменить в Target Assembler выставленный по-умолчанию ASMI на 2500A.D., то 32-битные данные можно выбирать и в 16-битном сегменте. Соответственно, вопрос: как из idc-скрипта заменить Target Assembler на нужный?

2) попутно вопрос: как из idc-скрипта заменить значение Number of opcode bytes вместо нуля по-умолчанию на нужное, например, 3 или 4?

3) поскольку я пока не нашел способа как после задания в idc-скрипте целевого процессора (семейство 8051) дополнительно выбрать его конкретную модель, прописанную в i51.cfg, то пришлось там удалить все предустановленные модели и создать одну фиктивную, хотя это и не убрало появление этого диалогового окна. Однако, несмотря на то, что у этого фиктивного процессора я указал только сегменты, но ИДА самостоятельно задала точки входа и пометила векторы прерываний по адресам 0х0003, 0х000В, 0х0013, 0х001В, 0х0023 и 0х0033, хотя в моей модели нет последнего вектора аппаратно, а остальные программно не используются, поэтому по этим адресам находятся вместо кода данные, что вызывает неправильное дизассемблирование. Я попытался посмотреть количество точек входа сразу после загрузки функцией GetEntryPointQty() и получаю значение 0, что правильно, далее я создал нужные мне 3 точки входа для реальных векторов прерываний и через GetEntryPointQty() проверил их количество, но в базе ИДА это не изменило ее поведения, т.е. она по-прежнему дизассемблирует исходя из "ее" списка точек входа. Я посмотрел через <Ctrl-E> этот список и увидел в нем три "моих" точки и еще 7 "ее" точек (6 векторов и адрес сброса 0х0000), причем "мои" точки имеют заданное мной значение ординала, а "ее" точки для 6-ти векторов с пустыми ординалами, а для адреса сброса указан {main entry]. Чтобы я не указывал в файле i51.cfg для фиктивного процессора изменения поведения ИДА не происходит, из чего складывается впечатление, что при отсутствии выбора из загрузчика модели конкретного процессора уже после отработки загрузчика ИДА задает какие-то свои внутренние предустановки, соответсвенно, вопрос: можно ли их поменять и/или переопределить из idc-скрипта?

4) создаваемые мной в загрузчике сегменты для кода (CODE), данных (DATA) и внутренней памяти (RAM) отрабатываются нормально, но мне не удается создать сегмент для области спец.регистров микроконтроллера (FSR) так, чтобы его адресация была не с нуля, а с адреса 0х80, хотя ИДА сама создает этот сегмент правильно, но тогда из моего загрузчика нет возможности задать имена этим спец.регистрам, соответственно, вопрос: как создать такой сегмент с адресацией не с нуля, а с произвольным значением?

5) при попытке разных вариантов обходных решений по проблемам п.п.3,4 мне понадобилось выполнить из idc-скрипта запуск повторного анализа, но как это сделать я не нашел, соответственно, вопрос: как из idc-скрипта выполнить reAnalyze?




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

Создано: 09 июня 2019 03:22
· Личное сообщение · #13

1. idc.get_inf_attr(38) - номер выбранного ассемблера, idc.set_target_assembler(1) - установка второго
2. Наверное тебе надо options -> general -> number of opcode bytes (non-graph)
3. idc.del_items(0,0x0002,BADADDR)
4. Скорей всего никак, насколько могу судить это не сегмент вообще (не содержит неинициализированных данных), захардкожен самим дизасм-модулем. Причина в отсутствии в иде поддержки адресных пространств.
5. idc.auto_mark_range(0,BADADDR,40)

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


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

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

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

Уважаемый f13nd,
благодарю за ответы.
1) сработало отлично, но вопрос: а как удалось узнать, что именно attr(38)?
2) я в файле ida.cfg задал OPCODE_BYTES = 4, но в некоторых случаях хотелось бы не руками выставлять 3, а из загрузчика в зависимости от анализа прошивки -- может быть тоже через какой-то attr можно к этому добраться?
3) с этим пока разбираюсь в части конкретного применения;
4) самое интересное то, что если я создаю этот сегмент самостоятельно, то ИДА этот сегмент отображает с адресацией, начинающейся с нуля, но при дизассемблировании работает правильно, т.е. как буд-то бы с ее созданным сегментом, который начинается с адресации 0х80...
5) сработало отлично, но возник доп.вопрос: нужно ли после этого использовать команду auto_wait() ?




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

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

PhilXe пишет:
а как удалось узнать, что именно attr(38)?

Открой \idc\idc.idc, там расписаны апи и константы.
Code:
  1. #define INF_ASMTYPE     38              // char; target assembler number (0..n)

PhilXe пишет:
OPCODE_BYTES = 4

Code:
  1. idc.set_inf_attr(INF_BINPREF,3)

PhilXe пишет:
нужно ли после этого использовать команду auto_wait() ?

В описании так и сказано:
Code:
  1. /// Wait for the end of autoanalysis
  2. /// This function will suspend execution of IDC program
  3. /// till the autoanalysis queue is empty.
  4. void auto_wait();


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


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

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

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

а можно ли из idc-скрипта запросить через открытое окно выбор из предложенных вариантов?

Добавлено спустя 31 минуту
и еще вопрос:
пытаюсь использовать сигнатуры для библиотечных функций, поэтому не зная правильной методики поступил так -- в дизассемблированном коде отыскал такие функции самостоятельно, скопировал оп-коды в отдельный pat-файл заменяя изменяемые при компиляции и линковке байты на точки, но такой процесс оказался несколько трудоемким. В раздумьях, как бы попробовать автоматизировать это из ИДы, хотя в идеале бы как-то попробовать разобрать сами библиотеки компилятора...




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

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

PhilXe пишет:
а можно ли из idc-скрипта запросить через открытое окно выбор из предложенных вариантов?

Не слышал ничего про ide с автокомплитом для idc.
PhilXe пишет:
пытаюсь использовать сигнатуры для библиотечных функций

Могу только сюда отправить --> Link <--, сам для этого пользуюсь своими поделками.

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




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

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

еще напрягает одно неудобство -- мне удобно представление некоторых переменных в двоичном виде, но по-умолчанию ИДА не отображает лидирующие нули, поэтому приходится вручную делать Toggle leading zeroes, а хочется автоматизировать скриптом либо выставить на постоянку, но set_inf_attr(INF_GENFLAGS, get_inf_attr(INF_GENFLAGS) | INFFL_LZERO) не срабатывает, хотя написано, что должно https://www.hex-rays.com/products/ida/support/idadoc/1510.shtml -- может знаете решение?
P.S.
решение нашлось путем задания вместо INFFL_LZERO значения 0х02 не работает!




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

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

PhilXe пишет:
по-умолчанию ИДА не отображает лидирующие нули

Любой юнит (инструкцию/данные) ты можешь взять ('string generate_disasm_line(long ea, long flags);'), переработать и заменить на свою строку ('void set_manual_insn(long ea, string insn);'). Альтернатива - 'string print_operand(long ea, long n);' и 'success op_man(long ea, long n, string str);' - для отдельных операндов.

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




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

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

f13nd,
т.е. "включить" заявленный штатный режим отображения лидирующих нулей ИДА не получится?
а повесить Toggle leading zeroes на горячую кнопку можно? или на горячую кнопку можно только то, для чего существует функция, объявленная в idc.idc?




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

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

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

Никогда этим не интересовался.
PhilXe пишет:
или на горячую кнопку можно только то, для чего существует функция, объявленная в idc.idc?

Если единожды запустить этот скрипт, при нажатии Alt+1 будет вызываться anyaction()
Code:
  1. #include <idc.idc>
  2. static main() { DelHotkey("Alt+1");AddHotkey("Alt+1","anyaction"); }
  3. static anyaction(void) { }

При запуске иды <...>ida64.exe -S"autorun.idc" скрипт будет запущен автоматом. Можно немного усложнить, добавив пункт в контекстное меню файла, при котором файл будет открыт в иде и с авторан-скриптом.

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




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

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

f13nd пишет:
#include <idc.idc>
static main() { DelHotkey("Alt+1");AddHotkey("Alt+1","anyaction"); }
static anyaction(void) { }

а как бы сделать по anyaction() действие Toggle leading zeros для операнда текущей команды?

Добавлено спустя 26 минут
после загрузки открывается окно, в начале которого следующие строки:
CODE:0000 ; +-------------------------------------------------------------------------+
CODE:0000 ; | This file has been generated by The Interactive Disassembler (IDA) |
CODE:0000 ; | Copyright (c) 2017 Hex-Rays, <support@hex-rays.com> |
CODE:0000 ; +-------------------------------------------------------------------------+
CODE:0000 ; Processor : 8032 [RAM=65791 ROM=0 EPROM=0 EEPROM=0]
CODE:0000 ; Target assembler: ASMI
CODE:0000 ; Byte sex : Big endian
Как получить из скрипта Target assembler Вы мне ранее уже подсказали, а чем и как можно получить содержимое предыдущей строки Processor : 8032 ?




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

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

idc.set_flag(INF_OUTFLAGS,OFLG_LZERO,1)
И должно быть достаточно в авторан-скрипте выполнить один раз, горячая клавиша не нужна.

Добавлено спустя 4 минуты
PhilXe пишет:
Как получить из скрипта Target assembler Вы мне ранее уже подсказали, а чем и как можно получить содержимое предыдущей строки Processor : 8032 ?

По идее примерно так:
auto proc;
proc = sprintf("%s%s%s%s%s%s%s%s",GetCharPrm(INF_PROCNAME + 0),GetCharPrm(INF_PROCNAME + 1),GetCharPrm(INF_PROCNAME + 2),GetCharPrm(INF_PROCNAME + 3),
GetCharPrm(INF_PROCNAME + 4),GetCharPrm(INF_PROCNAME + 5),GetCharPrm(INF_PROCNAME + 6),GetCharPrm(INF_PROCNAME + 7));
Но эту возможность в 7.0 благополучно похерили. Переходи на питон, где idaapi.get_inf_structure().procname работает

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


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

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

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

f13nd пишет:
set_flag(INF_OUTFLAGS,OFLG_LZERO,1)

просто нет слов, снимаю шляпу перед Вами -- работает отлично!!!

теперь бы еще как-то получить текст строки "CODE:0000 ; Processor : 8032 [RAM=65791 ROM=0 EPROM=0 EEPROM=0]" в скрипте и получится обойти проблему невозможности создать из загрузчика сегмент FSR




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

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

Это профиль из .cfg, можно попробовать по-колхозному
area CODE code 0x0000:0x10000
area DATA RAM 0x0000:0x0100
area DATA FSR 0x0080:0x0100
сделать в каждом профиле уникальное имя какому-то из сегментов, имя сегмента можно будет забирать из скрипта get_segm_name(ea)

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




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

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

f13nd пишет:
Это профиль из .cfg, можно попробовать по-колхозному
сделать в каждом профиле уникальное имя какому-то из сегментов, имя сегмента можно будет забирать из скрипта get_segm_name(ea)

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

а есть ли возможность выгрузить конкретную строку во внешний файл и потом загрузить эту строку из файла?




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

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

PhilXe пишет:
а есть ли возможность выгрузить конкретную строку во внешний файл

Раздел "F I L E I / O" в idc\idc.idc

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





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

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

Наконец удалось перевести главу #65. Это самая большая глава. В ней почти 90 страниц, поэтому это заняло столько времени. Она будет разбита на несколько страниц. Завтра оформлю другие.
--> 65.1<--

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


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

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

--> 65.2<--

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


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

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

yashechka

А если себе рипнуть тело апи, могу тебе показать как это делается в десяток строк.

Тогда импорта не будет, прямое обращение к ядерному счётчику. Как же ты его изменишь, нужно отследить саму выборку(data fetch). Это не умеет отладчик.

-----
vx





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

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

--> 65.3<--

Добавлено спустя 3 минуты
Итак, друзья. Остался всего один последний перевод. Это глава #67 И я обещаю вложить в него душу и всё то, чему я научился за эти 66 глав. Он будет сразу релизным. На его основе я буду готовить весь курс снова сначала. Буду рад услышать комментарии и критику. А сейчас нужно только подождать, потому что там 66 страниц.

| Сообщение посчитали полезным: HandMill, mak, ksol
<< 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 » Выход » ЛС
   Для печати Для печати