0 / 0 / 0
Регистрация: 04.02.2011
Сообщений: 5
|
|
1 | |
Каким образом заставить программу загружать dll из указанной папки?04.02.2011, 13:00. Показов 7429. Ответов 10
Метки нет (Все метки)
Есть одна программка, которую надо заставить подгружать .dll'ку из другой папки.
Пишу античит к одной игрушке, нужно сделать так, чтобы при запуске, прога первым делом искала .dll в указанной мною папке, а затем уже в текущей директории откуда она запускается и директориях system32, system и т.д Подскажите как это сделать правильно. Это возможно 100%, по крайней мере на Delphi.. Процесс запускаю через CreateProcess();
0
|
04.02.2011, 13:00 | |
Ответы с готовыми решениями:
10
Можно ли каким-то образом заставить WebClient создавать папки для скачиваемых файлов Каким образом лучше загружать данные из текстового файла? Можно ли обойтись при этом только js, не используя php? Возможно ли как-то заставить BIOS, каким то образом определить название проца Как заставить программу загружать картинку рандомно? |
686 / 613 / 43
Регистрация: 13.01.2011
Сообщений: 1,722
|
||||||
04.02.2011, 13:23 | 2 | |||||
Как вариант:
0
|
0 / 0 / 0
Регистрация: 04.02.2011
Сообщений: 5
|
|
04.02.2011, 13:37 [ТС] | 3 |
Чтобы было понятнее:
Прога загружает dll'ку, допустим, "test.dll". Мне нужно чтобы она ее сперва искала в указанной мной директории, а затем уже во всех остальных. вариант с LoadLibrary не подходит, т.к. нет исходников. Добавлено через 6 минут Советовали перехватывать адрес LoadLibrary и заменять на свою функцию. Надеюсь есть решение проще.
0
|
686 / 613 / 43
Регистрация: 13.01.2011
Сообщений: 1,722
|
|
04.02.2011, 13:43 | 4 |
По мне так напрашивается решение помещения dll непосредственно в папку с игрой, и все
Иначе, имхо, вам необходимо перехватить вызов программы. 1. http://www.rsdn.ru -> Статьи -> Базовые сервисы -> Перехват вызовов API 2. Джеффри Рихтер, "Windows для профессионалов", глава 22 Это если я правильно вас понял
0
|
0 / 0 / 0
Регистрация: 04.02.2011
Сообщений: 5
|
|
04.02.2011, 13:57 [ТС] | 5 |
В папке с прогой уже есть такая dll.
Мне же нужно чтобы прога эту "test.dll" грузила не из папки откуда ее запускают, а из любой папки, которую я укажу.
0
|
686 / 613 / 43
Регистрация: 13.01.2011
Сообщений: 1,722
|
|
04.02.2011, 14:07 | 6 |
Я конечно все понимаю, что у вас видение вашего проекта лучше, но все же понятнее было бы называть вещи своими именами, а не просто "прога". Я понимаю вас так: программе-античиту необходимо подключать dll откуда бы то ни было, а она изначально пытается запустить dll из своей папки. Это логично. И я бы пытался решить через, как я уже сказал, перехват вызова программы. Может кто еще что порекомендует.
0
|
0 / 0 / 0
Регистрация: 04.02.2011
Сообщений: 5
|
|
04.02.2011, 14:27 [ТС] | 7 |
Нет не программе античиту нужно подключать. Игра подгружает dll. нашел адрес в .exe файле названия этого dll. Меняю с engine.dll на mygine.dll(в нем происходят проверки различные) в памяти. Далее mygine.dll уже грузит настоящую engine.dll
нужно чтобы этот mygine.dll игра цепляла из директории античита, а не из своей текущей директории. Сейчас подгрузка dll происходит вышеописанным образом. изменить "engine.dll" на более длинную строку, допустим на c:\asd\mygine.dll, не имеется возможным т.к. можно затиреть другие байты. то есть в распоряжении только 10символов. Похоже что придется перехватывать адрес loadlibrary. ищу вашу книгу...
0
|
бжни
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
|
|
04.02.2011, 15:55 | 8 |
как тут уже говорили, у рихтера целая глава этому посвящена
0
|
0 / 0 / 0
Регистрация: 04.02.2011
Сообщений: 5
|
||||||
05.02.2011, 12:17 [ТС] | 9 | |||||
У Рихтера, в 22 главе есть лишь теория о том как внедрить Dll, которая перехватит API функцию в другом процессе с помощью CreateProcess и флага CREATE_SUSPENDED. Никаких примеров. Сказано что возможно, но сложно.
Решение - найдено: с помощью вот этого http://newgre.net/ninjectlib внедряю свою dll в процесс. DLL перехватывает функцию LoadLibraryA и заменяет на мою. В моей идет условие
Добавлено через 4 минуты код для DLL, в которой осуществляется перехват функции можно найти на том же сайте, либо использовать detours и ему подобные. Добавлено через 3 минуты Другие методы внедрения, кроме как через CreateProcess, для перехвата LoadLibrary не будут работать, т.к. процесс уже загрузит нужные ему dll и вы не сможете подменить нужную вам dll на свою.
0
|
Модератор
8950 / 6716 / 921
Регистрация: 14.02.2011
Сообщений: 23,712
|
|
14.02.2011, 01:56 | 10 |
Если я правильно понял то
в одной папке лежит прога и родная dll а не родная в другой папке программа должна обратится к неродной а та уже вызовет родную Но программа конечно же ищет сначала в своей директории 1 порядок просмотра директорий определяется где то в реестре (но там помоему есть ограничения) Можно сделать так 2 Создаем свою dll с именем родной, определяем в ней весь импрорт родной и кладем в папку к проге. а родную переименовываем (или кладем в другое место) и обращаемся к ней уже из своей dll 3 можно попробовать задействовать Хуки С важением Валерий
0
|
ramobili
|
|
05.03.2011, 01:25 | 11 |
А как непосредственно внедрение происходит, через указание PID процесса ?
можно поподробнее |
05.03.2011, 01:25 | |
05.03.2011, 01:25 | |
Помогаю со студенческими работами здесь
11
Каким образом в цикле удалить файлы из папки Можно ли каким-то образом заставить реагировать родительский объект на изменение параметров дочернего Каким образом заставить компонент RichEdit1 перемещать свой Skroll на последнюю запись? Интересно узнать каким образом скрывают файлы и папки? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Блоги программистов | |||||
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален
В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
|
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
|
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели
В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
|
Полезные поделки на Arduino, которые можно сделать самому
raxper 06.01.2025
Arduino как платформа для творчества
Arduino представляет собой удивительную платформу для технического творчества, которая открывает безграничные возможности для создания уникальных проектов. Эта. . .
|
Подборка решений задач на Python
IT_Exp 06.01.2025
Целью данной подборки является предоставление возможности ознакомиться с различными задачами и их решениями на Python, что может быть полезно как для начинающих, так и для опытных программистов.
. . .
|
С чего начать программировать микроконтроллеры
raxper 06.01.2025
Введение в мир микроконтроллеров
Микроконтроллеры стали неотъемлемой частью современного мира, окружая нас повсюду: от простых бытовых приборов до сложных промышленных систем. Эти маленькие. . .
|
Из чего собрать игровой компьютер
inter-admin 06.01.2025
Сборка игрового компьютера требует особого внимания к выбору комплектующих и их совместимости. Правильно собранный игровой ПК не только обеспечивает комфортный геймплей в современных играх, но и. . .
|
Обновление сайта www.historian.by
Reglage 05.01.2025
Обещал подвести итоги 2024 года для сайта. Однако начну с того, что изменилось за неделю. Добавил краткий урок по последовательности действий при анализе вредоносных файлов и значительно улучшил урок. . .
|
Как использовать GraphQL в C# с HotChocolate
Programming 05.01.2025
GraphQL — это современный подход к разработке API, который позволяет клиентам запрашивать только те данные, которые им необходимы. Это делает взаимодействие с API более гибким и эффективным по. . .
|
Модель полного двоичного сумматора с помощью логических операций (python)
AlexSky-coder 04.01.2025
def binSum(x:list, y:list):
s=^y]
p=x and y
for i in range(1,len(x)):
s. append((x^y)^p)
p=(x and y)or(p and (x or y))
return s
x=list()
y=list()
|
Это мы не проходили, это нам не задавали...(асихронный счётчик с управляющим сигналом зад
Hrethgir 04.01.2025
Асинхронный счётчик на сумматорах (шестиразрядный по числу диодов на плате, но наверное разрядов будет больше - восемь или шестнадцать, а диоды на старшие), так как триггеры прошли тестирование и. . .
|
Руководство по созданию бота для Телеграм на Python
IT_Exp 04.01.2025
Боты для Телеграм представляют собой автоматизированные программы, которые выполняют различные задачи, взаимодействуя с пользователями через интерфейс мессенджера. В данной статье мы рассмотрим,. . .
|