Как читать IL на C ++ - PullRequest
       32

Как читать IL на C ++

0 голосов
/ 01 декабря 2011

Я хотел бы знать, как можно прочитать IL из управляемой библиотеки или исполняемого файла и проанализировать метаданные в файле, подобно тому, как работает Mono.Cecil.Причина, по которой я это делаю, состоит в том, чтобы портировать некоторый код .NET на Android (и на несколько других платформ) без необходимости платить за Mono огромную плату.Мне интересно, задокументирован ли где-нибудь код IL, используемый в этих файлах.Парсер Моно кажется очень грязным.Я хотел бы прочитать фактическую спецификацию вместо ее реализации на C #.

Ответы [ 2 ]

1 голос
/ 01 декабря 2011

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

... НО ...

Большинство этих инструментов .Net сами написаны на .Net. Это нормально, если вы готовы к тому, что вам нужно на рабочей станции Windows (затем скопируйте окончательный вывод на целевое устройство).

Что касается поиска библиотеки декомпилятора или инструмента, который на самом деле работает на вашей целевой платформе Android ... это немного более проблематично:)

В любом случае, посмотрите здесь:

http://wiki.sharpdevelop.net/ILSpy.ashx

Удачи!

0 голосов
/ 01 декабря 2011

Я не понимаю, зачем вам что-то декомпилировать, разве у вас нет исходного кода для ваших собственных сборок?Вам не нужно декомпилировать их, чтобы портировать их на c ++.

Если вы пытаетесь декомпилировать сборки .NET, которые вам не принадлежат, это звучит как кража авторских прав.

Кроме того, Mono является свободным программным обеспечением.Если вы пишете бесплатное программное обеспечение (т.е. соблюдаете условия лицензии LGPL), вы можете использовать vanilla Mono на Android и вам не нужна коммерческая лицензия Mono4Android.

Другими словами: вам нужно только заплатитьесли вы не соблюдаете условия лицензий на свободное программное обеспечение (что довольно справедливо, если вы спросите меня об этом).

...