Сейчас на форуме: asfa, bartolomeo (+7 невидимых)

 eXeL@B —› Вопросы новичков —› Ida: debug сегменты и динамически создаваемые массивы.
Посл.ответ Сообщение

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

Создано: 11 марта 2012 00:07 · Поправил: koi8-r
· Личное сообщение · #1

Доброго времени суток, прошу сильно не пинать, искал ответ, пытался сам, но не смог =) Помогите новичку.

Есть некая программа написанная на VC++ 2008 (как говорит ExeInfoPe).
У программы есть оверлей, виртуальный размер секций меньше Raw, что немного напрягает, но ExeInfoPe говорит Not packet.

Программа использует
int RSA_public_encrypt(int flen, unsigned char *from, unsigned char *to, RSA *rsa, int padding) из libeay32.dll (openssl).

Ида при начале отладки создает сегменты debug01,debug02 .. debugNN, которых нет при статическом дизасемблировании и в котрых располагаются массивы char*from и char*to.

Что это за сегменты (malloc ?, new ?) и как отследить модификацию массивов from/to (начальное заполнение) в их недрах если они создаются динамически с разными адресами и на них нельзя поставить точку останова или трасер до начала отладки ? Кода оооооочень много from[] все время по разным адресам одного из сегментов debug, понять откуда у этого массива ноги растут не могу уже 3 день. Где начать трасировку фиг знает, еще этот C++ со своими констукциями ... Может есть какой то способ ?


Вызов такой:
Code:
  1. push    offset RSA_public_encrypt
  2. push    eax
  3. push    edx
  4. add     ecx, 4
  5. call    sub_89FE20
  6.  
  7. ...
  8.  
  9. // Где то дальше сам вызов.
  10.  
  11. call    [esp+34h+arg_8] ; call RSA_public_encry
  12.  
  13. /*
  14.  Стек в момент вызова:
  15.  0018F464  00000044                                 ; flen
  16.  0018F468  1B63F1A0  debug431:1B63F1A0 ; *from <-- Как словить этот адрес и как можно раньше узнать его значеие ???
  17.  0018F46C  208C23E0  debug453:208C23E0 ; *to
  18.  0018F470  1D4F8800  debug434:1D4F8800 ; *rsa
  19.  0018F474  00000004                                 ; padding
  20. */
  21.  




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

Создано: 11 марта 2012 09:26
· Личное сообщение · #2

пойдем от обратного, чего в итоге нужно получить?



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

Создано: 11 марта 2012 09:34
· Личное сообщение · #3

Необходимо понять кто и как формирует буфер для шифрования.



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

Создано: 11 марта 2012 15:22
· Личное сообщение · #4

как вариант попробовать все таки использовать ollydbg, из ida выгрузить map и через mapimp загрузить в олю, потом перед вызовом я бы в обратном порядке смотрел откуда в eax, edx, ecx берутся значения



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

Создано: 11 марта 2012 16:30 · Поправил: koi8-r
· Личное сообщение · #5

А отладчик olly лучше чем отладчик Иды 6.1 ?



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

Создано: 11 марта 2012 16:33 · Поправил: koi8-r
· Личное сообщение · #6

Заметил еще один интересный факт:
Api Monitor v2 показывает вызов CreateFileW, но Ida его не ловит 8-\
При чем поиск в хексе строки по имени файла не дал результата ни в отладчике не в дизасемблере....

... С перехватом разобрался, CreateFileW вызывал код в MSVCP90


 eXeL@B —› Вопросы новичков —› Ida: debug сегменты и динамически создаваемые массивы.
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати