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

 eXeL@B —› Основной форум —› Использование IDA Pro
<< 1 ... 18 . 19 . 20 . 21 . 22 . 23 . 24 . 25 . 26 . 27 . 28 ... 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.




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

Создано: 21 февраля 2012 11:36
· Личное сообщение · #2

привет всем
может завалялась у кого *.sig для Kylix?
буду очень благодарен



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

Создано: 25 февраля 2012 02:26 · Поправил: carver
· Личное сообщение · #3

не могу "открыть" в IDA прошивку для модема.

IDA 6.1 не хотит переводить байты в опкоды для Thumb (популярный режим процессоров ARM).
тоесть "все работает", но опкоды на перехода(те что начинаются на Fххх) не распознаются.
например на такие байты
Code:
  1. LOAD:001FB5DE 2C F6                             DCW 0xF62C              ; bl_h 0x1FB236

тупо пишет Command "MakeCode" failed, хотя по гуглу - это должен быть переход.

понятное дело, последующий кусок опкодов за нераспознаным - тоже уходит в данные - и вместо кода выходит реальный мусор.

возможно кто подскажет, как-бы заставить IDA понимать опкоды или шо делать,
опкоды же с первой ссылки гугла по "arm opcode manual", а ида не понимает.



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

Создано: 25 февраля 2012 02:40
· Личное сообщение · #4

carver
Может какие косяки с LE/BE?

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




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

Создано: 25 февраля 2012 03:07 · Поправил: carver
· Личное сообщение · #5

2 r_e наверно я некоректно задал вопрос, поправил пост.
до этого я открывал нескоко ARM прошивок в IDA - все нормально,
нада токо CODE32/CODE16 - раставять когда микс.

эта прошивка как и все - распознается(прошивка вообше в ELF - там все указанно же вроде),
но на опкодах начинающихся на F - (переходы, компилятор наверно особенный) - ida их шото не понимает.

я даже проверил что другие дисасемблеры(simarm) понимают, но мне бы в IDA какой-то подход найти.

...странно, IDA 6.1 предлагает токо arm и armb
а IDA 5.2 - предлагает arm, armb, arm710a, xscale и xscaleb,
но роли это не меняет,шото никак не понимает Fххх опкоды переходов.

...хотя токошо вижу что такой опкод понимает
LOAD:001FB7BE FF F7 7F FF BL sub_1FB6C0
а ниже
LOAD:001FB7D6 1C FF F7 33 DCD 0x33F7FF1C
уже опять не понимает. косяки.



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

Создано: 25 февраля 2012 12:06
· Личное сообщение · #6

Клади прошивку - посмотрим. Может оно и правильно что не распознает.

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




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

Создано: 25 февраля 2012 13:23 · Поправил: Veliant
· Личное сообщение · #7

У ARM все адреса выровнены на 4, в thumb на 2. Откуда у вас такие получились?
Переключение arm/thumb задается по [исправлено]ALT+G и выставлением T/1 для thumb и T/0 для arm



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

Создано: 25 февраля 2012 13:23 · Поправил: carver
· Личное сообщение · #8

да, там просто пишем 4 байта " FF F7 7F FF " в новый файл,
открываем как ARM (CODE16), ида показывает
ROM:00000000 FF F7 7F FF BL 0xFFFFFF02
жмем I, меняем байты на "1C FF F7 33"
и уже "Command "MakeCode" failed"

хотя simarm эти 4 байта "1C FF F7 33" - в thumb распознает так:
ST:00000000 FF1C bl_l 0xE3A
ST:00000002 33F7 add r3,#0xF7

прошивку тоже могу куда залить если актуально, токо чуть позже, там просто 7 метров в архиве,
с телефона на даче - это пол часа если не оборвет, до города доехать легче.


Veliant пишет:
У ARM все адреса выровнены на 4, в thumb на 2. Откуда у вас такие получились?

думаю все верно, в "переходах" часто 4 байта на "опкод". может это IDA сама преобразует.
(может какая опция типа Simplify instructions). канешно ARM/THUMB - я переключать умею.

тут именно "1C FF F7 33" в ида d thumb шото не понимает, счас еще попробую,
нашел в настройках анализа - что там не только ARM/ARMN - а и ARMv5, ARMv6 и много других есть.



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

Создано: 25 февраля 2012 13:35 · Поправил: Veliant
· Личное сообщение · #9

У армов фиксированная длина команд. Как уже сказал встаньте на начало thumb кода, нажмите alt+g, выберите пункт T и вбейте 1
Значит не тот проц выбрали. Попробуйте стандартный armb (big endian)



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

Создано: 25 февраля 2012 14:15 · Поправил: carver
· Личное сообщение · #10

да тут именно какой-то странный косяк в моем непонимании, настройках или arm.w32 от ида.

код распознается нормально, значит порядок байт LE/TE и ARM/THUMB - должны быть верными.
но в IDA это выглядит примерно так, тоесть некоторые байты не распознаются:
Code:
  1. LOAD:001FB7C6 60 79                             LDRB    R0, [R4,#5]
  2. LOAD:001FB7C8 29 1C                             MOVS    R1, R5
  3. LOAD:001FB7CA FF F7 5B FF                       BL      sub_1FB684
  4. LOAD:001FB7CE 00 04                             LSLS    R0, R0, #0x10
  5. LOAD:001FB7D0 FF 06                             LSLS    R7, R7, #0x1B
  6. LOAD:001FB7D2 43 A0                             ADR     R0, dword_1FB8E0
  7. LOAD:001FB7D4 79 29                             CMP     R1, #0x79
  8. LOAD:001FB7D4                   ; ---------------------------------------------------------------------------
  9. LOAD:001FB7D6 1C                                DCB 0x1C
  10. LOAD:001FB7D7 FF                                DCB 0xFF
  11. LOAD:001FB7D8                   ; ---------------------------------------------------------------------------
  12. LOAD:001FB7D8 F7 33                             ADDS    R3, #0xF7
  13. LOAD:001FB7DA FF 00                             LSLS    R7, R7, #3
  14. LOAD:001FB7DC 02 06                             LSLS    R2, R0, #0x18
  15. LOAD:001FB7DE 43 20                             MOVS    R0, #0x43
  16. LOAD:001FB7E0 79 29                             CMP     R1, #0x79

пробовал выбирать разные процессоры, но шото ничего не меняется.

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




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

Создано: 25 февраля 2012 15:05
· Личное сообщение · #11

ну IDA не понимает какие то инструкции, подумаешь проблема)
если ранние версии понимали, значит сломали
левый китайский ARM не причем
simarm сам же разбирает, а не дебажит с китайского проца?



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

Создано: 25 февраля 2012 16:43 · Поправил: carver
· Личное сообщение · #12

ну да, шото простые байты а ида - косячит и в опкоды не переводит(шо текущая, но пятая).

вот и спрашивал, может кто решал. может все-таки это мой косяк в "ARM architecture options" ?
хотя вроде все менял уже.

или кому станет интересно и кто пропатчит arm.w32.
если глючат опкоды на F - то это наверяка где-то уловие косячит.

сам я канешно даже алгоритм для питона не напишу, и на arm.w32 - зубы сломаю

а может есть еще какой-то путь шоб все было "нормально" ?



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

Создано: 26 февраля 2012 02:03
· Личное сообщение · #13

Имхо или дамп кривой, или какие-то особые опкоды в проце. Вот что objdump кажет:

