#c# #disassembly #objdump
#c# #разборка #objdump
Вопрос:
Я пытаюсь разобраться в разборке программы на c # с помощью objdump, поскольку я использую vsiaul c # 2008 express edition, который не отображает разборку.
Я запускаю следующую команду, чтобы получить выходные данные:
objdump -S ConsoleApplication4.exe
поскольку я не могу определить код своей функции в выходных данных разборки, я ввел фиктивную переменную со значением 0x1234.
public static void myfun()
{
int i;
i = 0x1234;
Console.WriteLine(i.ToString());
}
Однако я не могу найти значение 1234 нигде в сгенерированном файле! я пробовал другие варианты, такие как -t или -T для objdump, но он говорит, что таблица символов не найдена. Может кто-нибудь, пожалуйста, рассказать, как использовать objdump для просмотра разборки функции, или, если есть какой-то другой бесплатный инструмент?
РЕДАКТИРОВАТЬ: я знаю о разборке MSIL, я хотел бы узнать эквивалент языка ассемблера, пожалуйста..
Комментарии:
1. Какое именно отношение это имеет к C ? Возможно, также захочется добавить
disassembly
тег.
Ответ №1:
Если вы не создали свое приложение, нет смысла разбирать его на язык ассемблера, поскольку MSIL не компилируется в код x86 до тех пор, пока он не будет jitted во время выполнения.
Ответ №2:
Если это имеет отношение к C #, а не к C , используйте MSIL Disassembler. Кроме того, если у вас есть .Net Reflector, FileDisassembler также является отличным инструментом для этого.
Ниже приведены ссылки на полный пошаговый пример MSIL Disassembler и его статью в msdn.
http://www.mactech.com/articles/mactech/Vol.19/19.12/NETbinaries/index.html
http://msdn.microsoft.com/en-us/library/f7dy01k1(v=vs.71).aspx