| Посл.ответ | 
Сообщение | 
  Ранг: 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
 Если не знаешь английский, то ты не программист... займись, например, вышиванием крестиком   
  | Сообщение посчитали полезным:  |