Code:
  1. Disassembly of section .data:
  2.  
  3. 00000000 <.data>:
  4.    0:   7960            ldrb    r0, [r4, #5]
  5.    2:   1c29            adds    r1, r5, #0
  6.    4:   f7ff ff5b       bl      0xfffffebe
  7.    8:   0400            lsls    r0, r0, #16
  8.    a:   06ff            lsls    r7, r7, #27
  9.    c:   a043            add     r0, pc, #268    (adr r0, 0x11c)
  10.    e:   2979            cmp     r1, #121
  11.   10:   ff1c 33f7       vcge.u16        <illegal reg q1.5>, q14, <illegal reg q11.5>
  12.   14:   00ff            lsls    r7, r7, #3
  13.   16:   0602            lsls    r2, r0, #24
  14.   18:   2043            movs    r0, #67
  15.   1a:   2979            cmp     r1, #121


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


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

Создано: 26 февраля 2012 03:04
· Личное сообщение · #14

ключевой момент
carver пишет:
хотя simarm эти 4 байта "1C FF F7 33" - в thumb распознает так:
ST:00000000 FF1C bl_l 0xE3A
ST:00000002 33F7 add r3,#0xF7

значит ни ida ни objdump не поддерживают
а вот насколько это команды стандартные..



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

Создано: 26 февраля 2012 03:55 · Поправил: carver
· Личное сообщение · #15

не, байты вроде стандартные, я же пишу, в первых ссылках гугла, в самом низу например
http://imrannazar.com/ARM-Opcode-Map
FFxx - вполне нормальный опкод, да и в других PDF ках еще лучше описанно.
http://bear.ces.cwru.edu/eecs_382/ARM7-TDMI-manual-pt3.pdf
F это - (1 1 1 1 H Offset Long branch with link )
хотя дело ведь не в мануалах, а шоб показывало нормально.

подскажите тогда еще, можно где нарыть процессорный модуль для ARM ? ну шоб для чайников глянуть-поправить
тут упоминатся шо сами собирают http://itsme.home.xs4all.nl/projects/ida/downloads/idp-Makefile (хотя обидно канешно за державу)
скачал 4.6 - но внутри исходников ARM - модуля - нету.

p.s. за objdump - спасибо. юникс - это мега, позырю для другого.
жаль шо objdump мой старенький 3b21d проц с холодильника не понимает.




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

Создано: 26 февраля 2012 13:52
· Личное сообщение · #16

у ильфака есть исходники для arm модуля
в sdk его нет



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

Создано: 27 февраля 2012 00:48
· Личное сообщение · #17

bl_l это только половина BL, реально отдельной инструкцией это не является.




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

Создано: 27 февраля 2012 00:50
· Личное сообщение · #18

может это вообще банальная обфускация для ARM?
и в ту вилку после cmp оно никогда и не попадает

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

Ранг: 481.4 (мудрец), 109thx
Активность: 0.180
Статус: Участник
Тот самый :)

Создано: 27 февраля 2012 16:47 · Поправил: Hexxx
· Личное сообщение · #19

carver пишет:
хотя дело ведь не в мануалах, а шоб показывало нормально.

Скрипт пишите для замены внешнего вида таких байтов. Manual Instruction это называется.

carver пишет:
тут упоминатся шо сами собирают

когда-то ильфак давал пример того как пишутся процессорные модули на примере ARM'a. 5-6 "уроков". Там был зачаточный вариант процессорного модуля для ARM. Сорцы утеряны во времени.

-----
Реверсивная инженерия - написание кода идентичного натуральному


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

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

Создано: 01 марта 2012 15:25
· Личное сообщение · #20

carver
Code:
  1. LOAD:001FB7C6 60 79                             LDRB    R0, [R4,#5]
  2. LOAD:001FB7C8 29 1C                             MOVS    R1, R5
  3. LOAD:001FB7CA FF F7 5B FF                       BL      sub_1FB684
  4. LOAD:001FB7CE 00 04                             LSLS    R0, R0, #0x10
  5. LOAD:001FB7D0 FF 06                             LSLS    R7, R7, #0x1B
  6. LOAD:001FB7D2 43 A0                             ADR     R0, dword_1FB8E0
  7. LOAD:001FB7D4 79 29                             CMP     R1, #0x79


Пересмотрите значения которые возвращает функция sub_1FB684, вернее какие изменения происходят в регистре R1, по факту код битый.

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

carver Код может быть банально упакован архиватором или сдамплен криво или ЕЦЦ мешается или просто битый если стянут из кучи, как вариант если дампить по юсб может оставаться часть контрольной суммы пакета. Вариантов много, полный бинарник или эльф больше скажет.

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

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

Создано: 03 марта 2012 20:35
· Личное сообщение · #21

да, извините с вопросом про arm-опкоды и ida.

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

блин, стоко времени потратил своего и чужого. еще раз извините.

....я видео JTAG кннектор на какой-то платке пентиума, и на атомах шото про jtag пишут,
для арма - читал шо и трейсить можно в реалтайме, ну или понизив частоту,
а вот для x86 кажется нету.



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

Создано: 27 марта 2012 13:51
· Личное сообщение · #22

Господа, вопрос такого характера:
кто-то строил уже IDA плагин под x64? взял самый простой пример под VC (vcsample), сконвертил (авто) в проект VC2010, сменил пути (С++ includes, Linder path), добавил __X64__ дефайн , линкер ругается что не видит функций самой Ida Pro (например unhook_from_notification_point)
Делал в 6.1 + СДК
Вроде децкая проблема. но пока как в стену башкой.......




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

Создано: 27 марта 2012 14:11
· Личное сообщение · #23

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



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

Создано: 27 марта 2012 17:13 · Поправил: sendersu
· Личное сообщение · #24

reversecode
будут, вечером, счас нету 64ки под руками,
замечание верное, извиняюсь

upd, настал вечер, появились логи (err.txt) и сам проект
http://www.sendspace.com/file/4pe0ij

спасибо заинтересовавшимся



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

Создано: 28 марта 2012 06:00
· Личное сообщение · #25

Из install_visual.txt:

NOTE: to build modules for IDA64, define the __EA64__ preprocessor symbol and use import library x86_win_vc_64\ida.lib.
NOTE: to build 64-bit debugger servers, define the __X64__ preprocessor symbol.



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

Создано: 28 марта 2012 11:03 · Поправил: sendersu
· Личное сообщение · #26

reverser
без __X64__ preprocessor symbol = вообще не строится (какойто ассерт падает на фазе компиляции)
либу конечно что нужну прописал!
на глаз в ней все ети функи есть, тут или декорирование или еще что-то.....
__EA64__ пробовал. без него тоже, особо разницу не увидел
Еще идеи?
upd надо будет dumpbin -ом заглянуть вовнутрь 64ой либы, может что-то проясниться




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

Создано: 28 марта 2012 13:57
· Личное сообщение · #27

попробуй ему для начала вручную добавить путь до sdk/lib/* нужной либы, а то оно не может слинковатся,
если слинкуется
значит либо нужна хитрая переменная для .mk что бы активировалась,
либо .mk кривые



Ранг: 112.9 (ветеран), 186thx
Активность: 0.090.01
Статус: Участник

Создано: 31 марта 2012 15:10
· Личное сообщение · #28

А где в сдк есть описание структуры insn_t (cmd) для ARM ?
Можно и опытным путём понять, но где-то же есть доки, может я плохо искал.




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

Создано: 01 апреля 2012 23:29
· Личное сообщение · #29

у меня есть в allins.hpp
Code:
  1. enum
  2. {
  3. ARM_null = 0,           // Unknown Operation
  4. ARM_ret,                // Return from Subroutine
  5. ARM_nop,                // No Operation
  6. ARM_b,                  // Branch
  7. ARM_bl,                 // Branch with Link
  8. ARM_asr,                // Arithmetic Shift Right




Ранг: 112.9 (ветеран), 186thx
Активность: 0.090.01
Статус: Участник

Создано: 02 апреля 2012 14:28 · Поправил: vden
· Личное сообщение · #30

@reversecode да, спасибо, это я видел

Уточню. Я имею в виду, specflag's в op_t (insn_t). (т.е. там обозначаются сдвиги...) В desquirr видел
используются, но сейчас там немного поменялись флаги. Я вот думаю разве в сдк этого нет?




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

Создано: 05 апреля 2012 01:32
· Личное сообщение · #31

о каком specflag идет речь?
Code:
  1. // The following fields are used only in idp modules
  2. // You may use them as you want to store additional information about
  3. // the operand
  4.  
  5.   char          specflag1;
  6.   char          specflag2;
  7.   char          specflag3;
  8.   char          specflag4;



<< 1 ... 18 . 19 . 20 . 21 . 22 . 23 . 24 . 25 . 26 . 27 . 28 ... 50 . 51 . >>
 eXeL@B —› Основной форум —› Использование IDA Pro
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати