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





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

Создано: 05 апреля 2016 23:11 · Поправил: DenCoder
· Личное сообщение · #2

Apokrif
idc:
1) File->idc script
2) GetRegValue
3) DbgDword
4) Jump

Добавлено спустя 11 минут
Что-то вроде
Code:
  1. Jump(DbgDword(GetRegValue("ebp") - 8))


-----
IZ.RU


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

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

Создано: 06 апреля 2016 15:26 · Поправил: fermopili
· Личное сообщение · #3

При перемещении курсора по по тексту на экране IDA автоматически подсвечивает желтым цветом текущую подстроку символов под курсором, которую она считает как какое-либо имя. Программно я могу выставить курсор в необходимую позицию строки на нужную мне подстроку, однако данная подстрока не выделяется цветом. Если же после этого сместить курсор вправо или влево (ручками) - подстрока будет выделена желтым цветом.
Всвязи с этим два вопроса :

1 - как программно выделить цветом подстроку под курсором
2 - как поменять программно цвет выделения



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

Создано: 06 апреля 2016 18:27 · Поправил: Apokrif
· Личное сообщение · #4

DenCoder пишет:
Jump(DbgDword(GetRegValue("ebp") - 8))

Нормально!
А можно как-то shortcut-ы настроить (из этого же самого скипта?), что бы автоматом отрабатывать:
Alt-2 -> Jump(DbgDword(GetRegValue("ebp") - 2))
Alt-4 -> Jump(DbgDword(GetRegValue("ebp") - 4))
И т.д.?
В смысле, выполнить скрипт один раз, чтобы он остался в памяти до закрытия Иды?
Или это нужно как-то по-другому делать?

Вижу команды AddHotkey/DelHotkey, но нет pushActiveWindow, focusHexDump, popActiveWindow...




Ранг: 622.6 (!), 521thx
Активность: 0.330.89
Статус: Участник
_Вечный_Студент_

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

Пытаюсь написать свой IDA processor module.
Readme.txt из SDK рекомендует следующий подход: бери уже существующие примеры и меняй под себя то, что нужно менять.

"Naturally, it is easier to copy and to modify example files than to write
your own files from the scratch."


А хотелось бы взять уже существующий модуль (*.w32 или *.w64) и пройтись через него под debuggеr'om, чтобы увидеть, что там происходит в "живом исполнении".

Тот же Readme.txt про debugging пишет следующее:

"Debugging:
You can use the following debug print functions:
deb() - display a line in the messages window if -z command line switch is specified. You may use debug one of:
IDA_DEBUG_IDP, IDA_DEBUG_LDR, IDA_DEBUG_PLUGIN
msg() - display a line in the messages window
warning() - display a dialog box with the message

To stop in the debugger when the module is loaded, you may use the
BPT macro construct in the module initialization code."

Но я как-то не соображу, как именно начинать debugging session, что куда загружать и что нажимать, ведь ida kernel принимает в работе модуля самое активное участие.
Буду признателен за любые детали и подробные шаг за шагом инструкции!

-----
Give me a HANDLE and I will move the Earth.





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

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

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

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


Ранг: 622.6 (!), 521thx
Активность: 0.330.89
Статус: Участник
_Вечный_Студент_

Создано: 14 июня 2016 23:10 · Поправил: plutos
· Личное сообщение · #7

reversecode пишет:
подменяешь оригинальный модуль пытаешься работать со своим,


хочу уточнить:
"свой" в данном случае означает тот, куда мы только что добавили дебуг функции?

и второй вопрос: А как насчет stepping, tracing, breakpoints?
Kак именно использовать BPT macro construct in the module initialization code?

-----
Give me a HANDLE and I will move the Earth.





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

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

1) да
2) ида отлаживать ида ?) ну тоже прикольно, но одна ида врядли запустит отладку своего же модуля, я даже не представляю как это будет выглядеть
или про какие степинг трейсинг бп идет речь ?

а под той фразой мне кажется подразумевалось что использование BPT заставит сгенерить инт3 и вызов внешнего дебугера если он следит за ида как за программой

сама себя ида вряд ли будет отлаживать

Добавлено спустя 8 минут
pro.h

Code:
  1. // debugging macros
  2. /// \def{ZZZ, debug print}
  3. /// \def{BPT, trigger a breakpoint from IDA. also see #INTERR}
  4. #define ZZZ msg("%s:%d\n", __FILE__, __LINE__)
  5. #if defined(__BORLANDC__)
  6. #  define BPT __emit__(0xcc)
  7. #  define __FUNCTION__ __FUNC__
  8. #elif defined(__GNUC__)
  9. #  if defined(__arm__) || defined(__aarch64__)
  10. #    ifdef __LINUX__
  11. #      define BPT __builtin_trap()
  12. #    else
  13. #      define BPT asm("trap")
  14. #    endif
  15. #  else
  16. #    define BPT asm("int3")
  17. #  endif
  18. #elif defined(_MSC_VER) // Visual C++
  19. #  define BPT __debugbreak()
  20. #  ifdef _lint
  21.      NORETURN void __debugbreak(void);
  22. #  endif
  23. #endif


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


Ранг: 622.6 (!), 521thx
Активность: 0.330.89
Статус: Участник
_Вечный_Студент_

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

reversecode пишет:
или про какие степинг трейсинг бп идет речь ?


Что я пытаюсь выразить, может неудачно:
Ida processor module написан на "С". Это вроде как dll: Ida kernel делает инициализацию определенных полей, вызывает определенные функции и т.д.
Нельзя ли как-нибудь эмулировать это внешнее воздействие и дебажить модуль как обычную dll в той же ollydbg?
Toгда можно самому ставить bp, step и т.д.
Но это так, общие идеи.

-----
Give me a HANDLE and I will move the Earth.





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

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

ну так дебажте ида под олькой)) или ида под ида, с бп степами итд
эмулировать нельзя



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

Создано: 25 июня 2016 13:12
· Личное сообщение · #11

А нет ли в ида плагинов для распознавания фунок JNI ?
К примеру хочется в нативной либе *.so найти вызовы функции:
Code:
  1. jint RegisterNatives(JNIEnv *env, jclass clazz,
  2. const JNINativeMethod *methods, jint nMethods);

Можете подсказать как это через иду делать или может онлайн сервисы какие по распознаванию JNI в коде ?




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

Создано: 25 июня 2016 23:30
· Личное сообщение · #12

стандартных? они ж вроде виртуальные не? тогда там все просто, ищем указатель jnienv и настраиваем на метроды



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

Создано: 27 июня 2016 03:12 · Поправил: mixer632
· Личное сообщение · #13

reversecode, а не знаешь как на Genimotion завести android_server чтобы работал ? Там х86 архитектура, а сервак иды под арм сделан.
Приложение имеет либы под арм и х86, поэтому хочется отлаживать х86 либу.



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

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

mixer632 пишет:
как на Genimotion завести android_server чтобы работал

Для этого нужен ARM Translation, его можно добавить с помощью libhoudini
Для 4.4.4 и выше не работает, почему обсуждалось там же и у нас тоже.
Если найдёте способ - свистните!

Добавлено спустя 5 минут
mixer632 пишет:
К примеру хочется в нативной либе *.so найти вызовы функции:
jint RegisterNatives(JNIEnv *env, jclass clazz, const JNINativeMethod *methods, jint nMethods);
Можете подсказать как это через иду делать или может онлайн сервисы какие по распознаванию JNI в коде ?

reversecode пишет:
стандартных? они ж вроде виртуальные не? тогда там все просто, ищем указатель jnienv и настраиваем на метроды

mixer632 имел ввиду, найти вызовы функции анализе, без запуска...



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

Создано: 27 июня 2016 13:36 · Поправил: mixer632
· Личное сообщение · #15

Apokrif пишет:
Для этого нужен ARM Translation, его можно добавить с помощью libhoudini

Да вот скачал с 4пда libhoudini.zip и закинул его, перетянув мышкой в эмулятор, он установился, попросил перезагрузку, сделал. Тест делаю на андроид 4.2.2 Sony Xperia Z, версия genimotion 2.6.0
Но с серваком все равно обламывает:
Code:
  1. root@android:/data/local/tmp # chmod 755 android_server
  2. root@android:/data/local/tmp # ls -l
  3. -rwxr-xr-x root     root       523480 2015-04-13 15:35 android_server
  4. root@android:/data/local/tmp # ./android_server
  5. sh: ./android_server: not executable: magic 7F45





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

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

ну так дело ясное нужна новая иды в поставках которой есть разные сервера для отладки

android_server
android_server_nonpie
android_server64
android_x86_server

Добавлено спустя 5 минут
Apokrif пишет:
mixer632 имел ввиду, найти вызовы функции анализе, без запуска...

я щас вообще не понял о чем это вы

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

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

Создано: 30 июня 2016 08:50 · Поправил: Apokrif
· Личное сообщение · #17

reversecode пишет:
Apokrif пишет:
mixer632 имел ввиду, найти вызовы функции при анализе, без запуска...

я щас вообще не понял о чем это вы


Простой пример:
RegisterNatives() / jnioffset 860

RegisterNatives можно вызвать как
Code:
  1. JNIEnv *env
  2. v0 = env
  3. call *(dword *)v0 + 860
Или как
Code:
  1. v0 = env
  2. v0 += 430 * 2
  3. ...
  4. call *(dword *)v0
или еще вагон вариантов.

1-й вызов можно найти по "860"
А как искать другие варианты?

Небольшая проблема в том, что перед вызовом есть проверки, которые у нас не проходят и RegisterNatives() никогда не вызывается.
Т.е. ставить бряку на RegisterNatives, чтобы по стеку посмотреть, откуда она вызывается бесполезно.

Соответственно, вопрос: "как найти вызовы функции при анализе, без запуска"...

Вы пишите, что это можно сделать (несложно?):

reversecode пишет:

стандартных? они ж вроде виртуальные не? тогда там все просто, ищем указатель jnienv и настраиваем на метроды


Можно уточнить, как именно?




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

Создано: 30 июня 2016 09:24 · Поправил: reversecode
· Личное сообщение · #18

Apokrif пишет:
call *(dword *)v0 + 860


чего это у вас там 860 ? если правильно настроена структура, то должно быть
call v0->vtbl->RegisterNatives()

Apokrif пишет:
Соответственно, вопрос: "как найти вызовы функции при анализе, без запуска"...


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

Apokrif пишет:
Можно уточнить, как именно?


я думал вы о быстром соответствии офсета и метода, тогда проблем как бы нет?!



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

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

Apokrif пишет:
А как искать другие варианты?

Предлагаю поставить бряки на все вызовы формата (*(int (__fastcall **)(int, int, char **, signed int))(*(_DWORD *)v4 + X))(x1,x2,x3,x4); где X -вычисляемые 860 - смещение registernatives(), потом ее сигнатура (int, int, char **, signed int). Кстати это уникально или могут быть вариации в ида ?

Добавлено спустя 10 часов 8 минут
А как в ида сделать, чтобы динамические сегменты памяти, которые либа после аттача создает, чтобы их сдампить и они были вместе со статическими, которые до старта в либе. Хочу после отключения от либы ручками их проанализировать. Проблема в том, что когда отключаюсь от либы, то все эти debugxxx сегменты не доступны. Есть ли возможность их добавить к статическим для последующего анализа их ?

Добавлено спустя 10 часов 10 минут
Apokrif пишет:
А как искать другие варианты?

Тут оказалось все проще, нужно было в libvdm.so просто зайти, так как туда все jni вызовы идут и поймать бряком там, поэтому шифрование смещения 860 так легко обходить можно в динамике.



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

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

reversecode пишет:
call *(dword *)v0 + 860
чего это у вас там 860 ? если правильно настроена структура, то должно быть
call v0->vtbl->RegisterNatives()

Да, но "незашифрованный вариант вызова" нас не интересует.

reversecode пишет:
при анализе без запуска нужно это все ручками разбирать
я думал вы о быстром соответствии офсета и метода, тогда проблем как бы нет?!

Тоже самое - это тривиальные варианты, с ними и проблем-то никогда не было.
Всё только вручную, непосильным трудом...

mixer632 пишет:
Тут оказалось все проще, нужно было в libvdm.so просто зайти, так как туда все jni вызовы идут и поймать бряком там, поэтому шифрование смещения 860 так легко обходить можно в динамике.

Правильно, а как бы вы искали "в динамике", если бы были проверки перед запуском нужной функции?



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

Создано: 01 июля 2016 12:59 · Поправил: theCollision
· Личное сообщение · #21

Как в IDA дебажить so файлы из apk-файлов от Android приложений, находясь на Windows 8.1 ent 64?

У меня есть apk-файл, в котом есть lib\armebi\super_puper.so файл. Для этого файла Hiew показывает такое:
Code:
  1. File class                          32-bit
  2. | Data encoding                       Little endian  |
  3. | File version                        01             |
  4. | Type                                Shared object  |
  5. | Machine                             ARM |
  6. |Module version                      00000001


Сейчас на руках IDA Pro 6.8 что еще нужно доустановить, чтобы можно было дебажить работая на Windows?

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




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

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

Apokrif пишет:
были проверки перед запуском нужной функции

А какие проверки ? Антидебаг ?




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

Создано: 01 июля 2016 14:30 · Поправил: reversecode
· Личное сообщение · #23

theCollision --> Link <--

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

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

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

@reversecode:
Спасибо. Поленился что-то среди готовых тем поискать

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





Ранг: 622.6 (!), 521thx
Активность: 0.330.89
Статус: Участник
_Вечный_Студент_

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

reversecode пишет:
theCollision --> Link <--


Click on this Link:
Тема не существует. Она была удалена администратором либо НИКОГДА не существовала.

Мне бы тоже хотелось посмотреть, но что я делаю не так?

-----
Give me a HANDLE and I will move the Earth.





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

Создано: 01 июля 2016 22:05
· Личное сообщение · #26

plutos зарегистрироваться?))
eXeL@B —› Основной форум —› Взлом прог под Android
Взял простейший код отсюда
http://www.hexblog.com/?p=809

Добавлено спустя 1 минуту
https://www.hex-rays.com/products/ida/support/tutorials/debugging_dalvik.pdf
и в гугле много ответов

Добавлено спустя 5 минут
https://github.com/rednaga/native-shim
хз что толку от того что загрузить можно

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

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

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

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




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

Создано: 02 июля 2016 10:22
· Личное сообщение · #28

mixer632 пишет:
А как в ида можно ли дампить динамические сегменты, которые появляются в процессе отладки либы


Как минимум есть вариант через вкладку Hex View. Копируете нужный Вам кусок, вставляете в WinHex, сохраняете. idc-команд, делающих это, не нашёл...

mixer632 пишет:
И еще интересует какие бы плагины в иду поставить для удобной модификации кода arm в процессе отладки


Там ж есть по дефолту. Edit->Patch Program->Change Bytes... Опкоды, конечно, нужно знать. Ну это так, как вариант, если не найдёте ничего путного. Хотя должно быть... --> ida patcher, например <--

Заодно и для себя нашёл, надо будет попробовать

-----
IZ.RU





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

Создано: 02 июля 2016 10:48 · Поправил: reversecode
· Личное сообщение · #29

mixer632 пишет:
А как в ида можно ли дампить динамические сегменты, которые появляются в процессе отладки либы ?

ида умеет переносить (експортировать) выделенные участки в хекс виев куда угодно, и в файл тоже




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

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

reversecode пишет:
и в файл тоже


блин, точно! Как я пропустил... век живи - век учись

-----
IZ.RU




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

Создано: 02 июля 2016 19:01 · Поправил: Apokrif
· Личное сообщение · #31

DenCoder пишет:
Как минимум есть вариант через вкладку Hex View. Копируете нужный Вам кусок, вставляете в WinHex, сохраняете. idc-команд, делающих это, не нашёл...

Я описывал как переносить фрагменты...

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

Это да, но я так и не понял, как при этом relocs править. Поэтому и пришлось прогу писать...


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