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





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

Создано: 08 декабря 2009 17:57
· Личное сообщение · #2

_Immortal_
по умолчанию в TEMP\ida директорию виндовса
но также просматривает и текущую директорию где лежит exe файл

ut2004
самое забавное не это
а то что после долгого изучения устройства самой IDA и hexrays удивляешься как оно вообще работает
приблизительно как с файл менеджером Far
пока он был закрыт мне нравился
но когда открыли его сорусы .... туши свет



Ранг: 15.5 (новичок), 6thx
Активность: 0.01=0.01
Статус: Участник

Создано: 18 декабря 2009 17:05 · Поправил: Vintersorg
· Личное сообщение · #3

Есть два вопроса.
1. Можно ли, стоя на switch jump, прыгнуть на нужный case, как в ольке?
2. Можно ли, находясь в теле функции, быстро перейти на ее начало и конец? Задолбался отматывать километры кода.




Ранг: 527.7 (!), 381thx
Активность: 0.160.09
Статус: Участник
Победитель турнира 2010

Создано: 18 декабря 2009 17:31
· Личное сообщение · #4

Vintersorg пишет:
Можно ли, находясь в теле функции, быстро перейти на ее начало и конец?


Ctrl+P "Choose function to jump to", курсор будет на той функе в теле которой ты находишься - на начало, а на конец, аля на начало следующей (иниче по человечески никак) или поиском строки Alt+T "endp"

-----
127.0.0.1, sweet 127.0.0.1




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

Создано: 18 декабря 2009 17:58 · Поправил: sendersu
· Личное сообщение · #5

Vintersorg пишет:
2. Можно ли, находясь в теле функции, быстро перейти на ее начало и конец? Задолбался отматывать километры кода.


еще есть вариант - схлопнуть функу (минусом), стать чуть выше (курсором), и открыть ее назад (плюсом) - станет на начало.

Если не ставать чуть выше а потом назад - возвратитесь на то же место в функе.
Как быстро найти окончание - вот ето да, загадка (блин, такие что наз-ся повседневные движения - аннет, надо изголяться...... Жаль




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

Создано: 18 декабря 2009 18:10
· Личное сообщение · #6

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

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




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

Создано: 19 декабря 2009 21:05
· Личное сообщение · #7

Vintersorg

"1. Можно ли, стоя на switch jump, прыгнуть на нужный case, как в ольке?"

а) Стоя на switch jump node переключится из текста в Graph mode (нажать пробел).

б) Нажать Ctrl+ стрелка вниз, появится диалог "Please select a node", напр.:

sub_403A00:loc_403B16 push offset aASharingViolat; jumptable 00403A3D case 26
sub_403A00:loc_403A44 push offset aTheOperatingSy; jumptable 00403A3D case 0
sub_403A00:loc_403A57 push offset aTheSpecifiedPa; jumptable 00403A3D case 3
sub_403A00:loc_403A6A push offset aTheSpecifiedFi; jumptable 00403A3D case 2
sub_403A00:loc_403A7D push offset aThe_exeFileIsI; jumptable 00403A3D case 11
sub_403A00:loc_403A90 push offset aTheOperating_0; jumptable 00403A3D case 5
sub_403A00:loc_403AA3 push offset aTheFilenameAss; jumptable 00403A3D case 27
sub_403A00:loc_403AB6 push offset aTheDdeTransact; jumptable 00403A3D case 30
sub_403A00:loc_403AC6 push offset aTheDdeTransa_0; jumptable 00403A3D case 29
sub_403A00:loc_403AD6 push offset aTheDdeTransa_1; jumptable 00403A3D case 28
sub_403A00:loc_403AE6 push offset aTheSpecifiedDy; jumptable 00403A3D case 32
sub_403A00:loc_403AF6 push offset aThereIsNoAppli; jumptable 00403A3D case 31
sub_403A00:loc_403B06 push offset aThereWasNotEno; jumptable 00403A3D case 8
sub_403A00:loc_403B24 push esi ; default

в) Enter или двойной клик по нужному кейсу.

А в текстовом режиме х.з. походу невозможно нет навигации по источникам перекрестных ссылок (XREFs from).



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

Создано: 19 декабря 2009 22:25 · Поправил: yuB1
· Личное сообщение · #8

mak
по распаковке тутор есть на ARTeam - Unpacking 4 Simple Packers with IDA Videotut arteam.accessroot.com/arteam/site/download.php?view.28 0



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

Создано: 19 декабря 2009 22:32
· Личное сообщение · #9

mak

TiGa's Video Tutorial Series on IDA Pro
смотрели?



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

Создано: 19 декабря 2009 22:50
· Личное сообщение · #10

От разработчика есть - Using IDA to deal with packed executables
www.hex-rays.com/idapro/unpack_pe/index.htm



Ранг: 251.3 (наставник), 81thx
Активность: 0.140.11
Статус: Участник

Создано: 19 декабря 2009 23:33 · Поправил: cppasm
· Личное сообщение · #11

Привет.
Есть вопрос по ARM.
Для работы со стеком там в частности используются команды:

// push R0
STR R0, [SP,-#4]!
работает как
[SP-4]=R0, SP=SP-4;

// pop R0
LDR R0,[SP],#4
работает как
R0=[SP], SP=SP+4

Суть в том что при push в команде отрицательные смещения, а при pop - положительные.
IDA задолбала уже - она положительные считает за аргументы, а отрицательные - за локальные переменные.
Напрягает при анализе. Лично мне проще чтоб просто была константа.
Приходится в каждой функции править stack frame.
Как её заставить не создавать локальные переменные?
Или удалить из всех функций в уже готовой базе?
В настройках снял галку 'create stack variables', нажал reanalize - ничего не изменилось.



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

Создано: 20 декабря 2009 18:11
· Личное сообщение · #12

Кто-нибудь кроме меня заметил, что VirtualProtect работает очень криво в Bosh отладчике?




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

Создано: 21 декабря 2009 14:35
· Личное сообщение · #13

Neuch____ пишет:
Вот 5.5 вроде полная появилась. Это правда или туфта?

http://exelab.ru/f/action=vthread&forum=3&topic=15481



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

Создано: 21 декабря 2009 15:12
· Личное сообщение · #14

SER[G]ANT,

Посмотрел на торрентсру: там пишут, что defs.h файла нет. Это правда? Как тогда компилить?



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

Создано: 21 декабря 2009 15:42
· Личное сообщение · #15

cppasm

"IDA задолбала уже - она положительные считает за аргументы, а отрицательные - за локальные переменные.
Напрягает при анализе. Лично мне проще чтоб просто была константа.
Приходится в каждой функции править stack frame.
Как её заставить не создавать локальные переменные?
Или удалить из всех функций в уже готовой базе?"

Можно попробовать удалить их скриптом. Что-то типа этого:

auto ea, id, lastoffs, offs, name;
for(ea = NextFunction(0);ea != BADADDR;ea = NextFunction(ea))
{
id = GetFrame(ea);
lastoffs = GetLastMember(id);
offs = GetFirstMember(id);

for(;offs <= lastoffs;offs = offs + 4)
{
name = GetMemberName(id, offs);
if(name == "")
continue;

if(name == " r" || name == " s")
continue;

DelStrucMember(id, offs);
}
}

Но конечно надо смотреть что есть что на АРМе (выравнивание стека, что есть там " r" - return address и " s" - saved registers и т.д.) И сначала потренироваться "на кошках"!



Ранг: 251.3 (наставник), 81thx
Активность: 0.140.11
Статус: Участник

Создано: 21 декабря 2009 17:14
· Личное сообщение · #16

Neuch____ пишет:
Посмотрел на торрентсру: там пишут, что defs.h файла нет. Это правда? Как тогда компилить?

Ну возьми из 5.2 если так надо.
По моему мнению компилировать то что выдают Лучики смысла нету - оно всё равно собираться не очень-то хочет.
svladim - да, со скриптом были идеи, тут понятно. Всё почти получилось.
Единственное - теперь в командах константы красным подсвечиваются.
Типа LDR R0,[SP,#0x40] - "#0x40" выделено красным как ошибочный операнд.
Помогает если на каждом нажать К - пометить как Stack variable.
Сейчас разбираюсь как в скрипте автоматизировать.



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

Создано: 21 декабря 2009 17:19 · Поправил: Neuch____
· Личное сообщение · #17

cppasm____ пишет:
Ну возьми из 5.2 если так надо.
cppasm - это я к тому, что может быть там и еще чего нету более существенного, чего из 5.2 не выдрать: обсуждение 5.5 ведь прикрыли.



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

Создано: 21 декабря 2009 19:29
· Личное сообщение · #18

Следующая фича в только что появившейся 5.5: сохраняю файл с расширением .lst по контрлC - получаю один файл, а file->produce file->create LST file - другой файл. В 5.2 они совпадают.



Ранг: 251.3 (наставник), 81thx
Активность: 0.140.11
Статус: Участник

Создано: 21 декабря 2009 21:05 · Поправил: cppasm
· Личное сообщение · #19

Neuch____ пишет:
это я к тому, что может быть там и еще чего нету более существенного, чего из 5.2 не выдрать: обсуждение 5.5 ведь прикрыли

Обсуждение прикрыли потому что там срач начался.
Я ничего такого не замечал чтобы что-то существенное выкинули.
А вот анализатор ARM кода намного улучшили, особенно на чистых бинарниах видно.
Завтра проверю насчёт листингов. А чем они отличаются? Сильно?
И что за листинг такой по Ctrl+C - Copy/Past чтоли?


В общем для удаления локальных переменных сделал такое:

Code:
  1. #include <idc.idc>
  2.  
  3. static main()
  4. {
  5.     auto op, func, func_end, id, offs, lastoffs, name;
  6.     // Remove frame pointer structure
  7.     for(func=NextFunction(0); func!=BADADDR; func=NextFunction(func))
  8.     {
  9.         // Get function end
  10.         func_end=FindFuncEnd(func);
  11.         if(func_end!=BADADDR)
  12.         {
  13.             // For every function command
  14.             for(op=func; op<func_end && op!=BADADDR; op=FindCode(op,1))
  15.             {
  16.                 /*
  17.                     Check first operand for stack operations
  18.                     LDR R0, [SP,#0x40] OR STR R0, [SP,#0x40]
  19.                 */
  20.                 name=GetOpnd(op, 1);
  21.                 if(strstr(name,"arg_")!=-1 || strstr(name,"var_")!=-1)
  22.                 {
  23.                     OpHex(op,1); // Modify to hex
  24.                 }
  25.             }
  26.         }
  27.         // Get stack frame
  28.         id=GetFrame(func);
  29.         lastoffs=GetLastMember(id);
  30.         // For every stack var
  31.         for(offs=GetFirstMember(id); offs<=lastoffs; offs=offs+4)
  32.         {
  33.             name=GetMemberName(id, offs);
  34.             if(name==" r" || name ==" s") continue;
  35.             if(name=="") continue;
  36.             // Kill stack variables
  37.             DelStrucMember(id, offs);
  38.         }
  39.     }
  40. }


Единственное что ещё немного не нравится - это offs=offs+4;
Но по другому не получается - GetMemberSize() возвращает -1, хотя GetMemberName() работает нормально.



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

Создано: 21 декабря 2009 22:27
· Личное сообщение · #20

cppasm____ пишет:
Copy/Past?

Да: предварительно перевести выдачу в текст.




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

Создано: 21 декабря 2009 23:47
· Личное сообщение · #21

не понимаю, зачем удалять локальные переменные? по крайней мере в 5.5 ида правильно расставляет локальные переменные и с плюсом, и с минусом:
.text:0005BBFC CC 30 4B E2 SUB R3, R11, #-var_CC
.text:0005BC00 AC 00 1B E5 LDR R0, [R11,#var_AC]
(R11 - в данном случае локальный SP). Такие переменные можно переименовать, а вот с цифрами гораздо сложнее анализировать



Ранг: 251.3 (наставник), 81thx
Активность: 0.140.11
Статус: Участник

Создано: 22 декабря 2009 11:49 · Поправил: cppasm
· Личное сообщение · #22

[wl] пишет:
не понимаю, зачем удалять локальные переменные?

Вот зачем (IDA 5.2):
Code:
  1. STR     LR, [SP,#var_4]!
  2. LDR     LR, [SP],#arg_4

В константах это выглядит так:
Code:
  1. STR     LR, [SP,#-4]!
  2. LDR     LR, [SP],#4

Т.е. это одна и та же переменная в стеке, но один раз обозначенная как arg_4, другой как var_4

IDA 5.5 выдала такое, собственно тоже не фонтан, хотя лучше.
Code:
  1. STR     LR, [SP,#var_4]!
  2. LDR     LR, [SP+4+var_4],#4

С точки зрения ARM вот это "[SP+4+var_4],#4" вообще не является правильной адресацией.

Мне с константами проще.



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

Создано: 23 декабря 2009 18:36
· Личное сообщение · #23

Отладка в IDA через Bosh рулит несомненно.

KERNEL32.dll:7C803062 kernel32_GetVersion: ; CODE XREF: GetVersionj
KERNEL32.dll:7C803062 ; GetVersion_0j
KERNEL32.dll:7C803062 ; DATA XREF: ...
KERNEL32.dll:7C803062 mov eax, offset kernel32_GetVersion
KERNEL32.dll:7C803067 call bochsys_BxUndefinedApiCall
KERNEL32.dll:7C80306C mov eax, 0
KERNEL32.dll:7C803071 retn

Прога валится в куске кода, даже до антиотладки. Не говоря уже об отладке сплайсов, где после фейкового VirtualProtect вылетает исключение при попытке записи в код.



Ранг: 251.3 (наставник), 81thx
Активность: 0.140.11
Статус: Участник

Создано: 05 января 2010 15:44
· Личное сообщение · #24

Кто-нибудь знает - можно ли как-нибудь сконвертить базу от IDA 5.0 чтобы её открыла IDA 4.9?
Есть ли вообще какой-нибудь конвертер между разными версиями баз IDA?
И вообще: можно ли открыть базу, созданную той же версией IDA, но зарегистрированной на другое имя?
Короче можно ли базу другим пользователям передавать.



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

Создано: 05 января 2010 17:52
· Личное сообщение · #25

Кто-нибудь смог успешно подебагать 16-бит апликухи в IDA? (win, NE format)
может через remote-gdb или bochs?

поделитесь опытом пож-ста



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

Создано: 05 января 2010 19:47
· Личное сообщение · #26

cppasm пишет:
конвертить базу от IDA 5.0 чтобы её открыла IDA 4.9


врядли, разве что попросить Ильфака за денюшку

cppasm пишет:
можно ли открыть базу, созданную той же версией IDA, но зарегистрированной на другое имя


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




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

Создано: 05 января 2010 20:33
· Личное сообщение · #27

cppasm
5.5 версия открывает такие базы
ну или делаешь idc дамп а потом накладываешь его по новой



Ранг: 251.3 (наставник), 81thx
Активность: 0.140.11
Статус: Участник

Создано: 05 января 2010 23:04 · Поправил: cppasm
· Личное сообщение · #28

reversecode пишет:
5.5 версия открывает такие базы

Мне наоборот надо. Downgrade базы.
Чтоб некоторые люди под Пингвином открыли, не очень лицензионной ИДА
Вот насчёт IDC это интересно - надо подумать.
--- Added ---
Да, дамп в IDC помог. Всем спасибо за помощь.



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

Создано: 18 января 2010 13:09 · Поправил: -=Hellsing=-
· Личное сообщение · #29

Кто-нибудь знает, как в IDA Pro закинуть исходник (SDK) программы, а потом его просматривать в IDA Pro как в OllyDbg. Компилирую программу на masm32 с опциями создания PDB файла. Загружаю саму программу далее экспортирую PDB file но где потом можно посмотреть сам исходник в IDA Pro как в OllyDbg не найду.

п.с
Выбираю тип процессора pdp11 - DEC PDP/11 (PDP line) но это не прокатывает прога даже потом не грузиться O_o.

Подскажите, как закинуть исходник а потом его там просматривать как в OllyDbg.

Add:
Исправил, я имел виду PDB, а не PDP ошибся.




Ранг: 527.7 (!), 381thx
Активность: 0.160.09
Статус: Участник
Победитель турнира 2010

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

-=Hellsing=- пишет:
с опциями создания PDP файла

Ну наверное PDB файла
Google: "Формат PDB (Program Database) используется для хранения отладочной информации"

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

-----
127.0.0.1, sweet 127.0.0.1





Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

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

Сдаётся мне, он компилит под процессор PDP. Но генерит ли при этом PDB-не ясно. Откуда масм компилит под этот процессор, тоже неясно. При чём тут SDK, тоже неясно. Либо, нафига он выбирает процессор PDP-неясно. Короче, где-то здоровенный косяк.


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