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





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

Создано: 07 августа 2011 19:54
· Личное сообщение · #2

terar
фиксится просто, надо дочитать топик до конца
где я сам себе дал ответ
http://exelab.ru/f/action=vthread&forum=1&topic=12507&page=12#25



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

Создано: 07 августа 2011 22:03
· Личное сообщение · #3

reversecode
Виноват, как-то не подумал, что на вопрос 4 страницы дается ответ на 12.
Спасибо за помощь.



Ранг: 516.1 (!), 39thx
Активность: 0.280
Статус: Участник

Создано: 07 августа 2011 23:59 · Поправил: Av0id
· Личное сообщение · #4

хочу удаленную отладку linux приложения, поставил две виртуалки (winxp и debian6), настроил сеть, настроил шары (все копируется, все пингуется, машины друг друга видят), запускаю linux_server на debian'e, топаю в винду и пытаюсь подключиться, получаю странную ошибку (рис.1), мол файл не найден, но найден (бред сивой кобылы)


рис.1

хорошо, жму use found, получаю


рис.2

теперь если нажать yes, получаем этот же самый msgbox (рис.2), если no - то не получаем ничего, если выше нажать не use found, а copy new, то просит выбрать файл, выбираем, получаем опять эту же ошибку (рис.2)

debian пишет, что кто-то подключился, все параметры выводит правильно (включая crc32), но ничего не получается в итоге (рис.3)


рис.3

действую примерно по такому сценарию... пробовал как-то давно на 5.5 делать тоже самое, получал точно такой же отрицательный результат
http://www.tigacorp.net/videos/TiGa-vid2.htm

подскажите как правильно лыжи намазать?




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

Создано: 08 августа 2011 00:25 · Поправил: reversecode
· Личное сообщение · #5

сам keygenme хоть запускается на дебиане?

видишь результат start_process() => -2
-2 это ошибка
лезем в исходники linux_server

Code:
  1. int idaapi linux_debmod_t::dbg_start_process(const char *path,
  2.                                              const char *args,
  3.                                              const char *startdir,
  4.                                              int flags,
  5.                                              const char *input_path,
  6.                                              uint32 input_file_crc32)
  7. {
  8.   // immediately switch to the startdir because path/input_path may be relative.
  9.   if ( startdir[0] != '\0' && chdir(startdir) == -1 )
  10.   {
  11.     dmsg("chdir '%s': %s\n", startdir, winerr(errno));
  12.     return -2;
  13.   }
  14.  
  15.   // input file specified in the database does not exist
  16.   if ( input_path[0] != '\0' && !qfileexist(input_path) )
  17.     return -2;
  18.  
  19.  ...




Ранг: 516.1 (!), 39thx
Активность: 0.280
Статус: Участник

Создано: 08 августа 2011 00:39 · Поправил: Av0id
· Личное сообщение · #6

keygenme запускается, в dmsg нет никаких сообщений, получается что путь не найден




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

Создано: 08 августа 2011 00:45 · Поправил: reversecode
· Личное сообщение · #7

qfileexist скрыта в .a библиотеке, мне нехочется ida запускать что бы смотреть
в любом случае варианта два
1 - реализация правильна, и процесс linux_server не может добратся до файла input_path
из за того что прав маловато
2 - реализация кривая, тогда нужно лезть в бинарник linux_server и нопить этот код


Code:
  1. char __cdecl qfileexist(const char *filename)
  2. {
  3.   struct stat stat; // [sp+18h] [bp-64h]@1
  4.  
  5.   return _xstat(3, filename, &stat) == 0;
  6. }




Ранг: 516.1 (!), 39thx
Активность: 0.280
Статус: Участник

Создано: 08 августа 2011 00:47 · Поправил: Av0id
· Личное сообщение · #8

под рутом всё действо происходит, попробую запустить не с шары, а из папки

ps. qfileexist вызывает __xstat

ps. все получилось, примонтированные samba пути почему-то не видит

ps. теперь другая трабла, signal'ы неправильно как-то обрабатывает, допустим исключение SIGTTIN (чтение из консоли) ставлю перенаправлять на программу и тишина, IDA продолжает обрабатывать исключение на себя



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

Создано: 29 августа 2011 13:46
· Личное сообщение · #9

Толи лыжи не едут, толи ...
простейший пример:
Code:
  1. void PrintString(wchar_t* sArg0, wchar_t* sArg1, wchar_t* sArg2, wchar_t* sArg3, wchar_t* sArg4, wchar_t* sArg5, wchar_t* sArg6)
  2. {
  3.          wprintf(L"%s %s %s %s %s %s %s\n", sArg0, sArg1, sArg2, sArg3, sArg4, sArg5, sArg6);
  4. }
  5.  
  6. int _tmain(int argc, _TCHAR* argv[])
  7. {
  8.          PrintString(argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6]);
  9.          return 0;
  10. }


компилим VC10.0 в х64
открываем в иде, и наблюдаем:
Code:
  1. .text:0000000140001050 ; int __cdecl main(int argc, const char **argv, const char **envp)
  2. .text:0000000140001050 main            proc near               ; CODE XREF: __tmainCRTStartup+115p
  3. .text:0000000140001050                                         ; DATA XREF: .pdata:000000014000400Co
  4. .text:0000000140001050
  5. .text:0000000140001050 var_28          = qword ptr -28h
  6. .text:0000000140001050 var_20          = qword ptr -20h
  7. .text:0000000140001050 var_18          = qword ptr -18h
  8. .text:0000000140001050
  9. .text:0000000140001050                 sub     rsp, 48h
  10. .text:0000000140001054                 mov     rax, [rdx+30h]
  11. .text:0000000140001058                 mov     rcx, [rdx]      ; sArg0
  12. .text:000000014000105B                 mov     r9, [rdx+18h]   ; sArg3
  13. .text:000000014000105F                 mov     r8, [rdx+10h]   ; sArg2
  14. .text:0000000140001063                 mov     [rsp+48h+var_18], rax
  15. .text:0000000140001068                 mov     rax, [rdx+28h]
  16. .text:000000014000106C                 mov     [rsp+48h+var_20], rax
  17. .text:0000000140001071                 mov     rax, [rdx+20h]
  18. .text:0000000140001075                 mov     rdx, [rdx+8]    ; sArg1
  19. .text:0000000140001079                 mov     [rsp+48h+var_28], rax
  20. .text:000000014000107E                 call    ?PrintString@@YAXPEA_W000000@Z ; PrintString(wchar_t *,wchar_t *,wchar_t *,wchar_t *,wchar_t *,wchar_t *,wchar_t *)
  21. .text:0000000140001083                 xor     eax, eax
  22. .text:0000000140001085                 add     rsp, 48h
  23. .text:0000000140001089                 retn
  24. .text:0000000140001089 main            endp

Аргументы, передаваемые через регистры, получили свои каменты (sArg0,..,sArg3). Это хорошо.
А вот где то, что передается уже через стек (sArg4,..,sArg6).
Что и где подкрутить в иде, чтобы она и аргументы на стеке тоже распознавала и помечала?




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

Создано: 29 августа 2011 14:08 · Поправил: reversecode
· Личное сообщение · #10

awlost пишет:
А вот где то, что передается уже через стек (sArg4,..,sArg6).

Code:
  1. .text:0000000140001063                 mov     [rsp+48h+var_18], rax

итд


awlost пишет:
Что и где подкрутить в иде, чтобы она и аргументы на стеке тоже распознавала и помечала?

IDA такое не распознает
ищи опции компилера который сгенерит код передачи параметров через push, правда не помню можно ли так в x64, я давно не реверсил x64 приложения...



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

Создано: 29 августа 2011 14:35
· Личное сообщение · #11

reversecode пишет:
IDA такое не распознает

Однако.
В то время как космические корабли бороздят просторы...
Создаются хексрейсы, дизассемблеры диковинных архитектур, такая элементарность не реализована.
В приведенном примере глазами-то я вижу где аргументы на стеке. Но пример он на то и пример. В реалии встречаются функции, где передача параметров размазана по коду, не умещающемся на экране высотой в 1200px.
Наверно я что-то всеже не понимаю, но давно же известно http://msdn.microsoft.com/en-us/library/zthk2dkh(v=VS.100).aspx
какие тут могут быть сложности или неоднозначности.




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

Создано: 29 августа 2011 14:37
· Личное сообщение · #12

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




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

Создано: 29 августа 2011 15:17
· Личное сообщение · #13

а какая у вас версия ida? может старенькая?
я смутно помню что когда то реверсил x86 приложения от MacOSX, там аргументы тоже через mov [esp... передавались
аргументы у меня в комментариях определялись.... но было это давно и пример врядли смогу найти
если версия у вас 6.1, может это глюк и ida плохо работает именно с x64



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

Создано: 05 сентября 2011 20:56 · Поправил: neprovad
· Личное сообщение · #14

Подскажите, как можно из под запущенной ida с консоли или еще как сделать доступным отладчик local win debugger если он не грузится в список. В списке уже присутствуют remote gdb, bosch и windbg. Интересует именно local windows dbg, т.к. он из-за ошибки при загрузке подопытной dll в ida отказывается загружаться.
Любые другие dll грузятся нормально, а на моей подопытной сбивается local windows dbg



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

Создано: 09 сентября 2011 14:00 · Поправил: kp0m
· Личное сообщение · #15

Как в иде (скриптами?) можно обработать бряк на WriteFile, что б после остановки, сохранить небольшой буфер данных в лог-файл и продолжить исполнение? Сделать что-то типа снифера ... Спасибо

ps:Все, нашел, спасибо Hexxx
http://exelab.ru/f/action=vthread&forum=1&topic=13601&page=0#18



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

Создано: 10 сентября 2011 13:16 · Поправил: sendersu
· Личное сообщение · #16

Наверное у многих возникал такой вопрос и видимо есть решение
Ида, юникод строки, пример

........
dw 3Ch
unicode 0, <xml>
dw 3Eh, 3Ch
.....

Вопрос - как научить Иду вносить символы меньше и больше (<, >) в юникод строку?


еще одна интересная прожка попалась давеча
Ида офигела (6.1)

[Warning]
This file contains unusual type of RTTI descriptor
Please send the input file to <support@hex-rays.com>
[OK]




Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 09 октября 2011 15:08
· Личное сообщение · #17

Здрасте. Может, кто знает - есть кодес, внутри которого много вызовов типа
Code:
  1.  call    dword ptr [eax]

Притом мне известно, что, к примеру, тут вызывается функция VirtualAlloc. Можно ли как-то заставить иду сопоставить значения, передаваемые в стек, с аргументами этой функции, если ида не распознала вызов этой функции автоматически?

-----
Stuck to the plan, always think that we would stand up, never ran.





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

Создано: 09 октября 2011 17:40 · Поправил: reversecode
· Личное сообщение · #18

если код типа
mov eax,
а дальше много по коду call [eax] .... call [eax]
не уверен что поможет, но можно попробовать сделать деобфускацию питоновским скриптом
- Branko Spasojevic with the optimice python plugin -

для одиночного значения тоже можно попробовать скрипт
но чем тебе мешает это одиночное значение?
и вообще что значит сопоставить? ну поставь в комментарии что call [eax] это VirtualAlloc
или eax переименуй, если он по коду дальше не используется

Hexxx
да как то и сообразить не можем зачем это надо?) потому и не пользовали




Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 09 октября 2011 17:42
· Личное сообщение · #19

reversecode
Хорошо, а одиночное значение вручную можно как-то сопоставить?

-----
Stuck to the plan, always think that we would stand up, never ran.




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

Создано: 09 октября 2011 23:42 · Поправил: Hexxx
· Личное сообщение · #20

можно, ставишь курсор на call [eax], дальше edit - plugins - change callee address и указываешь там адрес куда оно реально делает call. Получится как-то так:

Code:
  1. PAGE:0049778A                 push    [ebp+param]     ; param
  2. PAGE:0049778D                 call    dword ptr [eax] ; MiSectionDelete(x)


Это такой стандартный плагин с идой идет. Он есть но никто не знает для чего он

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


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

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

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

Такой вопрос. Напитонил скрипт, вытаскивающий из секции данных файлика тестовые строки, адреса, по которым они расположены и ссылки на них. Строки предполагается перенести в другое место и ссылки на них соответственно пропатчить. Проблема в том, что если ссылка исходит из инструкции (скажем, push offset str или mov eax, offset str), IDA по запросу на ссылку выдает адрес самой инструкции, а не адрес операнда. Можно как-то получить смещение операнда внутри инструкции относительно начала инструкции?



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

Создано: 04 ноября 2011 00:32 · Поправил: Hexxx
· Личное сообщение · #22

Vintersorg пишет:
Можно как-то получить смещение операнда внутри инструкции относительно начала инструкции?

Зачем получать смещение операнда в инструкции, если можно получать его значение?

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




Ранг: 117.5 (ветеран), 5thx
Активность: 0.080.01
Статус: Участник

Создано: 07 ноября 2011 10:27 · Поправил: sats
· Личное сообщение · #23

Добрый день! возник такой вопрос - настроил Vmware с linux 2.4 на возможность приатачиться Ida с использованием GDB, это сделать удалось. но вот как вывести списки загруженных модулей (*.ko) и в них порыться - тупик. http://www.hexblog.com/?p=94 - здесь описание под Windows + скрипты. может кто сталкивался с такой же проблемой, но под Linux ?
погуглил по внимательней - нашел http://www.hex-rays.com/products/ida/support/tutorials/debugging_gdb_linux_vmware.pdf . Проверю отпишусь.



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

Создано: 09 ноября 2011 10:30
· Личное сообщение · #24

с linux 2.4 Ядро 2.4 ? Там архитектура системы была другая - может поэтому сложности?



Ранг: 117.5 (ветеран), 5thx
Активность: 0.080.01
Статус: Участник

Создано: 09 ноября 2011 11:21
· Личное сообщение · #25

в общем разобрался - ksyms экспортировал в IDA, потом нашел размещение в памяти нужного модуля и функций. вроде отладка пошла нормально.



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

Создано: 09 ноября 2011 13:05
· Личное сообщение · #26

аттачнулся в иде (6.1) к нужному процессу, запустил на исполнение после аттача, в программе ексепшин (ето в порядке вещей), но здесь (впервые) Ида странно ругается

[Warning]
Exception code zero is not allowed
[OK]

и не пускает дальше на исполнение
Кто с таким стыкался?
Спасибо



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

Создано: 12 ноября 2011 02:47
· Личное сообщение · #27

Господа, подскажите. Пытаюсь сделать патч с помощью Edit->Patch Program->Assemble, но у меня складывается ощущение, что IDA не понимает 64 битный код. Пользуюсь версией 6.1 (64-bit).




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 12 ноября 2011 21:12
· Личное сообщение · #28

Помнится уже кто то писал, как в иде обзывать бинарные маски, но что то найти не могу. Т.е. когда допустим в CreateFile передается 0xC0000000, как в иде это преобразовать в GENERIC_READ or GENERIC_WRITE?

-----
Yann Tiersen best and do not fuck





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

Создано: 12 ноября 2011 21:18 · Поправил: reversecode
· Личное сообщение · #29

обычные enum обьявляются и все
ida сама их рассортирует
http://www.hex-rays.com/products/ida/support/tutorials/bitfields/index.shtml
и еще был какойто пример, на сайте ильфака, что то не ищется

M нужно будет на числовом поле нажать и нужный enum выбрать




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 13 ноября 2011 07:55
· Личное сообщение · #30

Ага. Идем в View->Open subviews->Enumerations
Жмем Ins. Ставим галку Bitfield и жмем Add standard enum by symbol name. Ищем любую константу, например GENERIC_WRITE и жмем Ok. Далее ида сама определит энум и воткнет его, потом лишь остается в коде заменить числовую маску на на константы.

-----
Yann Tiersen best and do not fuck




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

Создано: 23 ноября 2011 17:08
· Личное сообщение · #31

MadHacker пишет:
Имеется программа которая использует в перемешку строки Unicode и GBK (Китайский язык).
...
Возможно ли такое сделать, если да - куда копать.

наскоко я понял, может помочь выставить китайский язык в виндовсе, тогда ида начнет понимать китайский+английский.

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

нагуглил токо пост пятилетней давности http://www.hexblog.com/?p=18
и то шо пока никому из купивших - такая поддержка не нужна.
наверно за пять лет - воз и нынче там.


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