Сейчас на форуме: vsv1, igorcauret, Rio (+5 невидимых) |
![]() |
eXeL@B —› Вопросы новичков —› Замена кода в exe из dll |
Посл.ответ | Сообщение |
|
Создано: 13 ноября 2015 08:10 · Поправил: sidjey · Личное сообщение · #1 Здравствуйте, участники форума! Проделывал эксперименты, по расширению функционала программ, описанные на хабре ![]() |
|
Создано: 13 ноября 2015 08:42 · Поправил: MasterSoft · Личное сообщение · #2 GetModuleHandle(NULL)+RVA? или ты не про это? Added: ты видимо про ASLR говоришь. вычти из этого адреса базу, а потом как я выше написал. ![]() |
|
Создано: 13 ноября 2015 08:47 · Личное сообщение · #3 в IDA если найти команду call и вызываемую функцию, которую надо подменить. Там у строчки есть адрес, по которому я и подменяю (memcpy) на адрес функции из dll. Если адрес той строки фиксированный, то проблем не возникает, но при наличии секции reloc, он меняется (бывает не меняется), это и в IDA тоже видно. Добавлено спустя 55 минут MasterSoft, т.е. нужно найти адрес этого ASLR, вычесть из него базу, и к нему прибавить смещение заменяемой функции? Вот если занулить размер reloc в exe, то у строчки всегда фиксированный адрес, и его я беру и прописываю в memcpy, и дальше как по маслу. Но наверное reloc не просто так в exe прописывают. Добавлено спустя 1 час 37 минут А, все разобрался. Нужно узнать предпочитаемый адрес размещения функции, вычесть из него базовый адрес, и то что получилось сложить с GetModuleHandle(NULL). Спасибо MasterSoft за подсказку! ![]() |
|
Создано: 13 ноября 2015 19:31 · Поправил: dosprog · Личное сообщение · #4 sidjey пишет: Но наверное reloc не просто так в exe прописывают. Но если её нету, то работает и так. Любая сущность стремится в своём развитии к усложнению. Достигнув максимума сложности, она погибает. Типа закон Мерфи. И Микрософт тут не исключение. Им же надо куда-то развиваться.. ![]() В примере адрес 00493D28h должен был задаваться как (GetModuleHandle(0) + 93D28h). Тогда будет работать по-любому. (О чём и написал MasterSoft). ![]() |
![]() |
eXeL@B —› Вопросы новичков —› Замена кода в exe из dll |