Народ кто-нибудь занимается этой тематикой. Есть несколько вопросов: Существуют ли просмоторщики .NET сборок, которые не используют Reflection, просто например после использования какого-нибудь обфускатора все утилиты для реверсинга основанные на Reflection отваливаются Как добраться непосредственно до il кода при просмотре в hex-редакторе сборки ?
Посмотри вот сюда: http://www.rsdn.ru/article/dotnet/phmetadata.xml На обфусцированных сборках Researcher упадёт, но, скорее всего, можно будет увидеть, на какой таблице и на какой записи он упал.
Да статья хорошая. А есть еще какая-нибудь дельная инфа. Если еть опыт реверсинга .NET приложений какие тулзы юзал
Весь инструментарий для реверсинга .NET приложений который удолось раздобыть во всю использует Reflection и если файлик защещен чем-то, то такой инструментарий бесполезен. Отсюда вопрос, если есть опыт реверсинга .NET приложений, поделись советами о том как оно нужно делать. Может быть есть инфа о каких-нибудь ниболее полезных тулзах или вообще есть самописный софт. Если знаешь хорошие стать на тему построения защиты .NET приложений тоже кидай сюды. Ели есть инфа какой принцип защиты использует Alladin и SafeNet при использовании автозащиты .NET приложений, тоже будет очень кстати.
я извиняюсь, конечно, но разве ildasm не рулит? сурс получите в любом случае, и можно дальше разбираться, полиморфиков под дотнет я чето не видел, а обфускация.. защита от ленивого
Извиняю, чего там... Нет, не рулит. Проблема в том, что он написан в истинно майкрософтовском духе - вроде бы всё показывает, но не показывает, откуда и каким способом это "всё" взялось. Кроме того, позволю себе уточнить - ildasm выдаёт не исходный код, а MSIL. В какойм-то смысле этот MSIL можно рассматривать как .NET-овский ассемблер.
Извиняю, чего там... Нет, не рулит. Проблема в том, что он написан в истинно майкрософтовском духе - вроде бы всё показывает, но не показывает, откуда и каким способом это "всё" взялось. Кроме того, позволю себе уточнить - ildasm выдаёт не исходный код, а MSIL. В какойм-то смысле этот MSIL можно рассматривать как .NET-овский ассемблер.
а кстати, MSIL вполне доступный для понимания язык. Разобраться можно. Некоторые ретивые товарищи утверждали что ломают все подряд .NET защиты с помощью ildasm -> копания в исходниках, полученных им -> обратная перекомпиляция
Ну дык, кроме флейма по теме может кто-нибудь сказать или как то народ еще не проникся к теме реверсинга .NET приложений
Да посмотрел, статья талковая. Я читал до того как эту ветку запостил. А кроме этой статьи нет ничего больше что ли. Вообще меня интересует конкретный вопрос, как пропатчить CIL код в сборке, только меня интересует не конкретная програмулина, которая это делает, а оаписание самого процесса, как она это делает. Какие либы юзает, либо просто по напрямую патчит, но тогда как вычисляется смещение где патчить ...
Кстати нашел интересную либу, котарая реализует все необходимая для патчинга .NET сборок из своего кода. Вот линк: http://www.mono-project.com/Cecil
К сожалению, должен констатировать, что ты невнимательно прочитал статью. Одна из глав в этой статье называется, в частности, "Как «добраться» до кода". Если и после этого не придёт понимание... О внутренностях метаданных можно почитать у Сержа Лидина в его книге. Можно изучить 4-ю (кажется) часть стандарта ECMA-335, да мало ли что ещё можно найти... Нужно только учесть, что в .NET'овских сборках код представлен не в виде ассемблерных команд, а в виде MSIL'а. Ты MSIL хорошо понимаешь? А взаимосвязь таблиц метаданных друг с другом? А, скажем, что происходит во время JIT-компиляции? А что такое "подписанная сборка" и почему её нельзя вообще изменять (если, конечно, хочешь оставить подпись валидной)? Если на все вопросы ответ положительный, то тогда никто и ничто не помешает тебе разобраться в процессе изменения .NET'овской сборки. В противном случае - книги и руководства тебе в руки. Кстати, Researcher не пользуется Reflection'ом, если ты заметил.
Да заметил, что он непользует Reflection. Ок, пробегусь еще по статье. Где можно слить книжечку Лидина. На преведенные вопросы пока не на все могу ответить, но на пути к этому . Кстати советую взглянуть на вот эту тулзу http://www.ntcore.com/products.php она гораздо удобнее Researcher и неиспользует тоже Reflection. Может обменяемся почтой или аськами, так общение будет протекать более эффективно
Кстати а может есть ссылочка на исходнички утитилитки какой-нибудь, которая может декомпилировать сборки (желательно на С++). Я скачал конечно SSCLI, но может есть еще что-нибудь . P.S.: Я кстати Павел читал практически все ваши книги, огромный вам респект за них
Вот линк на прогу на плюсах с сорцами которая делает все что мне требовалось. http://www.thinkingms.com/pensieve/homepage/work/trashbin/trashbin.htm Код (Text): usage: trashbin <PE filename> [options] portable executable info: /dos display dos header /sig display the file signature /coff display coff header /pe display pe/optional header /dd display data directories in pe header /sec display section headers /exp display export table /imp display import table /reloc display relocation information /tls display Thread Local Storage information managed info: /corhdr display the common language runtime header /mdhdr display metadata headers /md:Strings display metadata stream #Strings /md:Blob display metadata stream #Blob /md:US display metadata stream #US (user strings) /md:GUID display metadata stream #GUID /md:#~ display optimised metadata tables stream-header /mdtab display optimised metadata tables other: /type indicates the type of the PE file /csv enable excel compatible, CSV output
Вот линк на хорошую статейку по структуре .NET сборок http://www.codeproject.com/dotnet/dotnetformat.asp