Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.119.109.119] |
|
Сообщ.
#1
,
|
|
|
Привет всем,
нужно в уже скомпилированной программе между двумя инструкциями вставить пару других, т.е. надо как-то освободить место для нового кода. Вопрос, есть ли какой-то удобный инструментарий для этого, или придётся всё делать в хекс-редакторе, в контексте опкодов?.. |
Сообщ.
#2
,
|
|
|
Достаточно простой и универсальный инструмент для 32-битного кода - это OllyDbg (отладчик, дизассемблер и редактор в одном флаконе)
|
Сообщ.
#3
,
|
|
|
Hiew - эту прогу Вы не можете не знать!!!
|
Сообщ.
#4
,
|
|
|
Цитата Бублик @ Увы, но человеку надо, чтобы программа сама предложила, как изменить положение, видимо, функции, чтобы его новый, более длинный код, влез. Hiew, такого ж не предлагает!..Hiew - эту прогу Вы не можете не знать!!! Цитата unconnected @ Глядя на ответы выше, можно сказать, что не "всё", но многое придётся делать "руками"... придётся всё делать в хекс-редакторе, в контексте опкодов?.. Добавлено По сути, 1.отыщите после ret'ов небольшое свободное местечко (оно бывает, т.к. компиляторы любят выравнивать начало функций); 2.вставьте в старый код jmp на новое место; 3.в конце своего участка ставьте обратный jmp. Добавлено Если совсем тесно, то воспользуйтем простым, но важным фактом, что в 10 идущих подряд инструкций, с вероятность 0,9 есть неоптимальный участок, допускающий сокращение кода. П.С. вам придётся хорошенько знать Asm, дабы поправить его!.. |