Сейчас на форуме: asfa (+6 невидимых) |
![]() |
eXeL@B —› Вопросы новичков —› Редактирование DLL игрушки |
Посл.ответ | Сообщение |
|
Создано: 16 апреля 2010 21:52 · Личное сообщение · #1 Делаю мод для одной игрушки. Взялся за редактирование клиентской DLL, но т.к. в этом полный профан, столкнулся с проблемами. Если буксую в очевидном, сразу не пинайте ![]() Code:
Вопрос таков. Хотелось бы впихнуть еще одну такую проверочку для некого "NightVision" (строчка присутствует) Возможно ли это? Я вынес проверку на "SmartgunSet" в конец дллки (секции всмысле, как я понял. там 800h байтов равных 0). Скопировал код, добавил проверку на "NightVision", соединил джампами. Но новая строчка в коде.. push 102A9730h ; "NightVision" когда начинаю отладку то этот всегда оффсет остается постоянным, а остальные оффсеты строчек меняются в зависимости от начального адреса (как я понял так и должно быть). Поэтому я загружаю далеко не "NightVision"... ![]() |
|
Создано: 16 апреля 2010 23:49 · Поправил: NikolayD · Личное сообщение · #2 |
|
Создано: 17 апреля 2010 09:23 · Личное сообщение · #3 |
|
Создано: 17 апреля 2010 13:39 · Личное сообщение · #4 |
|
Создано: 17 апреля 2010 14:23 · Личное сообщение · #5 |
|
Создано: 18 апреля 2010 02:08 · Личное сообщение · #6 codevx В ассемблерном коде, есть такое понятие, как абсолютные и относительные адреса комманда JMP SHORT - относительный, так как адрес на который будет произведён прыжок считается по количеству байт, начиная со второго байта комманды. Но комманда PUSH 101000 будет являться асолютной, и при изменении адреса образа, эта комманда будет указывать в "левый" участок памяти. Для этого были сделаны "релокации". Релокации представляют собой таблицу RVA смещений, по которым находятся базозависимые константы(адреса), которые надо править в случае необходимости. Этим занимается системный загрузчик. Следует помнить, что даже если удалить базозависиную ассемблерную комманду(например, вписать комманду NOP), и если образ будет пересчитан на другой, на месте этой ассемблетрой комманды будет произведёт пересчёт и комманда NOP будет искажена, что может вызвать ошибку. Поэтому не стоит забывать про это при работе с библиотеками ----- Research For Food ![]() |
![]() |
eXeL@B —› Вопросы новичков —› Редактирование DLL игрушки |