Сейчас на форуме: user99, _MBK_, ManHunter, Magister Yoda (+8 невидимых)

 eXeL@B —› Основной форум —› Загрузка dll в память.
Посл.ответ Сообщение


Ранг: 70.5 (постоянный)
Активность: 0.030
Статус: Участник

Создано: 05 октября 2005 05:11
· Личное сообщение · #1

Прошу не закрывать тему сразу а отнестись с пониманием.
Поиск есессно юзал, но либо неправильно формулирую, либо ... вобщем ненащёл ничего.
Первый раз пытаюсь пропатчить dll в памяти ( точнее пишу трейнер к игре ) а она есессно грузиться по разным адресам. Я знаю смещение и байтики которые нужно патчить, но немогу сообразить как в трейнере вычислять адрес загрузки. Пишу на масме.
З.Ы. буду признателен хотябы если ткнёте пальцем в нужную статью.



Ранг: 384.1 (мудрец)
Активность: 0.250
Статус: Участник
www.int3.net

Создано: 05 октября 2005 05:20
· Личное сообщение · #2

6aHguT
Ты грузишь длл АПИ: LoadLibraryA
после получаешь из экспорта адрес функции: GetProcAddress

-----
Подписи - ЗЛО! Нужно убирать!





Ранг: 70.5 (постоянный)
Активность: 0.030
Статус: Участник

Создано: 05 октября 2005 05:22
· Личное сообщение · #3

nice
Не нето .... игра юзает эту длл, притом вариан патча на диске отпадает, необходимо сделать это в памяти.



Ранг: 51.9 (постоянный)
Активность: 0.030
Статус: Участник

Создано: 05 октября 2005 05:27
· Личное сообщение · #4

Ещё раз. Так как ДЛЛ загружена в память, то вызываешь GetModuleHandle. Ты получаешь базовый Addr. Дальше вычисляешь RVA. Для примера: адрес в файле DLL виртульний 0x1000012, её Base 0x1000000, ты получил в памяти 0x2000000.
(0x1000012 - 0x1000000) + 0x2000000 = 0x2000012.



Ранг: 62.9 (постоянный)
Активность: 0.020
Статус: Участник

Создано: 05 октября 2005 05:29
· Личное сообщение · #5

Дык а чем LoadLibrary и GetModuleHandle не устраивают? Или ты в другом адресном пространстве?



Ранг: 51.9 (постоянный)
Активность: 0.030
Статус: Участник

Создано: 05 октября 2005 05:36
· Личное сообщение · #6

Как правильно заметил ASMax если твой вызов за границами аддр.простанства процеса, то воспользуйся Tool Help Functions. Примеры найдёшь в MSDN. С помощью этих функций ты можешь увидеть модули загруженые в нужный процес.

P.S. Гурманов просьба не беспокоить замечаниями типа ZwQueryProcessInformation ;)




Ранг: 420.3 (мудрец)
Активность: 0.240
Статус: Участник

Создано: 05 октября 2005 06:01
· Личное сообщение · #7

6aHguT
Мне кажется, что тебе может помочь это wasm.ru/article.php?article=srp_sintez

-----
Сколько ни наталкивали на мысль – все равно сумел увернуться




Ранг: 51.9 (постоянный)
Активность: 0.030
Статус: Участник

Создано: 05 октября 2005 06:27 · Поправил: Barakuda
· Личное сообщение · #8

[Не увидел. Речь об masm.]




Ранг: 70.5 (постоянный)
Активность: 0.030
Статус: Участник

Создано: 05 октября 2005 06:29
· Личное сообщение · #9

Я не могу вызвать LoadLibraryA т.к. дллка используеться игрой.



Ранг: 62.9 (постоянный)
Активность: 0.020
Статус: Участник

Создано: 05 октября 2005 08:04
· Личное сообщение · #10

6aHguT
Попробуй сформулировать мысль более развернуто.



Ранг: 21.2 (новичок)
Активность: 0.010
Статус: Участник

Создано: 05 октября 2005 10:13
· Личное сообщение · #11

Как я понял, тебе нужно залезть в уже загруженную длл другой проги.
Тут тебе помогут ф-ции Tool Help (tlhelp.h), описанные в MSDN
Тут нужны ф-ции получения списка модулей, загруженных в адресное пространство процесса.




Ранг: 70.5 (постоянный)
Активность: 0.030
Статус: Участник

Создано: 06 октября 2005 00:21 · Поправил: 6aHguT
· Личное сообщение · #12

kkcos пишет:
Как я понял, тебе нужно залезть в уже загруженную длл другой проги.

Точно
kkcos пишет:
Tool Help (tlhelp.h),

вот это никогда не юзал, буду пробовать, мож кто примерчик использования подкинет ? Но всёравно спабо, подсказали в какую сторону думать ...

Вобщем если кто ещё непонял, что мне нужно, то ... мне нужно узнать адрес куда прога загрузила длл и не просто узнать единовремено, а вичеслять это програмно в трейнере.



Ранг: 54.9 (постоянный)
Активность: 0.020
Статус: Участник

Создано: 06 октября 2005 01:03
· Личное сообщение · #13

А уже раскопал какими средствами грузиться dll она вообще в списке светиться? Я к чему dll можно и своими средствами рагрузить.



Ранг: 12.0 (новичок)
Активность: 0.010
Статус: Участник

Создано: 06 октября 2005 12:43 · Поправил: scf
· Личное сообщение · #14

CreateToolhelp32Snapshot
Пляши от неё. Дальше - см. MSDN
Если нет MSDN, см. msdn.microsoft.com
Если не знаешь английский, то ты не программист... займись, например, вышиванием крестиком


 eXeL@B —› Основной форум —› Загрузка dll в память.
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати