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





Ранг: 673.3 (! !), 400thx
Активность: 0.40.31
Статус: Участник
CyberMonk

Создано: 22 ноября 2014 21:26 · Поправил: mak
· Личное сообщение · #2

Создаю сигнатуру через Флэйр, есть collision, обозначил те, что должны быть. При повторном вызове сигмэйк он тупо перезаписывает файл по новой не считывая параметры. Как быть, что делаю не так? Пути не играют роли.

П.С. Спасибо, жесть конечно , надо меньше думать и быть проще.

-----
RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube




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

Создано: 04 декабря 2014 03:19
· Личное сообщение · #3

Прочитай внимательно коммент в начале exc файла.

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

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

Создано: 20 января 2015 13:31
· Личное сообщение · #4

Добрый день. Ребят может Вы мне подскажете, хоть это наверное простой вопрос:
В Ida PRO 6.1 сделал дизасмб прошивки с Пик контроллера.
Есть значение такая строчка : bsf byte_RAM_0, 4, ACCESS
так вот byte_RAM_0-это значение я могу переименовать в любую текстовую строчку, а вот как мне тоже самое сделать побитно, т.е byte_RAM_0, 4- присвоить например W54 , а вот значению byte_RAM_0, 5 присвоить T32?
Или это невозможно сделать в этой версии Ида ПРО.

Спасибо.




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

Создано: 20 января 2015 14:08 · Поправил: reversecode
· Личное сообщение · #5

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

а побитно это когда есть значения
1
2
3
4
5
6

и есть биты имен
1 A
2 B
4 C

тогда побитно для значения 6 будет выбрано имя B|C
и IDA тоже так умеет



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

Создано: 20 января 2015 14:38 · Поправил: sergeu
· Личное сообщение · #6

Вот бы Вы ещё подсказали как создать эти самые символьные константы, что то у меня проблемы возникают с их созданием.. Нет понимания как вообще это сделать, я так понимаю надо создать наподобие структуры этой переменной т.е 0-это тот о, 1-другое значение
Спасибо за внимание.




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

Создано: 20 января 2015 14:45
· Личное сообщение · #7

Shift+F10

Добавлено спустя 1 минуту
стоп,
значению byte_RAM_0, 5 ничего нельзя присвоить
можно присвоить только значению 5, оно же является константой



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

Создано: 20 января 2015 15:06 · Поправил: sergeu
· Личное сообщение · #8

Видите я хотел чтобы можно было расписать как например:
PORTA equ 0F80
FSR_:0F80 RA0 equ 0
FSR_:0F80 RA1 equ 1
FSR_:0F80 RA2 equ 2
FSR_:0F80 RA3 equ 3
FSR_:0F80 RA4 equ 4
FSR_:0F80 RA5 equ 5
FSR_:0F80 RA6 equ 6
FSR_:0F80 RA7 equ 7


Enum, я открыл вот бы теперь на пальцах объяснить что туда вписывать?

Спасибо за внимание.
вот здесь побитно.. и подставлено значение вместо 0 -RA0




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

Создано: 20 января 2015 15:27 · Поправил: reversecode
· Личное сообщение · #9

не понимаю что вы хотите
приведу пример
bsf byte_RAM_0, 4, ACCESS
можно перевести в
bsf byte_RAM_0, W54, ACCESS


bsf byte_RAM_0, 5, ACCESS
в
bsf byte_RAM_0, T32, ACCESS

если вы значения типа 4 5 итд хотите от мапить в тектосвые значения
для этого
Shift+F10
ОК
N
вводите имя W54
значение 4
итд
дальше открываете IDA-View
подводите курсор к нужному значению и нажимаете m
итд
дальше разберетесь

найдите книгу IDA для новичков
или воспользуйтесь гуглом
http://www.openrce.org/blog/view/299
там полно примеров, даже на сайте ильфака



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

Создано: 20 января 2015 15:45
· Личное сообщение · #10

Спасибо за внимание к моей персоне...
Есть ячейка в памяти RAM_0 её можно изменять как полностью 8-бит , так и побитно....
я хочу расписать "byte_RAM_0, 4" - это Flag_T
"byte_RAM_0, 0"- Fg_T т.е чтобы везде в коде подставлялось не безликое "byte_RAM_0, 4" , а Flag_T(это название естественно может быть другим).
Изначально Ида Про дает возможность переименовать только всю ячейку "RAM_0" на какое либо другое название.
Примерно так Ида может переименовать порты -это выглядит вот так в коде:
PORTA equ 0F80
FSR_:0F80 RA0 equ 0
FSR_:0F80 RA1 equ 1
FSR_:0F80 RA2 equ 2
FSR_:0F80 RA3 equ 3
FSR_:0F80 RA4 equ 4
FSR_:0F80 RA5 equ 5
FSR_:0F80 RA6 equ 6
FSR_:0F80 RA7 equ 7
т.е "PORTA,0" -Ида про представит как RA0




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

Создано: 20 января 2015 15:56 · Поправил: reversecode
· Личное сообщение · #11

вы хотите в окне IDA View какую то последовательность ассемблерных операторов заменить на какое то слово?
т.е.
вы видите в IDA View комманду
bsf byte_RAM_0, 4, ACCESS
а хотите что бы ида вам показала
bsf Fg_T, ACCESS
? боюсь такого ида не умеет

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

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



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

Создано: 20 января 2015 16:15 · Поправил: sergeu
· Личное сообщение · #12

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




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

Создано: 20 января 2015 16:34
· Личное сообщение · #13

т.е. хотите пример,

именованные биты
2 = B
4 = C

bsf byte_RAM_0, 6, ACCESS
расписать как
bsf byte_RAM_0, B|C, ACCESS

т.е. 6 в битовом представлении будет как 2+4
так?
ну битовое представление тоже можно в ида, но опять же только для констант
а не так как у вас сразу и мем byte_RAM_0 и константа 6
реф мем он рефмем, в битовом представлении не описать по моему никак, даже структурами



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

Создано: 20 января 2015 16:48
· Личное сообщение · #14

Ясно. Спасибо.



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

Создано: 27 января 2015 05:21
· Личное сообщение · #15

Подскажите как посмотреть функции на которые приминились сигнатуры?



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

Создано: 27 января 2015 08:02
· Личное сообщение · #16

Functions window



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

Создано: 27 января 2015 16:04
· Личное сообщение · #17

Там все в кучу, как просмотреть те сигнатуры которые только что были применены? Все чтоли просматривать колёсиком




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

Создано: 27 января 2015 16:13
· Личное сообщение · #18

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



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

Создано: 11 февраля 2015 14:53 · Поправил: aleXela
· Личное сообщение · #19

Всем привет
У меня одного не работает hexrays_CrowdDetox.plw и hexrays_tools.plw под IDA 6.6?
Тулзы пробовал комилить - выдает Ошибка 1 error C2065: typestring: необъявленный идентификатор d:\tools\ida\hexrays_tools-master\code\choosers.cpp 43 1 hexrays_tools и еще много всякого



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

Создано: 12 февраля 2015 15:27
· Личное сообщение · #20

Подскажите, если декомпилировать программу целиком с помощью HexRays, то как поступить с глобальными переменными (static)? IDA не очень хорошо понимает, что переменная DWORD_00000001 - это не DWORD, а первый элемент массива, соот-но при повторной компиляции и запуске программы будет запись в чужую память. Т.е. как сделать так, чтобы переменные оставались на тех же местах и по тем же смещениям, что и в изначальной программе?




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

Создано: 12 февраля 2015 15:31
· Личное сообщение · #21

не совсем понятно, но массивы есть массивы и ида+рейс их понимает и выводит в декомпиляции как массивы

пример какой то что ли продемонстрируйте

Добавлено спустя 1 минуту
aleXela пишет:
Тулзы пробовал комилить - выдает Ошибка 1 error C2065: typestring: необъявленный идентификатор d:\tools\ida\hexrays_tools-master\code\choosers.cpp 43 1 hexrays_tools и еще много всякого

конечно typesystem изменилась и никто тулзы не фиксил, на вас вся надежда



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

Создано: 13 февраля 2015 08:02 · Поправил: aleXela
· Личное сообщение · #22

reversecode пишет:
конечно typesystem изменилась и никто тулзы не фиксил, на вас вся надежда


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

И еще вопрос, как можно определить наследование классов?



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

Создано: 14 февраля 2015 01:14
· Личное сообщение · #23

aleXela пишет:
И еще вопрос, как можно определить наследование классов?

Если речь идет о классах в C++, то - конструкторы и деструкторы, RTTI и vftable, по обращениям к полям класса, различные строки в методах класса(-ов) или около них и множество других "способов", которые в той или иной мере могут указывать на наследование и\или иерархии.



Ранг: 101.0 (ветеран), 344thx
Активность: 1.150
Статус: Участник

Создано: 15 февраля 2015 19:34
· Личное сообщение · #24

Можно ли вешать на скрипты в IDA горячие клавиши? Или для этих целей надо плагин свой пилить?

P.S. Пилю скрипты по борьбе с юникодом:
Code:
  1. static makeString(ea) {
  2.     auto ptr = ea;
  3.     while (BADADDR == DfirstB(ptr)) {
  4.         if (Word(ptr - 2) == 0) break;
  5.         ptr = ptr - 4;
  6.     }
  7.     auto type = GetStringType(ptr);
  8.     //Message("%x type %d\n", ptr, type);
  9.     auto str = GetString(ptr, -1, ASCSTR_UNICODE);
  10.     auto len = strlen(str);
  11.     Message("%s, %d\n", str, len);
  12.     auto bsize = (len + 1) * 2;
  13.     MakeUnknown(ptr, bsize, DOUNK_EXPAND);
  14.     MakeStr(ptr, ptr + bsize);
  15. }
  16.  
  17. static main() {
  18.     auto currentEA = ScreenEA();
  19.     auto size = ItemSize(currentEA);
  20.  
  21.     auto i;
  22.     for (= 0; i < size; ++i) {
  23.         auto pos = currentEA + i;
  24.         auto current = DfirstB(pos);
  25.         //Message("%x\n", current);
  26.         while (current != BADADDR)
  27.         {
  28.             Message("XREF from %x\n", current);
  29.             makeString(current);
  30.             current = DnextB(pos, current);
  31.         }
  32.     }
  33.     MakeName(currentEA, "");
  34. }

Code:
  1. auto selector = SegByName(".text");
  2. if (selector == BADSEL) return;
  3. auto segment = SegByBase(selector);
  4. auto start = GetSegmentAttr(segment, SEGATTR_START);
  5. auto end = GetSegmentAttr(segment, SEGATTR_END);
  6. auto t = start;
  7. Message("seg %x, start %x end %x\n", segment, start, end);
  8.  
  9. auto param = GetLongPrm(INF_STRTYPE);
  10. SetLongPrm(INF_STRTYPE, ASCSTR_UNICODE);
  11. while (< end) {
  12.     t = FindBinary(t, SEARCH_DOWN, "B0 04 02 00 FF FF FF FF");
  13.     if (== BADADDR) break;
  14.     MakeDword(t);
  15.     MakeArray(t, 3);
  16.     Message("Found string %x\n", t);
  17.     t = t + 8;
  18.     auto size = Dword(t);
  19.     t = t + 4;
  20.     auto type = GetStringType(t);
  21.     Message("type %d\n", type);
  22.     if (type == ASCSTR_UNICODE)
  23.         continue;
  24.     Message("size: %d\n", size);
  25.     auto bsize = (size + 1) * 2;
  26.     MakeUnknown(t, bsize, DOUNK_EXPAND);
  27.     MakeStr(t, t + bsize);
  28.     auto str = GetString(t, -1, ASCSTR_UNICODE);
  29.     Message("%s\n", str);
  30.     t = t + bsize;
  31. }
  32. SetLongPrm(INF_STRTYPE, param);





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

Создано: 15 февраля 2015 20:10
· Личное сообщение · #25

гугл говорит можно
--> Link <--
--> Link <--
AddHotKey

Добавлено спустя 2 минуты
int пишет:
Пилю скрипты по борьбе с юникодом:

а зачем
+100500 плагинов и скриптов в гугле
--> Link <--

Добавлено спустя 3 минуты
да и сама ида поддерживает
--> Link <--
только по умолчанию никто не настраивает



Ранг: 101.0 (ветеран), 344thx
Активность: 1.150
Статус: Участник

Создано: 15 февраля 2015 20:56
· Личное сообщение · #26

reversecode пишет:
гугл говорит можно

Ступил, в списке IDC функций в справке ссылка AddHotKey даже использованная.

reversecode пишет:
+100500 плагинов и скриптов в гугле

Это не о том.

reversecode пишет:
да и сама ида поддерживает

По факту оно не работает:
Code:
  1. .text:00C17F70 off_C17F70      dd offset tbyte_650040+7 ; DATA XREF: sub_C17D94+18o
  2. .text:00C17F70                                         ; sub_C17D94+54o
  3. .text:00C17F74                 dd offset loc_410073+1
  4. .text:00C17F78                 dd offset loc_640061+3
  5. .text:00C17F7C                 dd offset loc_490072
  6. .text:00C17F80                 dd offset loc_66006D+1
  7. .text:00C17F84                 dd offset loc_57006C+3
  8. .text:00C17F88                 dd 0





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

Создано: 15 февраля 2015 21:29 · Поправил: reversecode
· Личное сообщение · #27

ну авто анализатор много чего не умеет, это не означает что нет поддержки кодировки,
преобразуй в ручную в строку

там XLat надо настраивать насколько помню
и сами строки видно не в IDA-View а в окне strings



Ранг: 101.0 (ветеран), 344thx
Активность: 1.150
Статус: Участник

Создано: 15 февраля 2015 22:09
· Личное сообщение · #28

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

Вот такой получился скрипт - чисто на горячих клавишах просеиваем английский алфавит. Вывод в лог для контроля, что строка это строка.
Code:
  1. static makeString(ea) {
  2.     auto ptr = ea;
  3.     while (BADADDR == DfirstB(ptr)) {
  4.         if (Word(ptr - 2) == 0) break;
  5.         ptr = ptr - 4;
  6.     }
  7.     auto type = GetStringType(ptr);
  8.     //Message("%x type %d\n", ptr, type);
  9.     auto str = GetString(ptr, -1, ASCSTR_UNICODE);
  10.     auto len = strlen(str);
  11.     Message("%s, %d [%x]\n", str, len, ea);
  12.     auto bsize = (len + 1) * 2;
  13.     MakeUnknown(ptr, bsize, DOUNK_EXPAND);
  14.     MakeStr(ptr, ptr + bsize);
  15. }
  16.  
  17. static UTF16_Links_Process() {
  18.     auto currentEA = ScreenEA();
  19.     auto size = ItemSize(currentEA);
  20.  
  21.     auto i;
  22.     auto param = GetLongPrm(INF_STRTYPE);
  23.     SetLongPrm(INF_STRTYPE, ASCSTR_UNICODE);
  24.     for (= 0; i < size; ++i) {
  25.         auto pos = currentEA + i;
  26.         auto current = DfirstB(pos);
  27.         while (current != BADADDR)
  28.         {
  29.             //Message("XREF from %x\n", current);
  30.             makeString(current);
  31.             current = DnextB(pos, current);
  32.         }
  33.     }
  34.     SetLongPrm(INF_STRTYPE, param);
  35.     MakeName(currentEA, "");
  36. }
  37.  
  38. static UTF16_Address_Next() {
  39.     auto currentEA = ScreenEA();
  40.     currentEA = currentEA >> 16;
  41.     if (currentEA >= 0x41 && currentEA < 0x5A) {
  42.         currentEA++;
  43.         currentEA = currentEA << 16;
  44.         Jump(currentEA);
  45.         return;
  46.     }
  47.     if (currentEA == 0x5A) {
  48.         Jump(0x610000);
  49.         return;
  50.     }
  51.     if (currentEA >= 0x61 && currentEA < 0x7A) {
  52.         currentEA++;
  53.         currentEA = currentEA << 16;
  54.         Jump(currentEA);
  55.         return;
  56.     }
  57.     Warning("Work is finished!");
  58. }
  59.  
  60. static main() {
  61.     AddHotkey("Shift-U", "UTF16_Links_Process");
  62.     AddHotkey("Ctrl-Shift-U", "UTF16_Address_Next");
  63. }


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

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

Создано: 16 февраля 2015 18:57
· Личное сообщение · #29

Уважаемые, подскажите, пожалуйста, как дебажить 64 битный процесс в иде в Windows. Это делается через remote debug даже если я отлаживаю на одной машине? Или можно также просто как и 32 битный процесс?



Ранг: 101.0 (ветеран), 344thx
Активность: 1.150
Статус: Участник

Создано: 16 февраля 2015 19:00
· Личное сообщение · #30

Ильфак too lazy сделать local debugger для 64 бит. Запускаете win64_remotex64 и вперед, в бой!




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

Создано: 16 февраля 2015 19:09
· Личное сообщение · #31

что бы делать нейтив нужно и иду компилять в 64, а это еще +одна ида и длл, вообщем просто не хочет плодить сущности


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