Декомпилятор шестнадцатеричных лучей IDA создает проблему с кодом ASM - PullRequest
0 голосов
/ 24 мая 2019

В течение долгого времени я боролся с некоторыми функциями, сгенерированными с помощью плагина IDA HexRays, которые, похоже, повреждены.

Часть декомпилированного сгенерированного простого кода C, показанного как код ASM: /

т.е:

  sqrt(v4);
  __asm
  {
    fstp    [esp+24h+var_C]
    fld     [esp+24h+var_C]
    fstp    [esp+24h+var_14]
    fldz
  }

Что может быть причиной этого? возможно неправильные указатели стека? Я должен признать, что иногда я также получаю известную проблему sp, которую я всегда исправляю с помощью ALT + K, и корректирую отрицательный указатель стека, но проблема сгенерированного кода ASM случилась с некоторыми функциями еще до того, как я это сделал.

Обратите внимание, что когда я загружаю один и тот же исполняемый файл в другой экземпляр IDA и захожу в ту же память функций, декомпилированный код выглядит нормально, поэтому я догадываюсь, как работает экземпляр базы данных из-за одного из моих изменений (вероятно, структура структуры) сделал эту функцию не удалось?

Есть ли способ также исправить это, чтобы сгенерированный код снова выглядел как обычный C? Я уже пытался определить поврежденную функцию и повторно проанализировать ее, но выходной код все равно будет как ASM.

Заранее спасибо!

...