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

 eXeL@B —› Основной форум —› Использование IDA Pro
<< 1 ... 36 . 37 . 38 . 39 . 40 . 41 . 42 . 43 . 44 . 45 . 46 ... 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.





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

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

долго же удавалось держать ветку "использование иды" от "релиза иды" отдельно
прям хоть в шапке прибивать большими и жирными ссылку на тему про релиз




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

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

Sark is an object-oriented scripting layer written on top of IDAPython.

https://github.com/tmr232/Sark

-----
127.0.0.1, sweet 127.0.0.1


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

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

Создано: 26 июня 2015 06:40
· Личное сообщение · #4

OKOB пишет:
Sark is an object-oriented scripting layer written on top of IDAPython.

На картинке ничо так выглядит. IMHO, если бы MyStruct поля имела, еще лучше бы смотрелось!




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

Создано: 26 июня 2015 10:57
· Личное сообщение · #5

Apokrif пишет:
если бы MyStruct поля имела, еще лучше бы смотрелось!

Фигня всё это, не умеет ИДА работать с перегружаемыми регистрами внутри функи (о одном блоке esi одна структура, в другом уже другая, причем границы блоков могут быть размыты), так и с перегружаемыми локальными данными. Поэтому проще всё это делается руками, чем такими инструментами как предложенный.

-----
Everything is relative...




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

Создано: 26 июня 2015 11:30
· Личное сообщение · #6

Vamit
Чего это не умеет? Все умеет. Только ручками нужно каждый вход указывать. Или научить ее трейсить.
В хексрее она это делает автоматом, а вот в окне дизасма нет.

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





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

Создано: 26 июня 2015 11:41
· Личное сообщение · #7

r_e пишет:
В хексрее она это делает автоматом, а вот в окне дизасма нет.

Про хексрей и слова не было, всё что написал относится к Шарку и самой ида.

-----
Everything is relative...




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

Создано: 03 июля 2015 22:44
· Личное сообщение · #8

Создал плагин для Ida Pro 6.6 с использованием SDK 6.6.
В процессе его работы вывожу лог того, что он делает в "output window". Для этого, как будто, предназначена функция msg( ... ), но после старта плагина ( а он работает довольно долго ) окно иды висит и ничего никуда не выводится. Потом, через несколько минут, когда плагин заканчивает работу ( т.е. выходит из метода run ), ида "развешивается" и в окно оптом выводится пачка моих сообщений.

Это так задумано, или я делаю что то неправильно?




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

Создано: 03 июля 2015 22:56
· Личное сообщение · #9

сделайте текстовый буфер, туда пишите лог,
а после окончания своих действий выведите буфер в msg()



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

Создано: 03 июля 2015 23:11 · Поправил: ion
· Личное сообщение · #10

reversecode пишет:
сделайте текстовый буфер, туда пишите лог,
а после окончания своих действий выведите буфер в msg()


Хотелось бы видеть сообщения в процессе работы плагина, а не после. В этом проблема!
А так можно и в текстовый файл их выводить...




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

Создано: 03 июля 2015 23:16
· Личное сообщение · #11

если хотите в процессе то выводите не в ида окно, а в отдельное window окно как это выводит ida при загрузке dwarf debug info,
думаю IDA тяжело одновременно крутить run и писать обновлять gui output window
тоже самое можно наблюдать если сделать все в idc скрипте,
пока он не отработает, ида зависает, и только потом показывает все в логе



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

Создано: 03 июля 2015 23:23
· Личное сообщение · #12

reversecode пишет:
если хотите в процессе то выводите не в ида окно, а в отдельное window окно


Есть ли у вас на примете хоть один рабочий пример такого плагина?

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




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

Создано: 03 июля 2015 23:36 · Поправил: reversecode
· Личное сообщение · #13

info() попробуйте



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

Создано: 03 июля 2015 23:41
· Личное сообщение · #14

Попробую, отпишусь.

Создал в методе run отдельный поток, чтобы не держать иду в этом методе и позволить ей обрабатывать оконные сообщения, а в этом потоке делал основную "плагиновую" работу.
Ида при этом крэшится с совершенно разными сообщениями. Видимо, многие методы SDK не являются потокобезопасными... Но если в новом потоке выводить только сообщения msg и больше ничего не делать, они выводятся немедленно и без проблем.




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

