![]() |
eXeL@B —› Вопросы новичков —› как внести модификацию в асм код проги? |
Посл.ответ | Сообщение |
|
Создано: 26 июня 2009 20:08 · Личное сообщение · #1 может подскажет хто... короче есть функция в проге. для меня ее содержимое бесполезно, и хочу как то заменить на свое содержимое. в эту функцию передается указатель на память и размерность SX, SY надо сохранить в файл данные на С++ без проблем - а как нить можно в ольке это сделать красиво? хз. можно конечно на асме наваять что то но боюсь сложности будут с вызовом системных функций ![]() |
|
Создано: 26 июня 2009 20:19 · Поправил: FrenFolio · Личное сообщение · #2 progman пишет: может подскажет хто... короче есть функция в проге. для меня ее содержимое бесполезно, и хочу как то заменить на свое содержимое. в эту функцию передается указатель на память и размерность SX, SY надо сохранить в файл данные на С++ без проблем - а как нить можно в ольке это сделать красиво? Делай переход на свободное место в коде проги, там пиши свой код, и возвращайся обратно, на следующую инструкцию. Естественно, нужно будет позаботиться о восстановлении регистров и затертом коде, если таковой будет иметься. Можно не в код переход делать, а в PE-заголовок. По сути это инлайн патч получается. progman пишет: FrenFolio ну тоесть классически сделать pusha / popa pushad / popad и тупо забыть о регистрах? Ну в общем, да. Желательно еще сохранить регистр флагов. То есть типа такого Code:
----- Программист SkyNet ![]() |
|
Создано: 26 июня 2009 20:29 · Поправил: progman · Личное сообщение · #3 |
|
Создано: 26 июня 2009 20:56 · Личное сообщение · #4 |
|
Создано: 26 июня 2009 21:06 · Личное сообщение · #5 |
|
Создано: 26 июня 2009 21:25 · Поправил: progman · Личное сообщение · #6 |
|
Создано: 26 июня 2009 21:26 · Личное сообщение · #7 |
|
Создано: 26 июня 2009 21:27 · Личное сообщение · #8 |
|
Создано: 26 июня 2009 21:37 · Личное сообщение · #9 progman > в эту функцию передается указатель на память и размерность SX, SY Как передаётся, откуда, может через регистры, может через память, может прямо в код данные забивает ![]() Соответственно ответ - создать файл, промапить себе в процесс, скопировать туда передаваемые данные, сохранить образ и освободить хэндл. ![]() |
|
Создано: 26 июня 2009 22:52 · Поправил: progman · Личное сообщение · #10 замутил dll проверил на своем ехе - работает. вставляю ее загрузчик в код "жертвы" Code:
в ольке смотрю в еах адрес функции в моей dll - export.export для удобства я либу export назвал и функцию вызывемую так же вот работающий C++ код: Code:
кто подскажет - как вызвать правильно функцию после GetProcAddress в асме ? ЗЫ DllMain тоже вызывается ОК ![]() |
|
Создано: 26 июня 2009 23:04 · Личное сообщение · #11 |
|
Создано: 27 июня 2009 08:43 · Личное сообщение · #12 |
![]() |
eXeL@B —› Вопросы новичков —› как внести модификацию в асм код проги? |
Эта тема закрыта. Ответы больше не принимаются. |