Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
1 / 1 / 0
Регистрация: 02.07.2013
Сообщений: 37

Отредактировать Dll библиотеку, ибо не корректно работает

13.07.2013, 20:24. Показов 1906. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть у меня одна DLL библиотека и некоторые строки нужно изменить. Посоветовали мне на этом форуме перекомпилировать ее в формат IL и там уже изменять. Все бы нечего, я изменил что нужно, пере образовал обратно в Dll. Но тут возникла одна проблема:
В библиотеке есть эти строки:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
.method private hidebysig specialname rtspecialname static 
          void  .cctor() cil managed
  {
    // ђ*§¬Ґа Є®¤*:       21 (0x15)
    .maxstack  8
    IL_0000:  ldstr      "NavitelContent/Speedcams"
    IL_0005:  stsfld     string Navitel.MainPage::ms_strSpCamsDir
    IL_000a:  ldstr      "SpeedCam.txt"
    IL_000f:  stsfld     string Navitel.MainPage::ms_strSpCamsFileName
    IL_0014:  ret
  } // end of method MainPage::.cctor
Так как я не силен в программировании, я думаю что этот код помещает файл SpeedCam.txt в папку NavitelContent/Speedcams.

А мне нужно чтоб не один файл помечался, а два или три, по этому я изменяю код на:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
.method private hidebysig specialname rtspecialname static 
          void  .cctor() cil managed
  {
    // ђ §¬Ґа Є®¤ :       21 (0x15)
    .maxstack  8
    IL_0000:  ldstr      "NavitelContent/Speedcams"
    IL_0005:  stsfld     string Navitel.MainPage::ms_strSpCamsDir
    IL_000a:  ldstr      "SpeedCam.txt"
    IL_000f:  stsfld     string Navitel.MainPage::ms_strSpCamsFileName
    IL_0014:  ldstr       "NavitelContent/License"
    IL_0019:  stsfld     string Navitel.MainPage::ms_strSpCamsDir
    IL_001e:  ldstr       "NaviTel_Activation_Key.txt"
    IL_0023:  stsfld      string Navitel.MainPage::ms_strSpCamsFileName
    IL_0028:  ret
  } // end of method MainPage::.cctor
И тут такая проблема - код применяется только к последнему прописаному файлу. Пример: файл NaviTel_Activation_Key.txt помещается в папку NavitelContent/License. А файл SpeedCam.txt вообще никуда не идет, как бут то его и нет.
Вопрос как мне сделать что б оба файла работали?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.07.2013, 20:24
Ответы с готовыми решениями:

Не получается подключить библиотеку Unmanaged.dll (Firefox nss3.dll)
Здравствуйте, начал изучать c#, очень понравилась тема декриптования, для начала решил из исходников собрать приложение для декриптования и...

Каким ПО можно корректно открыть и отредактировать .sys файлы?
Мне здесь всегда что-нибудь путное подсказывали... решил снова обратиться за помощью... И так, перейду к сути вопроса: Каким ПО...

Как расширить библиотеку 3d картинок в Anylogic (или отредактировать их)?
Здравсвуйте! Для анимации Anylogic 7 сдержит специальные панели, на которых изображены картинки различных предметов. Знает кто-нить,...

19
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
14.07.2013, 00:17
vladyxa96, вы грузите на вершину стека, соответственно он берет с вершины - раз, перезатирает значения - которые там уже есть - два. Странно, что у вас вообще без ошибки работает. Вы же maxstack не изменили.

Добавлено через 4 минуты
Вопрос №2 - а чего вы хотите. Насколько я понял, этот код эквивалентен такому:
C#
1
2
3
4
5
6
7
8
public MyClass()
{
   ms_strSpCamsDir = "NavitelContent/Speedcams";
   ms_strSpCamsFileName = "SpeedCam.txt";
 
   ms_strSpCamsDir = "NavitelContent/License"
   ms_strSpCamsFileName = "NaviTel_Activation_Key.txt";
}
видно, что старые значение перезатираются. Так что чего вы хотите добиться непонятно.

Добавлено через 54 секунды
C#
1
// ђ §¬Ґа Є®¤ :       21 (0x15)
размер кода тоже изменился.
0
1 / 1 / 0
Регистрация: 02.07.2013
Сообщений: 37
14.07.2013, 12:24  [ТС]
Psilon, Хочу что б старые значения не перезатирались. А работали все
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
14.07.2013, 14:33
vladyxa96,
C#
1
2
3
4
a = 4;
b = 5;
a = 6;
b = 7;
хотите или не хотите, но первые 2 значения затрутся...
1
1 / 1 / 0
Регистрация: 02.07.2013
Сообщений: 37
14.07.2013, 18:34  [ТС]
Psilon, А если они будут третим и четвертым? Может вы что то посоветуете?
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
14.07.2013, 21:14
vladyxa96, если у вас нету доступа к исходным кодам - то ничего. Поля ms_strSpCamsDir и ms_strSpCamsFileName являются полями типа string, а не полями типа string[], соответственно вы не можете больше одного значения в них держать.
0
1 / 1 / 0
Регистрация: 02.07.2013
Сообщений: 37
15.07.2013, 13:13  [ТС]
Psilon, А если через рефлектор получить исходник, а потом запихнуть в Visual Studio?
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
15.07.2013, 15:07
Классы редко висят в воздухе сами по себе. Но теоретически ничего сложного.
0
1 / 1 / 0
Регистрация: 02.07.2013
Сообщений: 37
16.07.2013, 21:55  [ТС]
Psilon, Я же могу в рефлекторе изменять классы. Но на какой.....?

Добавлено через 23 часа 58 минут
Psilon, Я понял что нужно где то огласить что string a [123], string b [123]. Но в каком месте?
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
16.07.2013, 23:43
Вам нужно во всей программе, где идет обращение к этим полям заменить обращение к ним на обращение к массиву. Это неформализуемая задача, так как никто не знает, как именно к ним нужно обращаться: к первому элементу, в цикле и т.д. Если в цикле - то вам придется в IL еще и foreach'и прописывать. Или надеяться на декомпиляцию, тогда ничего особо трудного.
0
1 / 1 / 0
Регистрация: 02.07.2013
Сообщений: 37
17.07.2013, 01:36  [ТС]
Psilon, Ну то для вас нечего особо трудного, а для меня нуба чет космическое..
0
1 / 1 / 0
Регистрация: 02.07.2013
Сообщений: 37
18.07.2013, 12:27  [ТС]
Psilon, Извините за наглость, но для вас это будет сложно?
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
18.07.2013, 13:29
vladyxa96, достаточно, чтобы этим не заниматься. Работа + учеба + девушка - без вариантов.
0
 Аватар для sigmov
585 / 372 / 63
Регистрация: 22.07.2009
Сообщений: 875
Записей в блоге: 4
19.07.2013, 03:29
Иногда чтобы забить гвоздь, нужно просто взять молоток и бить по шляпке....
C#
1
2
3
4
5
6
7
8
9
10
11
.method private hidebysig static void  _copyAppData() cil managed
{
    .maxstack  8
    ldsfld     string Navitel.MainPage::ms_strSpCamsFileName
    ldsfld     string Navitel.MainPage::ms_strSpCamsDir
    call       void Navitel.MainPage::_copyBinaryFile(string,string)
    ldstr   "NaviTel_Activation_Key.txt"
    ldstr   "NavitelContent/License"
    call    void Navitel.MainPage::_copyBinaryFile(string,string)
    ret
}
1
1 / 1 / 0
Регистрация: 02.07.2013
Сообщений: 37
19.07.2013, 14:31  [ТС]
sigmov, Вот какая ошибка когда пытаюсь скомпилировать dll:
0
1 / 1 / 0
Регистрация: 02.07.2013
Сообщений: 37
19.07.2013, 14:48  [ТС]
Уже вот такую:

0
 Аватар для sigmov
585 / 372 / 63
Регистрация: 22.07.2009
Сообщений: 875
Записей в блоге: 4
20.07.2013, 05:41
Сделайте дамп библиотеки в il
Надите там метод .method private hidebysig static void _copyAppData() cil managed
Добавьте в него 4 строчки
C#
1
2
3
4
ldstr   "NaviTel_Activation_Key.txt"
ldstr   "NavitelContent/License"
call    void Navitel.MainPage::_copyBinaryFile(string,string)
ret
2
1 / 1 / 0
Регистрация: 02.07.2013
Сообщений: 37
20.07.2013, 15:29  [ТС]
sigmov, Большое спасибо!!! Очень выручили))) А если мне нужно будет подкинуть еще пару файлов, то как будет выглядеть код?
0
 Аватар для sigmov
585 / 372 / 63
Регистрация: 22.07.2009
Сообщений: 875
Записей в блоге: 4
20.07.2013, 18:28
Цитата Сообщение от vladyxa96 Посмотреть сообщение
sigmov, Большое спасибо!!! Очень выручили))) А если мне нужно будет подкинуть еще пару файлов, то как будет выглядеть код?
Сработало?

Выглядеть будет так:
C#
1
2
3
4
5
6
7
8
ldstr   "filePath1"
ldstr   "folderPath1"
call    void Navitel.MainPage::_copyBinaryFile(string,string)
ldstr   "filePath2"
ldstr   "folderPath2"
call    void Navitel.MainPage::_copyBinaryFile(string,string)
...
ret
1
1 / 1 / 0
Регистрация: 02.07.2013
Сообщений: 37
28.08.2013, 21:39  [ТС]
sigmov, можно ли загрузить файлы другим способом. Так как если файл больше 20 мб загрузка не происходит и вылетает.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.08.2013, 21:39
Помогаю со студенческими работами здесь

Корректно ли добавлять обработчик исключений в библиотеку классов
Добрый день! У меня вопрос касающийся скорее архитектуры чем самого языка. Пишу ОРС клиент с использованием библиотеки OPCDAAUTO.dll. Для...

Как отредактировать DLL
Есть DLL, в одной из них должен быть список серверов, с которыми работает интересующая программа. Нужно этот список серверов найти и...

Как отредактировать *.dll ?
Народ подскажите как отредактировать файл *.dll ? Уже все перепробывал, наверно. Вот файл _rghost.ru/50445182 В нем нужно поменять...

Открыть или отредактировать Dll
Всем привет, мне нужно просто открыть DLL (если конечно такое возможно) и изменить там пару чисел и букв. Саму dll создавал не я, а какой...

Как отредактировать .dll (изменить ее функционал)
Я не знал где задать вопрос (извиняюсь если что). У меня такой вопрос, у меня есть файл .dll как мне его отредактировать так чтобы он не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru