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

 eXeL@B —› Основной форум —› Использование IDA Pro
<< 1 ... 27 . 28 . 29 . 30 . 31 . 32 . 33 . 34 . 35 . 36 . 37 ... 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.




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

Создано: 19 марта 2013 14:11
· Личное сообщение · #2

Структуры можно еще через окно "Local types" (Shift+F1) создавать.




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

Создано: 19 марта 2013 15:49 · Поправил: reversecode
· Личное сообщение · #3

можно, это тоже самое что загружать(парсить) структуры с .h файла с меню Ctlr+F9

но это не удобно когда не знаешь размерность полей, но знаешь размерность всей структуры(класса),
поэтому сначала набираешь всю размерность в dword массивом минус 4 байта(-4), последний елемент ставится dword(вместо этих 4 байт) что бы структура не плавала по размеру если она уже гдето вложена в другую, а потом этот массив по чуть чуть бьется по мере разбора структуры

так вот неудобность в том что в IDA нет функционала набить всю структуру сразу dword полями ! а не массивом,
а то что делает hexrays в меню create new struct type - это просто лол,
поэтому проще набирать как я описал выше.
для быстрого создания я обычно бью массив dword на /2, каждый раз следующий на /2 меньше
получается этакая struct которая идет сначала от массива /2 всей структуры,
до /N пока не превратится в ~10 полей dword
ну и по мере обнаружения новых полей, массив опять бью по /2 по мере заполнения пустого места




Ранг: 209.5 (наставник), 42thx
Активность: 0.10
Статус: Участник
WinCE ARM M@sTeR

Создано: 27 марта 2013 15:16
· Личное сообщение · #4

Решил тут процессорных модулей пописать, API конечно доставляет, начинаю понимать Hexxxа
Есть чувство что I am doing it wrong, так как xref то теряются (loc_xxxx отображается, а xref на него не показывает), то исчезают куда-то прямо во время скроллинга кода, то конец функции оказывается в ее середине.

Поэтому собственно вопросы:
1. В чем отличие add_cref от ua_add_cref
Я так понял что первая создает видимую запись в таблице xref между двумя адресами, то есть как бы использовать надо для принудительных ссылок. Вторая кажется нужна только для эмулятора чтобы показать куда ему тыкнуться дальше для анализа кода. Так ли это?

2. Как правильно заставить эмулятор перейти на участок кода для анализа, на который никто не ссылается, ну типа interrupt handler? То есть адрес известен уже, лежит в cfg допустим, надо просто натравить на него анализатор/эмулятор.
Видимо что-то из этого: ua_add_cref(0, addr, fl_CN) или create_insn(addr)
Во втором варианте непонято пойдет ли дальше.

3. Каков у IDA алгоритм определения конца функции (если он вообще есть)?

Всем спасибо

-----
Get busy living or get busy dying ©


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


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

Создано: 27 марта 2013 18:22 · Поправил: reversecode
· Личное сообщение · #5

а в SDK ничего нету?

Code:
  1. // Create a code cross-reference
  2. //      from    - linear address of referencing instruction
  3. //      to      - linear address of referenced  instruction
  4. //      type    - cross-reference type
  5. // returns: success
  6.  
  7. idaman bool ida_export add_cref(ea_t from, ea_t to, cref_t type);

Code:
  1. // Add a code cross-reference from the current instruction (cmd.ea)
  2. //      opoff - offset of the operand from the start of instruction
  3. //              if the offset is unknown, then 0
  4. //      to    - target linear address
  5. //      type  - type of xref
  6.  
  7. idaman void ida_export ua_add_cref(int opoff, ea_t to, cref_t type);


а примеры в SDK где 44 модуля уже реализованы не помогает?


add: какой то очередной плагин для vtbl
IDA Pro plugin for identifying functions on C++ and COM objects virtual tables --> Link <--

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


Ранг: 209.5 (наставник), 42thx
Активность: 0.10
Статус: Участник
WinCE ARM M@sTeR

Создано: 28 марта 2013 01:50 · Поправил: Getorix
· Личное сообщение · #6

reversecode

Бро, ты че такой злой?

