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

 eXeL@B —› Основной форум —› Использование IDA Pro
<< . 1 . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 10 ... 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.




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

Создано: 19 января 2010 04:10 · Поправил: -=Hellsing=-
· Личное сообщение · #2

OKOB пишет:
Ну наверное PDB файла

Да именно PDB файл я это и хотел сказать, но ошибся с названием.

OKOB пишет:
И каким это боком касается "PDP-11 — серия 16-разрядных мини-ЭВМ компании DEC, серийно производимых и продаваемых в 1970—80-х годах."

Да, наверное, не каким, c Английским туговато, а в справке к Иде когда делаю запрос PDB, то поисковик в справке там что-то выдаёт об этом процессоре.

Archer пишет:
Но генерит ли при этом PDB-не ясно.

Генирурует только вот потом IDA pro, PDB, и исходник не видит, в Олю исходник сразу грузиться если есть PDB .




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

Создано: 19 января 2010 06:34
· Личное сообщение · #3

с каких это пор IDA сорусы показывает при наличии PDB ?



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

Создано: 19 января 2010 08:06
· Личное сообщение · #4

reversecode пишет:
с каких это пор IDA сорусы показывает при наличии PDB ?

Всё понятно, значит, IDA сорусы не показывает при наличии PDB. Но можно вить, сделать плагин для этого.




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

Создано: 19 января 2010 08:16
· Личное сообщение · #5

сделайте!



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

Создано: 11 февраля 2010 21:49
· Личное сообщение · #6

в Иде получаю такой код

Code:
  1.  
  2. .text:0060761A sub_60761A      proc near               ; CODE XREF: sub_404480+1Dp
  3. .text:0060761A                                         ; sub_404480+1B3p ...
  4. .text:0060761A                 jmp     dword_74E1A8
  5. .text:0060761A sub_60761A      endp
  6.  


jmp dword_74E1A8 это вызов функции
007D9D18 007DAEC0 6334 ? UpdateData@CWnd@@QAEHH@Z MFC42
возможно ли вместо dword_74E1A8 вписать функцию и как если возможно?

-----
Надежда - есть худшее из зол, ибо она продлевает наши страдания.© Ф. Ницше





Ранг: 114.4 (ветеран), 21thx
Активность: 0.040.01
Статус: Участник

Создано: 11 февраля 2010 22:59
· Личное сообщение · #7

gena-m пишет:
возможно ли вместо dword_74E1A8 вписать функцию и как если возможно?

Встать на dword_74E1A8 и нажать N?



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

Создано: 12 февраля 2010 11:10
· Личное сообщение · #8

Видимо я неправильно сформулировал задачу.
По N у меня просто происходит переименовывание sub_60761A в UpdateData@CWnd@@QAEHH@Z
Code:
  1. .text:0060761A j_UpdateData@CWnd@@QAEHH@Z proc near    ; CODE XREF: sub_404480+1Dp
  2. .text:0060761A                                         ; sub_404480+1B3p ...
  3. .text:0060761A                 jmp     UpdateData@CWnd@@QAEHH@Z
  4. .text:0060761A j_UpdateData@CWnd@@QAEHH@Z endp
  5.  

а мне нужно что бы прыжок указывал именно на вызов функции, которая находится в списке импортируемых
007D9D18 007DAEC0 6334 ? UpdateData@CWnd@@QAEHH@Z MFC42
а в таком виде я на нее не выхожу, хотя именно она вызывается по джампу(проверено в Оле)

-----
Надежда - есть худшее из зол, ибо она продлевает наши страдания.© Ф. Ницше




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

Создано: 12 февраля 2010 14:02
· Личное сообщение · #9

gena-m пишет:
а мне нужно что бы прыжок указывал именно на вызов функции, которая находится в списке импортируемых 07D9D18 007DAEC0 6334 ? UpdateData@CWnd@@QAEHH@Z MFC42
а в таком виде я на нее не выхожу, хотя именно она вызывается по джампу(проверено в Оле)


Ну и как такое может быть, что-то не вяжется?
Code:
  1. jmp     UpdateData@CWnd@@QAEHH@Z

Если я правильно понял, судя, по твоему вопросу у тебя в Оле этот джамп указывает на начало функции, которая начинается по адресу 00x7D9D18 , а в, иде тот же джамп не попадает на начало функции, которая начинается по адресу 00x7D9D18 в том же файле так?

Ида в отличие, от Оли те, джампы которые, распознаёт, старается дать им более осмысленные имена, к примеру, в Оли это выглядит так jmp 00x7D9D18 в виде адреса, а ида решила, что этот джамп является, переходам ,на начало функции под названием jmp UpdateData@CWnd@@QAEHH@Z и в место адреса 00x7D9D18, подставила название UpdateData@CWnd@@QAEHH@Z .( UpdateData Калласс (MFC) ).

Имхо: Нужно проделать с начало то, что ты уже проделал, стать на UpdateData@CWnd@@QAEHH@Z
Code:
  1.  jmp     UpdateData@CWnd@@QAEHH@Z

И нажать N и подставить вместо названия UpdateData@CWnd@@QAEHH@Z, адрес 00x7D9D18 чтобы было так как в Оле. И в кометах над адресом 00x7D9D18 написать UpdateDat::CWnd

Другой вариант можно просто в наглую в Ида запатьчить этот переход с jmp UpdateData@CWnd@@QAEHH@Z на, jmp 00x7D9D18, предварительно настроив, иду для патчинга в idagui.cfg найти строчку DISPLAY_PATCH_SUBMENU = NO, и заменить с NO на YES. Ну а потом зайти в Edit->Patch program->Assemble… и запотчить это джамп , чтобы он указывал на начала адреса функции которая тебе нужна.



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

Создано: 12 февраля 2010 23:30
· Личное сообщение · #10

Да это уже ближе но сделал по другому
зашел в импорт выделил эту функцию
отрыл кросрефренс и добавил в нем ссылку с адреса 60761A на эту функцию
появился коментарий CWnd::UpdateData(int)
зарем стоя на этом джампе правой клавишей мыши выбрал ручной режим редактирования и прописал адрес 007DAEC0(этот адрес в списке импорта) и все стало на свои места
.text:0060761A jmp 007DAEC0 ; CWnd::UpdateData(int)
и комент на месте и навожу курсор на джамп - показывает
extrn ?UpdateData@CWnd@@QAEHH@Z:dword
и по интеру на нее выхожу - даааа уж.
Спс всем.

-----
Надежда - есть худшее из зол, ибо она продлевает наши страдания.© Ф. Ницше




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

Создано: 17 февраля 2010 09:41
· Личное сообщение · #11

В программе используется два вида вызова функций
Code:
  1. :0047F283                 push    1
  2. .text:0047F285                 mov     [ebp-48h], edi
  3. .text:0047F288                 call    j_UpdateData    ; CWnd::UpdateData(int)
  4. .text:0047F28D                 push    0
  5. .text:0047F28F                 call    Time__          ; time_t __cdecl time(time_t *Time)
  6. .text:0047F295                 push    eax
  7. .text:0047F296                 call    Srand           ; void __cdecl srand(unsigned int Seed)
  8. .text:0047F29C                 add     esp, 8
  9. .text:0047F29F                 call    Rand            ; int __cdecl rand()


через переходник .text:0060761A jmp UpdateData; CWnd::UpdateData(int) дальше идет UpdateData dd 73D96A17h это адрес функции

либо сразу text:0074E67C Time__ dd 77C3AEA3h

когда иду в импорт там эти функции соответственно располложены
.idata:007DAEC0 ; public: int __thiscall CWnd::UpdateData(int)
.idata:007DAEC0 extrn ?UpdateData@CWnd@@QAEHH@Z:dword

.idata:007DB394 ; time_t __cdecl time(time_t *Time)
.idata:007DB394 extrn time:dword

можно ли мне сразу указать вместо .text:0047F288 call вызываемая функция
.text:0047F28F call time
можно ли так делать и не вызовет ли эта подстановка ошибок в дальнейшем дизассемблировании?

-----
Надежда - есть худшее из зол, ибо она продлевает наши страдания.© Ф. Ницше





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

Создано: 17 февраля 2010 18:29 · Поправил: DenCoder
· Личное сообщение · #12

В смысле, Вы хотите, вместо sub_смещение использовать более осмысленное название? Если да, то можно.

Два способа:

1) Ставите курсор на любое место, где символическое имя этой функции, нажимаете N и меняете название
2) Ставите курсор в любое место в теле функции, нажимаете Alt - P и меняете название

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

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

-----
IZ.RU




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

Создано: 18 февраля 2010 17:47
· Личное сообщение · #13

Code:
  1. ext:004802E8                 call    j_?SendRequest@CHttpFile@@QAEHPBDKPAXK@Z_0 ; CHttpFile::SendRequest(char const *,ulong,void *,ulong)
  2. .text:004802ED                 mov     edx, [esi]
  3. .text:004802EF                 mov     ecx, esi
  4. .text:004802F1                 call    dword ptr [edx+38h] ; ?GetLength@CInternetFile@@UBEKXZ
  5. .text:004802F4                 lea     ecx, [ebp+var_18]
  6. .text:004802F7                 mov     ebx, eax
  7. .text:004802F9                 call    CString__CString
  8. .text:004802FE                 push    ebx

в строке .text:004802F1 call dword ptr [edx+38h] ; ?GetLength@CInternetFile@@UBEKXZ
вызывается функция, которая загружается после запуска программы, ее в импорте нет, возможно ли ее
занести в список импорта, что бы можно было на нее ссылаться, а не только коментарии делать.

-----
Надежда - есть худшее из зол, ибо она продлевает наши страдания.© Ф. Ницше





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

Создано: 18 февраля 2010 18:13
· Личное сообщение · #14

При прямых ссылках на импорт или джампы Ida так и пишет. В Вашем случае Ида предположила...

В Ida 5.5 Pro, думаю, что только если либо скрипт писать, либо плагин.

-----
IZ.RU




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

Создано: 19 февраля 2010 00:12
· Личное сообщение · #15

Alt-F11




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

Создано: 22 февраля 2010 18:00 · Поправил: DenCoder
· Личное сообщение · #16

Один из блоков ссылается на другой блок и этот блок за пределами функции. Граф к нему не проведен.
Можно ли в Ida 5.5 Pro включить блок в состав функции и добавить граф к нему? Или только Re-analyze с большим количеством нодов поможет?
----------------------------------------------------
Удалил 2 функции и создал заново. Получилось, блок вписался как FUNCTION CHUNK, но указатель стека 0, когда блоком выше - 68. Можно как-нибудь правильней сделать?

-----
IZ.RU




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

Создано: 07 марта 2010 00:14
· Личное сообщение · #17

Программа(обсидиум) генерирует исключение, неважно как, затем управление передается в обработчик, который выполняет некоторый код, затем управление переходит к слдедующему блоку кода, который создается в дополнительной секции(его нет в сегментах, но я его добавляю) затем управление по RET передается обратно к генерации исключения. Все эти блоки связаны обработчиком исключений.
Вопрос: как мне лучше связать эти блоки в IDA (например JMP или CALL), чтобы можно было видеть общую логику работы программы, поделитесь как вы эти конструкции реализуете?
Второй вопрос по IDC, при выполнении например PatchDword(0x79e0d7, 0x0000EB01), будут выброшены ноли, стоящие вначале 0000EB01, приходится патчить побайтно , как можно вставить все число
Dword 0000EB01.

-----
Надежда - есть худшее из зол, ибо она продлевает наши страдания.© Ф. Ницше




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

Создано: 11 марта 2010 11:05
· Личное сообщение · #18

Существуют ли нормальные способы поставить бряк на API функцию?

Вариант LocByName("kernel32_VirtualAlloc") не прокатывает на протекторах по известным причинам.



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

Создано: 11 марта 2010 11:13
· Личное сообщение · #19

не смотрел www.hex-rays.com/idapro/scriptable.htm ?



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

Создано: 11 марта 2010 11:36
· Личное сообщение · #20

n0name
И что я там должен был увидеть?



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

Создано: 11 марта 2010 17:56 · Поправил: gena-m
· Личное сообщение · #21

Если у кого есть, дайте пож. pe_dlls.idc , или подскажите как подгрузить длл, кроме варианта
"Add binary file", поскольку потом еще гемора много с его разбором.
Благодарю.

-----
Надежда - есть худшее из зол, ибо она продлевает наши страдания.© Ф. Ницше





Ранг: 147.7 (ветеран), 50thx
Активность: 0.120
Статус: Участник
sv_cheats 1

Создано: 11 марта 2010 20:48 · Поправил: SER[G]ANT
· Личное сообщение · #22

gena-m пишет:
Если у кого есть, дайте пож. pe_dlls.idc...


86e8_11.03.2010_CRACKLAB.rU.tgz - pe_scripts.zip



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

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

Подскажите, как выставить процессор по умолчанию (стоит MetaPC а нужен Intel Pentium4).
При каждом новом анализе приходится менять.

-----
Надежда - есть худшее из зол, ибо она продлевает наши страдания.© Ф. Ницше




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

Создано: 12 марта 2010 05:46
· Личное сообщение · #24

gena-m, в ida.cfg находишь DEFAULT_PROCESSOR =, там ставишь допустим "exe" : "p4"



Ранг: 115.1 (ветеран), 3thx
Активность: 0.070
Статус: Участник

Создано: 12 марта 2010 08:16
· Личное сообщение · #25

gena-m пишет:
стоит MetaPC а нужен Intel Pentium4


Options->General->Analysis->Set должно воркать




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

Создано: 16 марта 2010 22:58 · Поправил: mak
· Личное сообщение · #26

Как можно в иде сделать из такого кода
Code:
  1. Code000:0000000F                 cmp     edx, 19h
  2. Code000:00000012                 jz      loc_600
  3. Code000:00000018                 cmp     edx, 1Ah
  4. Code000:0000001B                 jz      loc_700
  5. Code000:00000021                 cmp     edx, 1Eh
  6. Code000:00000024                 jz      loc_800
  7. Code000:0000002A                 cmp     edx, 1Fh


и адресация
Code:
  1. Code000:00000608                 mov     esi, 4
  2. Code000:0000060D                 mov     ebx, [eax]
  3. Code000:0000060F                 mov     byte ptr [ebx], 66h

где 66h ничто иное как указатель на Code000:00000063 то есть на переходники указанные в первом примере. Вопрос такой , как сделать в иде из первого примера структуру с сохранением зависимости офсета + переход

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




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

Создано: 17 марта 2010 22:36
· Личное сообщение · #27

Я, примерно в такой ситуации, делаю следующее:
в коментарии к mov byte ptr [ebx], 66h пишу ;Code000:00000021
затем открываю кронсрефренс стоя на этой строке и пишу в поле from Code000:0000060F
тип перехода offset
в результате можно стоя на строке Code000:0000060F при наведении на коментарий видеть прыжки и делать переходы на прыжки и обратно.
Структуру, по моему, сделать не получится (в том виде, в каком поставлена задача)поскольку для структуры нужен тип - данные,а не код, нужно будет перевести все прыжки в данные и мнемоники будут потеряны.

-----
Надежда - есть худшее из зол, ибо она продлевает наши страдания.© Ф. Ницше




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

Создано: 03 апреля 2010 10:44 · Поправил: gena-m
· Личное сообщение · #28

Ка убрать это разделитель в середине функции ?

Code:
  1. seg005:005BC23E                 mov     eax, [ebp+arg_8]
  2. seg005:005BC241                 push    eax
  3. seg005:005BC242                 push    ebx
  4. seg005:005BC243                 call    sub_11BEFC4
  5. seg005:005BC248 ; ---------------------------------------------------------------------- -----
  6. seg005:005BC248                 mov     edx, [ebp+arg_4]
  7. seg005:005BC24B                 mov     edx, [edx]
  8. seg005:005BC24D                 mov     [edx], eax      ; запись хорошего элемента в ИАТ
  9. seg005:005BC24F                 jmp     loc_11BF3C8


Да, дествительно, разобрался с процедурой call sub_11BEFC4 ( тип прередачи и количество параметров) и все стало на свои места:

Code:
  1. seg005:005BC23E                 mov     eax, [ebp+arg_8]
  2. seg005:005BC241                 push    eax             ; int
  3. seg005:005BC242                 push    ebx             ; int
  4. seg005:005BC243                 call    xxx
  5. seg005:005BC248                 mov     edx, [ebp+arg_4]
  6. seg005:005BC24B                 mov     edx, [edx]
  7. seg005:005BC24D                 mov     [edx], eax      ; &#231;&#224;&#239;&#232;&#241;&#252; &#245;&#238;&#240;&#238;&#248;&#229;&#227;&#238; &#253;&#235;&#229;&#236;&#229;&#237;&#242;&#224; &#226; &#200;&#192;&#210;
  8. seg005:005BC24F                 jmp     loc_11BF3C8

Спасибо progopis

-----
Надежда - есть худшее из зол, ибо она продлевает наши страдания.© Ф. Ницше




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

Создано: 03 апреля 2010 10:46
· Личное сообщение · #29

gena-m
А зачем его убирать? Его смыл в том, что в функции 0x11BEFC4 не найдено ничего, чтобы могло привести возврату из этой функции. Например нет инструкции RET или стоит ExitProcess.



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

Создано: 03 апреля 2010 11:22 · Поправил: gena-m
· Личное сообщение · #30

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

b01e_03.04.2010_CRACKLAB.rU.tgz - 1.JPG

-----
Надежда - есть худшее из зол, ибо она продлевает наши страдания.© Ф. Ницше





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

Создано: 03 апреля 2010 12:58 · Поправил: reversecode
· Личное сообщение · #31

никак
это полезность в IDA, которая ломает ее функциональность

ps и таких полезностей еще ого-го сколько

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


<< . 1 . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 10 ... 50 . 51 . >>
 eXeL@B —› Основной форум —› Использование IDA Pro
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати