Сейчас на форуме: -Sanchez- (+6 невидимых)

 eXeL@B —› Основной форум —› Использование IDA Pro
<< 1 ... 45 . 46 . 47 . 48 . 49 . 50 . 51 . >>
Посл.ответ Сообщение

Ранг: 271.5 (наставник), 12thx
Активность: 0.150
Статус: Участник
Packer Reseacher

Создано: 08 августа 2008 18:53
· Личное сообщение · #1

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

Сегодня в Options->Color настроил основное окно дизассемблера все в старом классическом стиле Borland ща стало или в стиле Far(для справки первая версия была написана на Borland C++), но когда подносишь курсор на jne\je то в хинте появляется фон бежевый. Вот никак не могу найти место где это настраивается?! Может кто шарит ? )

-----
My love is very cool girl.




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

Создано: 04 июля 2016 20:03
· Личное сообщение · #2

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



Ранг: 171.0 (ветеран), 11thx
Активность: 0.050
Статус: Участник

Создано: 04 июля 2016 20:34 · Поправил: Apokrif
· Личное сообщение · #3

mixer632 пишет:
А не знаете как в ида сделать логирование функций


По идее, это д.б. breakpoint with custom action. В IDA есть breakpoint Condition и варианты Tracing Actions (Instruction, Function and Basic block), а вот прикрутить свою функцию (custom action) похоже что нельзя...

Этот логгинг нужно в Condition записать, тут пример.



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

Создано: 04 июля 2016 21:17
· Личное сообщение · #4

Apokrif, с пухон какая-то бага.
C:\IDA68\plugins\python.plw: can't load file
Распаковал все в папку иды и поставил сам пухон. А плагин не грузится. Не знаете как это поправить ?



Ранг: 590.4 (!), 408thx
Активность: 0.360.18
Статус: Модератор

Создано: 04 июля 2016 22:43
· Личное сообщение · #5

mixer632
Проверь depends что все либы на месте.
Возьми ProcessMonitor и посмотри где ошибки.

-----
старый пень





Ранг: 150.3 (ветеран), 175thx
Активность: 0.160.07
Статус: Участник

Создано: 04 июля 2016 22:53 · Поправил: -=AkaBOSS=-
· Личное сообщение · #6

mixer632 пишет:
C:\IDA68\plugins\python.plw: can't load file

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



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

Создано: 05 июля 2016 01:04 · Поправил: mixer632
· Личное сообщение · #7

-=AkaBOSS=-, да получилось, 27 длл не хватало, на 6.8 ида завелось с хуками, на 6.1 чет хуки не срабатывали в скрипте.
А можете подсказать как на пухон сделать вывод строки, когда брякается прога в регистре R0 указатель на строку, хочу выводить в лог. Тут есть стандартные функции под это дело ?



Ранг: 171.0 (ветеран), 11thx
Активность: 0.050
Статус: Участник

Создано: 05 июля 2016 08:07
· Личное сообщение · #8

mixer632 пишет:
как на пухон сделать вывод строки, когда брякается прога в регистре R0 указатель на строку


Не пухон, а питон.
Пример был в пред. посте.



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

Создано: 05 июля 2016 12:19
· Личное сообщение · #9

Apokrif, да нашел, написал скрипт.
А есть идея как иду заставить проанализировать динамические секции, которых нет в статике в либе ?
Она их грузит, но не анализирует, можно ли как-то это устроить, чтобы руками не жать "c","p".




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 05 июля 2016 14:45
· Личное сообщение · #10

маркируете области которые нужно проанализировать и выбираете потом пункт - анализировать, должно сработать



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

Создано: 05 июля 2016 14:59
· Личное сообщение · #11

reversecode, пункт analyze select area я так понял, он делает, но куски кода красные, хочется чтобы еще после распознавания байт определял функции и убирал красные куски.




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 05 июля 2016 15:29
· Личное сообщение · #12

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



Ранг: 171.0 (ветеран), 11thx
Активность: 0.050
Статус: Участник

Создано: 05 июля 2016 20:28
· Личное сообщение · #13

Думаю, что при анализе, функции находятся примерно так:
Берутся все точки входа (module export)
Cтроится дерево переходов (call, jump, ret, interrupt, vmt, etc.)
И процесс повторяется.
Очевидно, есть способ отличить jump внутри функции от других - не суть важно.

Код не "найдется", если на него нет известных Иде способов перехода.
Пример такого кода - хитро вычисляемый call back, зашифрованная таблица переходов или самомодифицирующийся код

Garbage collectors работают примерно также. Если есть 2 объекта, которые указывают друг на друга и на которые нет ссылок извне - Garbage collector их вычислит, т.к. они не войдут в дерево ссылок.
Точно также и Ида эти функции не "найдет".

Если вы анализируете неизвестную область, для которой нет точек входа, то Иде просто не с чего начать. Как ей подсказать, зависит от конкретной ситуации.



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

Создано: 06 июля 2016 14:14
· Личное сообщение · #14

reversecode пишет:
напишите скрипт

Вроде работает, какие еще цепочки байт надо смотреть можете написать.
Code:
  1. a=0x4da0e001;
  2. b=SegEnd(a);
  3. print "b=0x%08x" % b;
  4. while(1):
  5.     if (== b):
  6.         break;
  7.     c0=Byte(a);
  8.     c1=Byte(+ 1);
  9.     if ((c1==0xb4) or (c1==0xb5) or ((c0 == 0x2d) and (c1 == 0xe9)) or ((c0 == 0x0) and (c1 == 0xc6))):
  10.         MakeCode(a);
  11.         MakeFunction(a);
  12.     a = a + 1;
  13. print("finish");





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

Создано: 08 июля 2016 14:42
· Личное сообщение · #15

Многие знают скрипт ms_rtti, восстанавливающий RTTI информацию о классах и выводящий её дамп, но вот печалька - он не восстанавливал информацию о базовых классах не имеющих реализаций, т.е. объявленных как __declspec(novtable), теперь эта погрешность устранена - дерево классов строится до самого корня.


810b_08.07.2016_EXELAB.rU.tgz - ms_rtti.idc

-----
Everything is relative...


| Сообщение посчитали полезным: r_e, plutos, reversecode, sendersu, 4kusNick, UniSoft, Hugo Chaves


Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 23 сентября 2016 20:39
· Личное сообщение · #16

Hex-Rays Plugin Contest Results 2016

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

Ранг: 15.0 (новичок)
Активность: 0.010
Статус: Участник

Создано: 24 октября 2016 19:50
· Личное сообщение · #17

подскажите как можно из ида функцию одну достать отредактировать и всунуть обратно ? Вот скрин этой функции https://yadi.sk/i/1Lf4HnNFxWcp6 И еще есть такой вот код

MOV R1, #0x01869f

Как его перевести в байты что б прописать в хекс редакторе ?



Ранг: 12.0 (новичок), 17thx
Активность: 0.060
Статус: Участник

Создано: 24 октября 2016 21:58
· Личное сообщение · #18

fff66 пишет: Как его перевести в байты что б прописать в хекс редакторе ?


Есть плагины для патчинга, там встроен ассемблер, название не помню, гуглите IDA + capstone, несколько их.




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

Создано: 24 октября 2016 23:12 · Поправил: DenCoder
· Личное сообщение · #19

fff66 пишет:
подскажите как можно из ида функцию одну достать отредактировать и всунуть обратно ? Вот скрин этой функции https://yadi.sk/i/1Lf4HnNFxWcp6 И еще есть такой вот код

MOV R1, #0x01869f

Как его перевести в байты что б прописать в хекс редакторе ?


Если без плагинов, то смотрим мануалы по arm, синтезируем опкоды нужных инструкций, дальше - Edit->Patch program-> Change byte и Edit->Patch program->Apply patch to input file.

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

Добавлено спустя 3 минуты
fff66 пишет:
Как его перевести в байты что б прописать в хекс редакторе ?


В Options -> General -> Disassembly -> Number of opcode bytes ставим 4 или 8 байт и видим байты опкодов для инструкций.

-----
IZ.RU




Ранг: 12.0 (новичок), 17thx
Активность: 0.060
Статус: Участник

Создано: 24 октября 2016 23:15
· Личное сообщение · #20

DenCoder пишет: Если без плагинов

Добавлю плагин, мб кому то еще пригодится.
--> Link <--

| Сообщение посчитали полезным: DenCoder, UniSoft, filyaxxxcom

Ранг: 15.0 (новичок)
Активность: 0.010
Статус: Участник

Создано: 26 октября 2016 19:11
· Личное сообщение · #21

DenCoder
В Options -> General -> Disassembly -> Number of opcode bytes ставим 4 или 8 байт и видим байты опкодов для инструкций.
Я про это знаю
Но в файле нету такой инструкции

MOV R1, #0x01869f

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




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

Создано: 26 октября 2016 19:27
· Личное сообщение · #22

9F 16 08 E3 01 10 40 E3 MOV R1, #0x1869F

Добавлено спустя 1 минуту
в ARM режиме

Добавлено спустя 10 минут
Если исходная инструкция была 4 байта, то будет проблемно:
1) пользоваться MOV - сдвигать весь код на 4 байта. Если используются релоки, то править таблицу релоков также. Может быть, есть места в коде, которые можно оптимизировать, тогда сдвигать кода надо будет меньше
2) пользоваться LDR - место до/после функции свободное/неиспользуемое место нужно найти, либо оптимизацией кода его выгадать
3) менее трудоёмко - вставить B на заменяемой инструкции, поискать свободное место в секции кода, и там вставить вашу MOV

Добавлено спустя 32 минуты
В Thumb-режиме то же 8 байт, но другие:
48 F2 9F 61 C0 F2 01 01 MOV R1, #0x1869F

-----
IZ.RU




Ранг: 15.0 (новичок)
Активность: 0.010
Статус: Участник

Создано: 26 октября 2016 20:07
· Личное сообщение · #23

DenCoder
Спасибо вам огромное последний вопрос
Как через что переводили?
Я пробовал через этот онлайн конвертер http://armconverter.com/ но выбивало ошибку




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

Создано: 26 октября 2016 23:40
· Личное сообщение · #24

fff66 пишет:
Как через что переводили?

ARM® Architecture Reference Manual
ARMv7-A and ARMv7-R edition


Добавлено спустя 0 минут
Ну и патчинг в иде, чтоб проверить )

-----
IZ.RU




Ранг: 171.0 (ветеран), 11thx
Активность: 0.050
Статус: Участник

Создано: 27 октября 2016 21:04
· Личное сообщение · #25

DenCoder пишет:
менее трудоёмко - вставить B на заменяемой инструкции, поискать свободное место в секции кода, и там вставить вашу MOV

Вот кто бы еще показал "на пальцах", как добавить свободного места в секцию кода на ARM/Thumb...



Ранг: 15.0 (новичок)
Активность: 0.010
Статус: Участник

Создано: 07 ноября 2016 21:17
· Личное сообщение · #26

Подскажите пжл в чем проблема может быть Переустановил виндоус при закрытии Ида вылазит вот эта ошибка

Скрин https://cloud.mail.ru/public/6Qmp/S8d5GxVn3

Версия ида IDA Pro 6.8 качал вот отсюда http://rutracker.org/forum/viewtopic.php?t=5129253
До переустановки такой проблемы не было Может чего не установил на компе?




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

Создано: 08 ноября 2016 23:17
· Личное сообщение · #27

Apokrif пишет:
Вот кто бы еще показал "на пальцах", как добавить свободного места в секцию кода на ARM/Thumb...

Как вариант, оптимизировать!
Часто код на ARM никак не оптимизирован по размеру )

Есть немного словей для выравнивания, ещё где-то можно выгадать место...

fff66 пишет:
Версия ида IDA Pro 6.8 качал вот отсюда http://rutracker.org/forum/viewtopic.php?t=5129253

Патчи, может быть, забыли поставить?

-----
IZ.RU




Ранг: 15.0 (новичок)
Активность: 0.010
Статус: Участник

Создано: 08 ноября 2016 23:42
· Личное сообщение · #28

DenCoder Эмммм а что за падчи надо ставить? Раскажите пжл вы про это http://rutracker.org/forum/viewtopic.php?p=71747600#71747600 ? Я уже сделал так как он там писал только не понял я вот этого запустить ключ ida_6bb0aca0ba44505df2d0ee90dea765aa.key Хотя до переустановки винды я ничего такого не делал просто поставил и все работало на ура. Может чего то не хватает у меня на компе ? Microsoft .NET Framework к примеру или Microsoft Visual C или ида должна работать и так нормально без этих фрамеворков и т д ? Я в интернете находил такую ошибку пишут переустановить ида но я уже раз 10 удалял и ставил А может хвосты остались от ида ? Или запись в реестре компа и поэтому ида падает?



Ранг: 512.7 (!), 360thx
Активность: 0.270.03
Статус: Модератор

Создано: 09 ноября 2016 00:50
· Личное сообщение · #29

я б попробовал на вашем месте такое
1) прогнать запуск под процмоном - может он чего подскажет где ида больно грохается
2) раскрутить дамп файл найдя нужную утварь
еще можно депендсом глянуть все зависимости..



Ранг: 171.0 (ветеран), 11thx
Активность: 0.050
Статус: Участник

Создано: 10 ноября 2016 06:53
· Личное сообщение · #30

DenCoder пишет:
Как вариант, оптимизировать!
Часто код на ARM никак не оптимизирован по размеру )
Есть немного словей для выравнивания, ещё где-то можно выгадать место...

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



Ранг: 11.7 (новичок)
Активность: 0.010
Статус: Участник

Создано: 21 ноября 2016 00:41
· Личное сообщение · #31

Ребят, а у идапухон скриптов есть команды типа продолжить выполнение кода.
Хочу в функцию обработчик бряков в конце добавить команду типа нажатие кнопки F9.
Code:
  1. def dbg_bpt(self, tid, ea):
  2.         print "[*] Hit: 0x%08x" % ea
  3.          DelBpt( ea )
  4.         //Вот тут что-то чтобы ида продолжила сама исполнять код.
  5. return

Я ломаю игрушку-стрелялку, там на союзниках вместо прицела показывает окошко, хочу найти функцию, которая решает прицел или нет на объекте игроку показать.
Я решил поставить бряки на все sub_xxxx и чтобы скрипт поудалял бряки со всех функций, которые вызываются, когда нет прицела на экране, а потом что останется в них искать.
Прокатит ли такой способ найти код, который работает в момент вывода на экране прицела ?


<< 1 ... 45 . 46 . 47 . 48 . 49 . 50 . 51 . >>
 eXeL@B —› Основной форум —› Использование IDA Pro
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати