Посл.ответ |
Сообщение |
Ранг: 70.5 (постоянный) Активность: 0.03↘0 Статус: Участник
|
Создано: 05 октября 2005 05:11 · Личное сообщение · #1
Прошу не закрывать тему сразу а отнестись с пониманием.
Поиск есессно юзал, но либо неправильно формулирую, либо ... вобщем ненащёл ничего.
Первый раз пытаюсь пропатчить dll в памяти ( точнее пишу трейнер к игре ) а она есессно грузиться по разным адресам. Я знаю смещение и байтики которые нужно патчить, но немогу сообразить как в трейнере вычислять адрес загрузки. Пишу на масме.
З.Ы. буду признателен хотябы если ткнёте пальцем в нужную статью.
| Сообщение посчитали полезным: |
|
Ранг: 384.1 (мудрец) Активность: 0.25↘0 Статус: Участник www.int3.net
|
Создано: 05 октября 2005 05:20 · Личное сообщение · #2
6aHguT
Ты грузишь длл АПИ: LoadLibraryA
после получаешь из экспорта адрес функции: GetProcAddress
----- Подписи - ЗЛО! Нужно убирать! | Сообщение посчитали полезным: |
Ранг: 70.5 (постоянный) Активность: 0.03↘0 Статус: Участник
|
Создано: 05 октября 2005 05:22 · Личное сообщение · #3
nice
Не нето .... игра юзает эту длл, притом вариан патча на диске отпадает, необходимо сделать это в памяти.
| Сообщение посчитали полезным: |
Ранг: 51.9 (постоянный) Активность: 0.03↘0 Статус: Участник
|
Создано: 05 октября 2005 05:27 · Личное сообщение · #4
Ещё раз. Так как ДЛЛ загружена в память, то вызываешь GetModuleHandle. Ты получаешь базовый Addr. Дальше вычисляешь RVA. Для примера: адрес в файле DLL виртульний 0x1000012, её Base 0x1000000, ты получил в памяти 0x2000000.
(0x1000012 - 0x1000000) + 0x2000000 = 0x2000012.
| Сообщение посчитали полезным: |
Ранг: 62.9 (постоянный) Активность: 0.02↘0 Статус: Участник
|
Создано: 05 октября 2005 05:29 · Личное сообщение · #5
Дык а чем LoadLibrary и GetModuleHandle не устраивают? Или ты в другом адресном пространстве?
| Сообщение посчитали полезным: |
Ранг: 51.9 (постоянный) Активность: 0.03↘0 Статус: Участник
|
Создано: 05 октября 2005 05:36 · Личное сообщение · #6
Как правильно заметил ASMax если твой вызов за границами аддр.простанства процеса, то воспользуйся Tool Help Functions. Примеры найдёшь в MSDN. С помощью этих функций ты можешь увидеть модули загруженые в нужный процес.
P.S. Гурманов просьба не беспокоить замечаниями типа ZwQueryProcessInformation ;)
| Сообщение посчитали полезным: |
Ранг: 420.3 (мудрец) Активность: 0.24↘0 Статус: Участник
|
Создано: 05 октября 2005 06:01 · Личное сообщение · #7
6aHguT
Мне кажется, что тебе может помочь это wasm.ru/article.php?article=srp_sintez
----- Сколько ни наталкивали на мысль – все равно сумел увернуться | Сообщение посчитали полезным: |
Ранг: 51.9 (постоянный) Активность: 0.03↘0 Статус: Участник
|
Создано: 05 октября 2005 06:27 · Поправил: Barakuda · Личное сообщение · #8
[Не увидел. Речь об masm.]
| Сообщение посчитали полезным: |
Ранг: 70.5 (постоянный) Активность: 0.03↘0 Статус: Участник
|
Создано: 05 октября 2005 06:29 · Личное сообщение · #9
Я не могу вызвать LoadLibraryA т.к. дллка используеться игрой.
| Сообщение посчитали полезным: |
Ранг: 62.9 (постоянный) Активность: 0.02↘0 Статус: Участник
|
Создано: 05 октября 2005 08:04 · Личное сообщение · #10
6aHguT
Попробуй сформулировать мысль более развернуто.
| Сообщение посчитали полезным: |
Ранг: 21.2 (новичок) Активность: 0.01↘0 Статус: Участник
|
Создано: 05 октября 2005 10:13 · Личное сообщение · #11
Как я понял, тебе нужно залезть в уже загруженную длл другой проги.
Тут тебе помогут ф-ции Tool Help (tlhelp.h), описанные в MSDN
Тут нужны ф-ции получения списка модулей, загруженных в адресное пространство процесса.
| Сообщение посчитали полезным: |
Ранг: 70.5 (постоянный) Активность: 0.03↘0 Статус: Участник
|
Создано: 06 октября 2005 00:21 · Поправил: 6aHguT · Личное сообщение · #12
kkcos пишет:
Как я понял, тебе нужно залезть в уже загруженную длл другой проги.
Точно
kkcos пишет:
Tool Help (tlhelp.h),
вот это никогда не юзал, буду пробовать, мож кто примерчик использования подкинет ? Но всёравно спабо, подсказали в какую сторону думать ...
Вобщем если кто ещё непонял, что мне нужно, то ... мне нужно узнать адрес куда прога загрузила длл и не просто узнать единовремено, а вичеслять это програмно в трейнере.
| Сообщение посчитали полезным: |
Ранг: 54.9 (постоянный) Активность: 0.02↘0 Статус: Участник
|
Создано: 06 октября 2005 01:03 · Личное сообщение · #13
А уже раскопал какими средствами грузиться dll она вообще в списке светиться? Я к чему dll можно и своими средствами рагрузить.
| Сообщение посчитали полезным: |
Ранг: 12.0 (новичок) Активность: 0.01↘0 Статус: Участник
|
Создано: 06 октября 2005 12:43 · Поправил: scf · Личное сообщение · #14
CreateToolhelp32Snapshot
Пляши от неё. Дальше - см. MSDN
Если нет MSDN, см. msdn.microsoft.com
Если не знаешь английский, то ты не программист... займись, например, вышиванием крестиком
| Сообщение посчитали полезным: |