С каких пор ручной поиск по заголовочным файлам с угадыванием назначения функций по невнятному описанию стал назваться чтением SDK?

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

Описания этих двух функций я естесственно видел, только вот там не написано в чем приемущество ua_add_cref перед add_cref. Поскольку первая неявно использует cmd.ea то единственное отличие - параметр opoff. Ну и чем тогда
Code:
  1. ua_add_cref(op.offb, addr, fl_CN)

лучше чем
Code:
  1. add_cref(cmd.ea, addr, fl_CN)
? Что дает иде знание этого офсета?

Идем дальше, есть такая конструкция (branch table)
Code:
  1. ROM:100                 .long 0x200 ; foo_1
  2. ROM:104                 .long 0x300 ; foo_2


xref создаем через add_cref, теперь хорошо бы отобразить в виде offset:
Code:
  1. ROM:100                 .long sub_200 ; foo_1
  2. ROM:104                 .long sub_300 ; foo_2


для операнда инструкции существует op_offset, а где в offset.hpp функция для преобразования данных в offset? Я конечно проверил - op_offset(addr, 0, REF_OFF32) работает нормольно, но я же должен ЧИТАТЬ SDK, а там - "// Convert operand to a reference"

P.S. Так и хочется добавить себе подпись "я помню кряклаб где на вопросы еще отвечали"

-----
Get busy living or get busy dying ©





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

Создано: 28 марта 2013 01:55 · Поправил: reversecode
· Личное сообщение · #7

почему злой? я нормально вроде ответил
малоли как вы там пишите модуль, может вообще в SDK не смотрели,
а тот кто действительно знает все ответы о IDA.. ну вы поняли кто, врядли сюда зайдет помогать, да и вообще помогать здесь не будет))


Code:
  1. int __stdcall ua_add_cref(int opoff, int to, int type)
  2. {
  3.   int addr;
  4.  
  5.   if ( opoff )
  6.   {
  7.     addr = get_name_base_ea(cmd.ea + opoff, to);
  8.     if ( addr != to )
  9.     {
  10.       type |= XREF_TAIL;
  11.       to = addr;
  12.     }
  13.   }
  14.   return add_cref(cmd.ea, to, type);
  15. }





Ранг: 527.7 (!), 381thx
Активность: 0.160.09
Статус: Участник
Победитель турнира 2010

Создано: 08 апреля 2013 14:01 · Поправил: OKOB
· Личное сообщение · #8

VTBL is an IDA script which identifies all the virtual tables found in any module of a native process. The virtual tables can be related to a COM or a C++ class. Unlike other tools, ours does not depend on a specific compiler to obtain a virtual table. This makes it an essential tool for reverse engineers.

--> VTBL IDA Pro Plugin <--

........ Sorry Прозевал.

-----
127.0.0.1, sweet 127.0.0.1





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

Создано: 08 апреля 2013 14:39
· Личное сообщение · #9

Создано: 27 марта 2013 18:22:42 · Поправил: reversecode
reversecode пишет:
add: какой то очередной плагин для vtbl
IDA Pro plugin for identifying functions on C++ and COM objects virtual tables --> Link <--


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

Ранг: 210.5 (наставник), 2thx
Активность: 0.140
Статус: Участник

Создано: 13 апреля 2013 00:28
· Личное сообщение · #10

IDA Toolbag

see: http://thunkers.net/~deft/code/toolbag/docs.html
get: https://github.com/aaronportnoy/toolbag/




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

Создано: 13 апреля 2013 01:15
· Личное сообщение · #11

Toolbag requires IDA version 6.2 or greater

-----
DREAMS CALL US


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

Ранг: 46.1 (посетитель), 1thx
Активность: 0.02=0.02
Статус: Участник

Создано: 20 апреля 2013 04:35 · Поправил: carver
· Личное сообщение · #12

ребята, подскажите, а то не могу нагуглить.
глючит связка ida+qemu-ARM, и незнаю куда копать.

если грузить прошивку по 0x07000000 - то debug ОК,
если прошивку грузонуть на 0x09000000(ну и выше), а потом debug -
то вместо кода - в ida уже одни нули.
догадываюсь шо затык на границе 0x08000000, но вроде в ida - уже все менял.

ида - как у большинства, qemu пробовал разных версий.

понимаю шо тут ида/виндовс, но может кто сталкивался и решил ?



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

Создано: 08 мая 2013 14:24
· Личное сообщение · #13

Добрый день, несколько лет не занимался реверсом, да и раньше с IDA 5.2 не особо работал, все больше Olly.

Имеется программа, отлаживаю ее в IDA, программа загружает DLL-ку, ищет в ней функцию и вызывает ее,
я могу открыть эту DLL-ку в IDA, тогда она начнет ее анализировать, строить GraphView и т.д., но когда я в процессе отладки захожу внутрь этой функции - как вызвать анализ и возможно ли это?



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

Создано: 08 мая 2013 15:07
· Личное сообщение · #14

Wyfinger
Нажать C (Code) либо P (Procedure) - ида тебе создаст код или функцию. Но анализ будет корректен только в течении данной отладочной сессии. Если нужно отлаживать именно длл - загрузи ее в ида и проанализируй. В свойствах процесса установи на запуск основную программу, поставь на нужной функции бряк и запускай отладку.

0a8c_08.05.2013_EXELAB.rU.tgz - 1.PNG

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




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

Создано: 08 мая 2013 19:24
· Личное сообщение · #15

При выполнении плагина к некоторым инструкциям дописываются аnterior/posterior lines, используя функцию describe(...) из SDK, а в некоторых случаях, их(lines) необходимо удалить, вопрос как, используя какую функцию?




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

Создано: 08 мая 2013 20:26
· Личное сообщение · #16

fermopili
Попробуйте в качестве параметра передавать пустую строку или nullptr

-----
DREAMS CALL US




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

Создано: 09 мая 2013 09:36
· Личное сообщение · #17

При задании в качестве параметра пустой строки добавляется пустая строка без признака коментария ";", а если задавать nullptr заносится мусор.




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

Создано: 09 мая 2013 23:05 · Поправил: =TS=
· Личное сообщение · #18

Что-то нашёл в lines.hpp, пока что проверить не могу, возможно ExtraKill или ExtraFree
Code:
  1. // Every anterior/posterior line has its number.
  2. // Anterior  lines have numbers from E_PREV
  3. // Posterior lines have numbers from E_NEXT
  4. const int E_PREV = 1000;
  5. const int E_NEXT = 2000;
  6. bool                  ExtraLines (ea_t ea, int start); // 1-overflow
  7. void                  ExtraKill  (ea_t ea); // kill all extra lines
  8. idaman int ida_export ExtraFree  (ea_t ea, int start);

И есть ещё в nalt.hpp
Code:
  1. ExtraDel(ea, E_PREV + n) / ExtraDel(ea, E_NEXT + n)

где n: number of anterior/posterior additional line, от 0 включительно.

-----
DREAMS CALL US




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

Создано: 10 мая 2013 16:31
· Личное сообщение · #19

ExtraKill и ExtraLines имеют описание на нет самого тела, выдает ошибки
[Linker Error] Unresolved external 'ExtraKill(unsigned int)' referenced from
[Linker Error] Unresolved external 'ExtraLines(unsigned int, int)' referenced from, судя повсему самого тела функций нет, ExtraFree почему-то не работает, а работает ExtraDel. Спасибо.



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

Создано: 30 мая 2013 17:54
· Личное сообщение · #20

нужно скриптом получить список всех импортируемых функций
делал так:
for func in Functions(SegStart(SegByName(".idata")), SegEnd(SegByName(".idata"))):
print "%x" % func

вывод пустой, если взять сегмент .text, то все нормально
как правильно ?




Ранг: 527.7 (!), 381thx
Активность: 0.160.09
Статус: Участник
Победитель турнира 2010

Создано: 30 мая 2013 23:38
· Личное сообщение · #21

skif2008 пишет:
как правильно ?


скролинг окна с шифтом и копирование инфы в буфер.
предварительно отключить перекрестные ссылки.

-----
127.0.0.1, sweet 127.0.0.1




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

Создано: 04 июня 2013 08:03 · Поправил: V0ldemAr
· Личное сообщение · #22

IDA 6.4 Plus http://pan.baidu.com/share/link?shareid=492773&uk=51122408 ( под паролем )
MD5: eb89813a53cd5c13a2ea9d5a01e9a82d

Боян?

Ок сорри за оффтоп тут уже было https://ssl.exelab.ru/f/action=vthread&forum=3&topic=15481&page=19#24
Немог найти топ об ИДЕ ...



Ранг: 29.8 (посетитель), 9thx
Активность: 0.020
Статус: Участник

Создано: 04 июня 2013 18:46
· Личное сообщение · #23

V0ldemAr
Там была вроде тест2, а эта тест3.



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

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

V0ldemAr

ida Pro 6.4 Plus Test3
1 lifting of time limits
2 out of every 30 minutes prompt lifting restrictions
3 Copy and paste the restrictions lifted
4 Batch restrictions lifted. . .
5 add plug-in support and F5 function
6 Save idc increased functionality Shift + s (save the analysis can be based on time to achieve save multiple snapshots)
7 increase the variety dongle sig
8 increase the variety of iphone sig identification system library
9 directly modify the file functions to increase ida plugin
10 increase in the debugger to debug your plug hidden Fanfan
11 increased recognition algorithm plug
12 simultaneous analysis plug-ins to increase ida_sync
13 increased arm code plugin I K key shortcuts
14 add two binary data copy and paste plugin
15 additional resources export plug
16 increase UniCodeString and Unicode Convert plugins to enhance the character analysis
Test Environment winxp normal win7x64 have some analogy close feature does not function properly
Reply With Quote

-----
...или ты работаешь хорошо, или ты работаешь много...




Ранг: 134.1 (ветеран), 246thx
Активность: 0.220.1
Статус: Участник
realist

Создано: 04 июня 2013 19:11
· Личное сообщение · #25

V0ldemAr пишет:
IDA 6.4 Plus http://pan.baidu.com/share/link?shareid=492773&uk=51122408 ( под паролем )

Пароль: IdaPro64By20130510DalaoQQ79234668

| Сообщение посчитали полезным: antipod, VodoleY, ARCHANGEL

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

Создано: 05 июня 2013 13:16
· Личное сообщение · #26

ток чето при попытки отдизасмить чтото, падает ида.. (7ка х64)

-----
Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме....





Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 05 июня 2013 15:18
· Личное сообщение · #27

Так, ёпта, Save же не работает.

-----
Stuck to the plan, always think that we would stand up, never ran.





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

Создано: 10 июня 2013 09:54
· Личное сообщение · #28

оказывается китайцы давно сделали плагин мапинга переменных
мапинг который появился только в 1.6 хекс рее
плаг конечно же для 1.5 рейса

d7e7_10.06.2013_EXELAB.rU.tgz - 1366305549221.rar

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

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

Создано: 10 июня 2013 12:24 · Поправил: sendersu
· Личное сообщение · #29

что за мапинг переменных
можно поподробней пож-та?
на екзетуле еще видел плагин что чинит работу с float-ами для рея
может он?

upd: вот он http://forum.exetools.com/showthread.php?t=14388&highlight=hexrays




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

Создано: 10 июня 2013 12:30 · Поправил: reversecode
· Личное сообщение · #30

когда много переменных, упрощать выражения
А -> B -> C -> D -> .... = A
на сайте ильфака и в блоге помоему по 1.6 рейсу это показывалось

--> Link <--

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

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

Создано: 14 июня 2013 12:03
· Личное сообщение · #31

Как программно перерисовать экран в IDA ? ( проблема возникла из-за того, что в некоторых случаях цветовые. тестовые и другие изменения вносимые плагином не отображаются на экране, а проявляются после принудительного скроллинга экрана). Долго мучился пока не нашел функцию invalidate_dbg_state.
Пишем в программе
Code:
  1. invalidate_dbg_state(DBGINV_REDRAW);
и проблема решена. Может кому пригодится.


<< 1 ... 27 . 28 . 29 . 30 . 31 . 32 . 33 . 34 . 35 . 36 . 37 ... 50 . 51 . >>
 eXeL@B —› Основной форум —› Использование IDA Pro
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати