eXeLab
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
обновлён 2 декабря!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Русский / Russian English / Английский

Сейчас на форуме: stran34 (+2 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS · SVN ·

 eXeL@B —› Софт, инструменты —› Вопрос по IDA
<< . 1 . 2 . 3 .
Посл.ответ Сообщение


Ранг: 793.4 (! !)
Статус: Участник
Шаман

Создано: 17 сентября 2011 21:40 · Поправил: PE_Kill New!
Цитата · Личное сообщение · #1

Был же топик где спрашивали всё по IDA, что то найти его не могу, может прилепить в этом подфоруме?

Вопрос такой. В делфи есть такое понятие как локальная процедура. Эта процедура описывается в разделе var и имеет доступ ко всем переменным родительской процедуры. Для доступа к переменным генерируется такой код:
Code:
  1. push ebp
  2. call NestedProc
  3. pop ecx


Проблема в том, что IDA не понимает, что NestedProc через ebp работает со стеком основной процедуры. Как это поправить? Вот пример:
Code:
  1. procedure TestProc;
  2. var
  3.   Param1, Param2: Cardinal;
  4.   procedure NestedProc;
  5.   begin
  6.     Param2 := Param2 + Param1;
  7.   end;
  8. begin
  9.   Param1 := $1234;
  10.   Param2 := $4321;
  11.   NestedProc;
  12. end;


Вот IDA разобрала основную процедуру:
Code:
  1. .text:0040B058 TestProc        proc near               ; CODE XREF: .itext:0040C194p
  2. .text:0040B058
  3. .text:0040B058 Param2          = dword ptr -8
  4. .text:0040B058 Param1          = dword ptr -4
  5. .text:0040B058
  6. .text:0040B058                 push    ebp
  7. .text:0040B059                 mov     ebp, esp
  8. .text:0040B05B                 add     esp, 0FFFFFFF8h
  9. .text:0040B05E                 mov     [ebp+Param1], 1234h
  10. .text:0040B065                 mov     [ebp+Param2], 4321h
  11. .text:0040B06C                 push    ebp
  12. .text:0040B06D                 call    NestedProc
  13. .text:0040B072                 pop     ecx


А вот так она видит процедуру NestedProc:
Code:
  1. .text:0040B044 NestedProc      proc near               ; CODE XREF: TestProc+15p
  2. .text:0040B044
  3. .text:0040B044 arg_0           = dword ptr  8
  4. .text:0040B044
  5. .text:0040B044                 push    ebp
  6. .text:0040B045                 mov     ebp, esp
  7. .text:0040B047                 mov     eax, [ebp+arg_0]
  8. .text:0040B04A                 mov     eax, [eax-4]
  9. .text:0040B04D                 mov     edx, [ebp+arg_0]
  10. .text:0040B050                 add     [edx-8], eax
  11. .text:0040B053                 pop     ebp
  12. .text:0040B054                 retn
  13. .text:0040B054 NestedProc      endp


Ранг: 72.3 (постоянный)
Статус: Участник

Создано: 24 декабря 2013 03:33 · Поправил: Dr0p New!
Цитата · Личное сообщение · #2

reversecode

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

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


Ранг: 1014.5 (!!!!)
Статус: Участник

Создано: 24 декабря 2013 15:23 · Поправил: reversecode New!
Цитата · Личное сообщение · #3

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

6.1 на паблике сто лет в обед, а вообще софт фиксится и меняется
возьми 6.4 демку поиграйся, может уже и 6.5 демка есть хз

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

Создано: 2 января 2014 23:33 New!
Цитата · Личное сообщение · #4

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

как запретить ей автодизасм всего того что я не просил?

Ранг: 576.8 (!)
Статус: Модератор

Создано: 3 января 2014 00:07 New!
Цитата · Личное сообщение · #5

Выключить Аналитику при загрузке бинаря.

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

Создано: 3 января 2014 00:16 New!
Цитата · Личное сообщение · #6

она то отключена , но даже по кнопке С ида дизасмит не только текущую но и последующие инструкции пока не упрется в инвалидную

Ранг: 141.4 (ветеран)
Статус: Участник

Создано: 3 января 2014 00:28 New!
Цитата · Личное сообщение · #7

еще в Kernel Options 1 отключить Trace execution flow

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


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

Создано: 4 января 2014 22:23 New!
Цитата · Личное сообщение · #8

Ну с этим все ясно .
Вторая проблема :

при трассировке имеем последовательность инструкций типа :

pushf
....
....
....
....
popf

и на последней падаем с исключением 80000004 .
нопить и увеличивать значение ESP не канает ибо от флагов дальше прыжки .
пытаться пройти инструкцию по request_step_into() тож результата не дает .

как победить ?


Ранг: 1014.5 (!!!!)
Статус: Участник

Создано: 4 января 2014 22:36 New!
Цитата · Личное сообщение · #9

помоему вообще не к ида вопросы а к анти дебагеру
картинку исключения можно?

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

Создано: 4 января 2014 22:54 · Поправил: kid New!
Цитата · Личное сообщение · #10

суть в том что трэйс записываю с ДЛЛки , а прога падает с простым мессадж боксом :
External exception 80000004

правильно ли я понимаю что эксепшн вываливается изза того что при поднятом флаге трассировки пытаемся выполнить инструкцию popf ?

вот реальный кусок кода на котором получаю исключение :

Code:
  1. 0x020ADD04 :: pushf
  2. 0x020ADD05 :: mov     edi, 3C3D5h
  3. 0x020ADD0A :: xor     edi, offset unk_3CE2654
  4. 0x020ADD10 :: xor     edi, 0DD08BAF6h
  5. 0x020ADD16 :: call    near ptr unk_21058BF
  6. 0x021058BF :: lea     esp, [esp+4]
  7. 0x021058C6 :: sub     edi, 93692F09h
  8. 0x021058CC :: jmp     near ptr unk_20ADD1E
  9. 0x020ADD1E :: add     edi, 0CFCC0E29h
  10. 0x020ADD24 :: add     edi, 23FDDB2Dh
  11. 0x020ADD2A :: xor     edi, 3B509B9Eh
  12. 0x020ADD30 :: xor     edi, 22140581h
  13. 0x020ADD36 :: cmp     edi, 266287DBh
  14. 0x020ADD3C :: popf
  15. 0x020D97A2 ::  jz      near ptr unk_20D97A2


зы : ясно что не ида косячит , вопрос в том как победить ?


Ранг: 1014.5 (!!!!)
Статус: Участник

Создано: 4 января 2014 23:06 New!
Цитата · Личное сообщение · #11

анти дебаг для иды
стелсы итд


Статус: Пришелец

Создано: 5 января 2014 00:01 New!
Цитата #12

kid
Выпилить исключения (reload exceptions для базы), на вопрос pass exceptions to program (или как-то так) сказать No

Но не думаю, что так жизненно необходимо трассировать через popf. Ни что не мешает поставить бряк после popf (на адрес 0x0x020D97A2 например) и шлепнуть F9. Ну или действительно поставить IDA Stealth плагин, который уберет флаг трассировки при трассировке popf.

kid пишет:
ясно что не ида косячит

Почему-то в нормальных отладчиках флаг трассировки убирается, кроме особо заковыристых случаев (типа pop ss и им подобных). Во 2-ой ольке даже трюк с pop ss обходится.

Ранг: 2.4 (гость)
Статус: Участник

Создано: 24 апреля 2014 16:43 · Поправил: SPLESH New!
Цитата · Личное сообщение · #13

Вопрос есть ли плугин который бы показывал дифф между дизасемблингом двух бинарных файлов (ARM) (нужен под линукс но если нето то и под винду можно) пробывал PatchDiff2 но он почемуто висит при открытии idb второго файла.


Ранг: 1014.5 (!!!!)
Статус: Участник

Создано: 24 апреля 2014 16:47 New!
Цитата · Личное сообщение · #14

--> Link <--

закройте эту тему и оставте линк на --> Link <--


Ранг: 1996.4 (!!!!)
Статус: Модератор
retired

Создано: 24 апреля 2014 17:08 New!
Цитата · Личное сообщение · #15

На этом и закрою, что топики плодить.
<< . 1 . 2 . 3 .
 eXeL@B —› Софт, инструменты —› Вопрос по IDA
Эта тема закрыта. Ответы больше не принимаются.

Оригинальный DVD-ROM: eXeL@B DVD !

Вы находитесь на форуме сайта EXELAB.RU
Проект ReactOS