Создано: 03 июля 2015 23:47
· Личное сообщение · #15

если info не поможет, полистайте sdk на все где есть ключевое слово ui_mbox
там есть методы вывода месседж бокса с дальнейшей модификацией текста в нём
должно сыграть на плюс в скорости обновления



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

Создано: 04 июля 2015 00:02 · Поправил: ion
· Личное сообщение · #16

reversecode пишет:
info() попробуйте


info() это обычный MessageBox с кнопками. Модифицировать в нем текст, даже если бы это было возможно, извините, извращение! И опять же, этот метод - блокируемый. Пока какую нибудь кнопку в нем не нажмешь - из info не выйдешь. Так что это бесполезно.




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

Создано: 04 июля 2015 00:03
· Личное сообщение · #17

ion
Добавьте в цикл своего обработчика вот такую штуку и усё - wasBreak()

-----
Everything is relative...


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


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

Создано: 04 июля 2015 00:10
· Личное сообщение · #18

ion
говорю то что вижу, mbox формой в IDA выводят все что быстро меняется
предполагаю что msg и info по разному отрабатывается

Добавлено спустя 6 минут
функционал замены текста в mbox не я придумал, это ida sdk о нём намекает



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

Создано: 04 июля 2015 00:19
· Личное сообщение · #19

reversecode пишет:
mbox формой в IDA выводят все что быстро меняется


Все методы, которые выводят MessageBox - блокируемые. Программа висит в них, пока вы не нажмете какую нибудь кнопку.




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

Создано: 04 июля 2015 00:24 · Поправил: reversecode
· Личное сообщение · #20

ion
я не сказал что я знаю как плагин dwarf.plw выводит в message box не блокируя при этом ничего
по апи вызовам вижу что есть всякие callui(ui_***) методы, и msg info wasBreak show_wait_box там присутсвуют



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

Создано: 04 июля 2015 00:25
· Личное сообщение · #21

Vamit пишет:
Добавьте в цикл своего обработчика вот такую штуку и усё - wasBreak()


wasBreak не помогает ни перед msg, ни после. А это что, аналог Application.DoEvents() из .NET ?
Из описания в SDK не похоже, чтобы этот метод проталкивал оконные сообщения из очереди.
Или ваше усё означает что то иное?




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

Создано: 04 июля 2015 00:43 · Поправил: reversecode
· Личное сообщение · #22

replace_wait_box кстати тоже используется в dwarf.plw плагине

Добавлено спустя 5 минут
сначала первый вызов show_wait_box а потом replace_wait_box столько сколько нужно
в конце закрытия окна hide_wait_box
вроде так

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

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

Создано: 04 июля 2015 01:04
· Личное сообщение · #23

reversecode пишет:
сначала первый вызов show_wait_box а потом replace_wait_box столько сколько нужно
в конце закрытия окна hide_wait_box
вроде так


Спасибо, помогло!
Действительно, сначала show_wait_box, а затем в цикле своего обработчика msg и сразу после него wasBreak. Т.ч. совет wasBreak от Vamit не совсем усё
Получается, что show_wait_box запускает цикл обработки оконных сообщений, а wasBreak действительно проталкивает очередное сообщение в очереди и таким образом msg проходят в "output window".




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

Создано: 04 июля 2015 09:33 · Поправил: Vamit
· Личное сообщение · #24

show_wait_box я не делал, он предназначен для вывода своих сообщений в отдельное окно ожидания. wasBreak() же прерывает процесс вашего обработчика и дает отработать идашной ГУИ, возможно обновление окна сообщений как-то завязано с обработчиками новых окон или окном дизасма. У меня в основном рабочем цикле перед вызовом wasBreak() ещё иногда вызывается callui(ui_showauto, addr, AU_NONE);, но и одного wasBreak() должно быть достаточно, по крайней мере в ИДА 5.2 у меня всё работало, на более поздних не проверял...
Но у меня Ида поставлена в режим ожидания такими строками
show_wait_box("Decompiling...");
callui(ui_setstate, st_Work);
но, они вызываются однократно перед началом обработки, в цикле же только wasBreak()...

-----
Everything is relative...


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

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

Создано: 05 июля 2015 02:45
· Личное сообщение · #25

Vamit пишет:
но, они вызываются однократно перед началом обработки, в цикле же только wasBreak()


Я об этом и писал:
... сначала show_wait_box, а затем в цикле своего обработчика msg и сразу после него wasBreak ...
Можно и без msg, тогда вместо него любое сообщение в окно иды должно перерисовываться, например ваше callui(ui_showauto, addr, AU_NONE)



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

Создано: 06 июля 2015 20:38 · Поправил: ion
· Личное сообщение · #26

Ида после анализа из некоторых данных сформировала структуры.
Например:

.text:004132D5 dd offset off_417B90 ; PropType
.text:004132D5 dd 0FF0001F8h ; GetProc
.text:004132D5 dd 0FF0001F8h ; SetProc
.text:004132D5 dd 1 ; StoredProc
.text:004132D5 dd 80000000h ; Index
.text:004132D5 dd 1 ; Default
.text:004132D5 dw 0Bh ; NameIndex
.text:004132D5 db 10,'AutoSelect' ; Name

Как в иде выяснить, что это за структура?
______________________________________________________________

Нашел.
Нужно правой кнопкой мыши по адресу и выбрать "List cross references from...",
или на клавиатуре "Ctrl+J" и в открывшемся окне будет искомая структура.



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

Создано: 08 июля 2015 17:05 · Поправил: ion
· Личное сообщение · #27

Подскажите, пожалуйста, как средствами ида SDK назначить тип какому нибудь полю вновь созданной структуры в "C notation"
( как это делается с помощью клавиши "Y - Set type..." в оболочке )? Скажем, void**
______________________________________________________________________________

И снова отвечаю сам...

1. Получаем тип поля структуры в "C notation":
Code:
  1. struc_t*  struc;
  2.  
  3. member_t* strucMember;
  4. tinfo_t   tif;
  5. qstring   qs;
  6.  
  7. strucMember = get_member_by_name( struc, "field_0" ); // Здесь имя нужного поля в структуре
  8. // Или можно по смещению
  9. // strucMember = get_member( struc, 0 );
  10.  
  11. if( get_member_tinfo2( strucMember, &tif ) )
  12. {
  13.   print_tinfo( &qs, 0, 0, 0, 0, &tif, 0, 0 );
  14. }
  15.  
  16. // В gs - тип поля "field_0" в "C notation"


2. Задаем тип полю структуры в "C notation":
Code:
  1. struc_t*  struc;
  2.  
  3. member_t* strucMember;
  4. tinfo_t   tif;
  5.  
  6. strucMember = get_member_by_name( struc, "field_0" ); // Здесь имя нужного поля в структуре
  7. // Или можно по смещению
  8. // strucMember = get_member( struc, 0 );
  9.  
  10. if( parse_decl2( idati, "void**;", 0, &tif, PT_TYP ) ) // Здесь описание задаваемого типа в "C notation" с ";" в конце!
  11. {
  12.   if( !set_member_tinfo2( struc, strucMember, 0, tif, 0 ) )
  13.   {
  14.     // Ошибка
  15.   }
  16. }


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

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

Создано: 14 июля 2015 06:41 · Поправил: Apokrif
· Личное сообщение · #28

ion пишет:
Подскажите, пожалуйста, как средствами ида SDK
...
И снова отвечаю сам:

Может вам лучше начать новый топик, типа "IDA SDK: записки постороннего"



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

Создано: 19 июля 2015 10:40
· Личное сообщение · #29

Есть код на подобии:

add edi, 4
cmp edi, 7
ja loc1
jmp 401000[edi*4]
loc2:
...
loc3:
...
loc4:
...

По адресу 401000 лежит таблица адресов состоящая из loc2, loc3, loc4, etc...
Вроде бы ничего криминального, но IDA пишет switch analysis failed и указывает на строку с jmp 401000[edi*4]

Что с этим можно сделать?



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

Создано: 19 июля 2015 11:35
· Личное сообщение · #30

Edi-Other-Specify switch idiom...

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

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

Создано: 22 июля 2015 11:47
· Личное сообщение · #31

Кто-нибудь знает, есть ли скрипт какой (или еще какой способ) подправить негативные смещения в структурах? (эт когда вместа указателя на начало передает указатель где-то на середину и при обращении к первым элементам структуры - минусует).


<< 1 ... 36 . 37 . 38 . 39 . 40 . 41 . 42 . 43 . 44 . 45 . 46 ... 50 . 51 . >>
 eXeL@B —› Основной форум —› Использование IDA Pro
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати