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

 eXeL@B —› Вопросы новичков —› Размер структуры - где нужный указатель в асм листинге?
Посл.ответ Сообщение

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

Создано: 08 февраля 2014 20:54
· Личное сообщение · #1

Имеется асм листинг функции из Ida 6.1

Code:
  1. .text:00565690 this= dword ptr -4
  2. .text:00565690
  3. .text:00565690 push    ebp
  4. .text:00565691 mov     ebp, esp
  5. .text:00565693 push    ecx
  6. .text:00565694 mov     [ebp+this], ecx
  7. .text:00565697 mov     eax, [ebp+this]
  8. .text:0056569A mov     eax, [eax+0AF4h]
  9. .text:005656A0 mov     esp, ebp
  10. .text:005656A2 pop     ebp
  11. .text:005656A3 retn



hex-rays генерирует к нему следующий псевдокод

Code:
  1. int __thiscall StaticVector_Size(StaticVector *this)
  2. {
  3.   return this[1]._Size;
  4. }



Вопрос

в [eax+0AF4h] лежит адрес где хранится значение _size? Т.е. если перейти в иде через кнопку G по адресу eax+0AF4h во время бряка на 56569A, то там должен быть указан этот самый _size?




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

Создано: 08 февраля 2014 21:00 · Поправил: reversecode
· Личное сообщение · #2

StaticVector * неправильного размера
там недолжно быть this[1]
а должно быть this->field_af4;

да там должен быть size



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

Создано: 08 февраля 2014 21:01
· Личное сообщение · #3

Еще не могу понять одну вещь, this в этой функции является массивом?




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

Создано: 08 февраля 2014 21:03
· Личное сообщение · #4

StaticVector *this - это значит, что this-указатель на StaticVector, ваш кэп.
1 топика мало было?



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

Создано: 08 февраля 2014 21:30 · Поправил: ohos
· Личное сообщение · #5

Небольшой вопрос не по теме, но имеющий отношению к вышеописанному:

если изменить exe файл (менял олькой, т.к. Ida не может, но менял только несколько чисел, размер exe файла при этом не изменился) и затем открыть его идой с idb от оригинального exe, то это может привести к каким-то нежелательным последствиям?

заметил странность, что псевдокод сгенерированный от функции на открытом измененном файле и во время аттача к запущенному процессу (от измененного exe) генерирую разный псевдокод



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

Создано: 08 февраля 2014 23:34
· Личное сообщение · #6

Блин, не могу создать новую тему, придется тут спросить

Имеется программа с pdb файлом, пробовал в ida 6.1 сгенерировать её псевдо исходник через функцию produce c file, но его создание переодически останавливается на разных функциях и ида пишет что её нужно перезапустить, обычно после перезапуска делаю undifine проблемной функции (т.к. создание его псевдокода вручную через F5 тоже не работает), но таких функций очень много.

Вопрос - можно ли как-то produce C file заставить автоматически делать undefine функций от которых не удается получить псевдо C код и заодно записать адреса таких проблемных функций?




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

Создано: 08 февраля 2014 23:37 · Поправил: reversecode
· Личное сообщение · #7

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



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

Создано: 09 февраля 2014 00:53
· Личное сообщение · #8

в файле 27 000 функций, вы действительно думаете, что ручками это реально?



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

Создано: 09 февраля 2014 00:54
· Личное сообщение · #9

К тому же вопрос был именно в том, можно ли иду заставить не декомпилируемые функции андефайнить автоматом и записывать адреса таких функций??




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

Создано: 09 февраля 2014 00:59 · Поправил: reversecode
· Личное сообщение · #10

я думаю что у вас неправильно стоит задача

и очевидный ответ на ваш вопросы был - НЕТ



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

Создано: 09 февраля 2014 15:01
· Личное сообщение · #11

Задача изменить размер статичного вектора (массива), но он входит в структуру, а та еще в одну...




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

Создано: 09 февраля 2014 15:07 · Поправил: reversecode
· Личное сообщение · #12

и? для этой задачи нужно заниматься декомпиляцией вслепую всего листинга что ли?
мне почему декомпиляция всего листинга никогда не нужна, хотя разбираю до 90% всего кода
так что пересмотрите методы решения своей задачи


 eXeL@B —› Вопросы новичков —› Размер структуры - где нужный указатель в асм листинге?
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати