1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Переводчик .dll файлов . Дайте такой.

Тема в разделе "Оффтопик", создана пользователем jwplaster, 20 окт 2013.

  1. Автор темы
    jwplaster

    jwplaster Старожил Пользователь

    Баллы:
    173
    Skype:
    jwplaster.smartworld
    Имя в Minecraft:
    QviNSteN
    Есть программа которая выводит из .class файлов только надписи и после их можно редактировать и т.д. (забыл просто название :) )
    Так вот.. мой вопрос такой: Есть ли такая же программа , но уже для .dll файлов.
     
  2. Sio

    Sio Старожил

    Баллы:
    153
    Имя в Minecraft:
    Sio
    Если прога для переводов называется InClassTranslator, то эта по логике InDllTranslator, но увы такой нету.
     
  3. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
  4. Racvol

    Racvol Старожил Пользователь

    Баллы:
    123
    Если dll написана на VB.NET, C#, C++/CLI то такая dll называется управляемым модулем (или сборкой), управляемый модуль (managed module) - стандартный переносимый исполняемый (portable executable, РЕ) файл 32 -разрядной ( РЕ32 ) или 64-разрядной Windows ( РЕ32+), который требует для своего выполнения CLR. Такой управляемый модуль(или PE файл) состоит из:
    1. Заголовок РЕ32 или РЕ32+ (тут может содержаться блок данных называемым manifest)
    2. Заголовок CLR
    3. Метаданные
    4. Код Intemediate Language (IL)

    Этот PE код легко дисасемблировать, достать IL код отредактировать его и заасемблировать например с помощью утилит ILDasm и ILAsm и аналогов. Однако если есть манифест и в нем хранится цифровая подпись(издатель подписывает модуль чтобы получить сборку со строгим именем) то модифицировать такой файл неполучится.
    Дело в том что после компоновки РЕ-файла с манифестом рассчитывается хэш всего содержимого
    этого файла значение хэша подписывается закрытым ключом издателя, а полученная в результате цифровая подпись RSA заносится в зарезервированный раздел РЕ-файла и в СLR-заголовок РЕ- файла записывается адрес, по которому встроенная цифровая подпись находится в файле. В этот РЕ-файл также встраивается открытый ключ издателя (он записывается в таблицу AssemblyDef метаданных манифеста).
    При загрузке сборки со строгим именем CLR проверяет её хэш. Иначе говоря, в данном случае расчет хэша для файла выполняется при каждом запуске приложения. Это гарантирует что сборка не подверглась несанкционированной модификации.
    Обнаружив во время выполнения несоответствие значений хэша, CLR генерирует исключение System.IО.FileloadException.

    В случае если dll написана на другом языке например C++ Pyton VB Delphi Асемблер и тд Можно модифицировать сроку либо воспользовавшись хекс редактором(однако в этом случае новый текст должен быть такойже длины как старый), можно также использовать дисасемблер. Можно подменить адресс процедуры вызова где находится старый метод на новый заняв под эти нужды незанятое адресное пространство в файле. Подробно расписывать не буду ибо устал.
     
    MineMan910 нравится это.

Поделиться этой страницей