В течение долгого времени я боролся с некоторыми функциями, сгенерированными с помощью плагина 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.
Заранее спасибо!