Форум программистов, компьютерный форум, киберфорум
Java для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 18.04.2019
Сообщений: 80

Прочитать DLL

24.06.2022, 16:08. Показов 1328. Ответов 13
Метки dll (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток, захотел исправить рутинную задачу, при изменение dll перед запуском программы.
Как я это делаю обычно: открываю dll при помощи notepad++ нахожу нужный мне параметр и меняю.
Захотел автоматизировать, но проблема в том, что java выводит содержимое dll не такое как я вижу при открытие notepad.
Хотя насколько я помню, стандартная кодировка java - UTF-8 и в notepad у меня стоит такая же.
Сама программа
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
class dllChanger{
 
    public static void main(String[] args) throws IOException {
        File file = new File("............\\client.dll");
        FileReader fileReader = new FileReader(file);
        BufferedReader bf = new BufferedReader(fileReader);
        while(bf.ready()){
            System.out.println(bf.readLine());
        }
        bf.close();
        fileReader.close();
    }
}
первые символы через нотепад
MZ
первые символы через java
P
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.06.2022, 16:08
Ответы с готовыми решениями:

Java.lang.UnsatisfiedLinkError: xxxx.dll: Can't load IA 32-bit .dll on a AMD 64-bit platform
При работе с субд sybase iq необходима библиотека jconn4 и некая dbjdbc12.dll. Так вот почему-то оригинальный sybase клиент, написанный на...

Не могу прочитать Ресурс (Dll)
Код Dll: MyDll.cpp #include "stdafx.h" #include"MyDll.h" TCHAR* My_String; Код dllmain.cpp:

Найти участок памяти где содержится dll и прочитать данные которые хранятся в определенных адресах
Подскажите у меня есть процесс но в нем еще есть подгружаемые dll мне нужно в процессе найти эту участок памяти где содержится dll и...

13
 Аватар для vvm28
771 / 539 / 67
Регистрация: 22.12.2013
Сообщений: 2,498
Записей в блоге: 26
24.06.2022, 20:10
Для чтения DLL этого не достаточно.

Вы можете использовать decompiler
например от jetbrains:
https://www.jetbrains.com/decompiler/

или Ildasm - MSIL Disassembler поставляется в комплекте с .Net Framework SDK Tools.

ILSpy is the open-source .NET assembly browser and decompiler.
https://github.com/icsharpcode/ILSpy
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
25.06.2022, 02:45
vvm28, достаточно, если знаешь, что менять, просто читать байтики надо а не строки
0
 Аватар для vvm28
771 / 539 / 67
Регистрация: 22.12.2013
Сообщений: 2,498
Записей в блоге: 26
25.06.2022, 09:39
swiftik, Как я понимаю у вас проблема в установке правильной кодировки(UTF-8)?

Возможные решения:

установить
Bash
1
-Dfile.encoding=UTF-8

Java
1
2
3
// Посмотреть установленные параметры:
System.out.println(String.format("file.encoding: %s", System.getProperty("file.encoding")));
System.out.println(String.format("defaultCharset: %s", Charset.defaultCharset().name()));


Java
1
2
// использование UTF_8 в строке
String str = new String(Files.readAllBytes(Paths.get("file")), StandardCharsets.UTF_8);
Java
1
2
 // Указать для чтения файла в формате UTF-8
        BufferedReader br = new BufferedReader(new InputStreamReader(in, "UTF-8"));
Добавлено через 30 минут
PS.

Переменная среды пользователя для windows

имя переменной:
Bash
1
JAVA_TOOL_OPTIONS
Значение переменной:
Bash
1
Dfile.encoding="UTF-8"
0
0 / 0 / 0
Регистрация: 18.04.2019
Сообщений: 80
25.06.2022, 16:16  [ТС]
Цитата Сообщение от xoraxax Посмотреть сообщение
vvm28, достаточно, если знаешь, что менять, просто читать байтики надо а не строки
Я правильно понял, что поток BufferReader я должен заменить потоком который читает байты? Например ByteArrayInputStream ?
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38193 / 21126 / 4309
Регистрация: 12.02.2012
Сообщений: 34,732
Записей в блоге: 14
25.06.2022, 17:13
Цитата Сообщение от swiftik Посмотреть сообщение
Как я это делаю обычно: открываю dll при помощи notepad++ нахожу нужный мне параметр и меняю.
- notepad-ом корректируешь двоичный код???
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
25.06.2022, 17:48
Catstail, только хардкор!
0
 Аватар для vvm28
771 / 539 / 67
Регистрация: 22.12.2013
Сообщений: 2,498
Записей в блоге: 26
25.06.2022, 17:49
Цитата Сообщение от swiftik Посмотреть сообщение
что поток BufferReader
BufferedReader - это класс, а не поток

Class BufferedReader

Class ByteArrayInputStream
0
0 / 0 / 0
Регистрация: 18.04.2019
Сообщений: 80
25.06.2022, 20:08  [ТС]
Цитата Сообщение от Catstail Посмотреть сообщение
- notepad-ом корректируешь двоичный код???
https://www.cyberforum.ru/atta... 1656176858
одни циферки заменяю другими, а вы можете это называть как вам удобно
Миниатюры
Прочитать DLL  
0
0 / 0 / 0
Регистрация: 18.04.2019
Сообщений: 80
25.06.2022, 20:08  [ТС]
Цитата Сообщение от vvm28 Посмотреть сообщение
BufferedReader - это класс, а не поток
согласен. Но я в правильном направлении мыслю?
0
226 / 184 / 80
Регистрация: 13.04.2014
Сообщений: 694
26.06.2022, 05:39
swiftik

Алгоритм примерно такой:

1. Сделай копию dll, в копии отредактируй нужные тебе цифры через notepad как ты делал всегда, сохрани. В итоге у тебя есть два файла original.dll и modified.dll

2. Потом через какую-нибудь утилиту сделай diff этих двух бинарных файлов. Например в linux https://superuser.com/question... s-in-linux

3. Теперь ты знаешь смещение и количество байт, которые нужно изменить

4. После нужно прочитать dll файл как массив байт, и заменить одни байты на другие (эту информацию ты уже получил в предыдущем пункте)
1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38193 / 21126 / 4309
Регистрация: 12.02.2012
Сообщений: 34,732
Записей в блоге: 14
26.06.2022, 05:54
swiftik, двоичные данные обычно корректируют шестнадцатеричными редакторами. Их масса. Например вот этот - редактор онлайн. Или моя поделка.
А редактировать двоичные данные ноутпадом небезопасно - однажды он добавит туда что-либо (типа перевода строки) и dll будет безнадежно испорчена.
0
Нарушающий
417 / 305 / 46
Регистрация: 13.04.2022
Сообщений: 1,759
26.06.2022, 05:54
Странно что контрольная сумма в DLL не ловит изменения от руки.
Когда я правил MZ и PE файлы, приходилось CRC сумму тоже править
0
0 / 0 / 0
Регистрация: 18.04.2019
Сообщений: 80
26.06.2022, 09:47  [ТС]
Цитата Сообщение от Catstail Посмотреть сообщение
безнадежно испорчена
при даже самом маленьком обновлении программы, dll обновляется (ну или возвращается в исходное состояние), поэтому я не боюсь. Но за редактор спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.06.2022, 09:47
Помогаю со студенческими работами здесь

Ошибка об отсутствии MSVCP140D.dll, ucrtbased.dll, CONCRT140D.dll, VCRUNTIME140D.dll
Добрый день, товарищи. Возникла проблема. Делаю программу с использованием openCV 3.1 на Visual Studio 2013. При компиляции выдает ошибку...

Кто может поделиться файлами ogg.dll, vorbis.dll и vorbisfile.dll - 32-х и 64-битными версиями?
Движок перевожу на платформу Win64 и нужно, чтобы разрядность ЕХЕ и DLL совпадали, а в интернете искал 64-битные версии ogg.dll, vorbis.dll...

Затупил, скажите где взять libmysqld.dll, libmysqld50.dll, libmysqld51.dll
Вечер добрый, ставлю ZEOS на Delphi 7, и для нормальной работы нужны файлы libmysqld.dll, libmysqld50.dll, libmysqld51.dll. Но я нигде...

Прочитать файл в обратном порядке т.е. встать в конец файла и прочитать до начальной позиции
подскажите пожалуйста как можно прочитать файл в обратном порядке т.е. стать в конец файла и прочитать до начальной позиции?

WinAPI находится в windows.h или в DLL (kernel32.dll,user32.dll и т. д)?
Объясните пожалуйста, для чего нужен заголовочный файл windows.h и какое отношение он имеет к DLL (kernel32.dll,user32.dll и т. д). В каком...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
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 и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru