2010-11-13 1 views
0

Я хотел бы знать, есть ли какой-либо дизассемблер платформы Windows (программное обеспечение) может генерировать исходный код сборки, который также может быть скомпилирован ассемблером?Есть ли какой-нибудь дизассемблер, который генерирует скомпилированный исходный код сборки?

Поскольку дизассемблер может генерировать код сборки на основе EXE-файла, возможно ли, что код сборки будет использоваться непосредственно в качестве исходного кода, тогда исходный код будет скомпилирован ассемблером, подобным NASM?

ответ

1

IDA может генерировать исходный код. Но в большинстве случаев вы не можете его редактировать. Предположу, что следующий код:

loc_401020: 
    ret 

; ... 

dd 0FFFFFFFFh, 0, 1, 401020h, 0 
;     ^^^^^^^ can you find it in big real program? 

к вставке любых новым байты вам должны либо быть уверены, что любой sub_XXXX или loc_XXXX останется в том же смещении, либо вы должны заменить все ссылки на этикетки.

Если вы не перемещаете какой-либо код, вам не нужно перекомпилировать его - просто заплатите и, возможно, расширьте раздел кода.

+0

Спасибо, все ответы ценны для моих знаний. – Allen

1

Я думаю, что IDA неплохо справляется.

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

1

Я бы исправил исполняемый файл непосредственно в отладчике, а затем сохранил измененный исполняемый файл.

Декомпиляция и последующая перекомпиляция - это хрупкий процесс, поскольку любое изменение положения вновь собранного кода может нарушить работу программы. И я думаю, что существует несколько двоичных представлений определенных команд asm, усложняющих этот вопрос.

1

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

Дисассемблер objconv может производить сборку кода в синтаксисе masm, nasm, yasm и gas.

 Смежные вопросы

  • Нет связанных вопросов^_^