Сейчас на форуме: Rio, tyns777, zombi-vadim (+7 невидимых) |
eXeL@B —› Программирование —› Лoадер для .NET |
Посл.ответ | Сообщение |
|
Создано: 09 сентября 2014 13:57 · Личное сообщение · #1 Привет всем! Вообщем появился вопрос. Нужно в памяти попатчить dll'ку, она написана на .net Раньше обходился сканом по сигнатуре (если что это mono), но в неё добавил хрен знает сколько однотипных методов и способ с сигнатурой отваливается. Суть вопроса такова - как можно выйти на адрес метода в памяти? (всю инфу о нём я имею). |
|
Создано: 09 сентября 2014 14:27 · Поправил: ZaZa · Личное сообщение · #2 |
|
Создано: 09 сентября 2014 15:41 · Личное сообщение · #3 |
|
Создано: 10 сентября 2014 06:45 · Поправил: ZaZa · Личное сообщение · #4 vovanre пишет: Смещение относительно чего? Относительно начала файла... А получить метод с помощью Пускай Microsoft сам все делает... Ну или Mono.Cecil... ----- One death is a tragedy, one million is a statistic. |
|
Создано: 13 сентября 2014 18:00 · Поправил: Nimnul · Личное сообщение · #5 ZaZa То что ты советуешь относится к PE адресам исходного IL. Эта методика не сработает. После того как JIT прошелся по методу, изменения исходного IL не имеет смысла. vovanre Я полагаю ты патчишь в памяти то что выдает JIT т.е. asm если это так то читани Есть и другой способ, который не потребует от тебя переделывать код. Просто вставь в нужный тебе метод свою сигнатуру и не парься. Например можно вставить 13 nop'ов. Для поиска прибавь сигнатурe байты скомпилированного метода и будет у тебя unique sign даже при условии что одинаковых методов несколько. Добавлено спустя 11 минут Таже статья на русском http://www.cyberguru.ru/microsoft-net/net-framework/clr-method-injection.html?showall=1 ----- have a nice day |
|
Создано: 14 сентября 2014 00:21 · Личное сообщение · #6 Nimnul пишет: Я полагаю ты патчишь в памяти то что выдает JIT Нет, я прямо байт код в памяти патчу. Я говорю о моно,там такое прокатывает. Вообщем пока как временный костыль я сделал хук на mono_runtime_invoke и перенаправляю на аналогичную функцию в моей dll'ке (перед эти я её загружаю), конечно тут возможности просто нереальны, но больно часто крашит когда хукаешь. Причём я не могу понять почему, ошибки летят из недр kernel32. Вообщем сейчас попробую через VEH хукнуть. |
|
Создано: 14 сентября 2014 00:31 · Поправил: Nimnul · Личное сообщение · #7 vovanre Я не понял, проблема в том что ошибки летят или в том, что ты адрес найти не можешь? Если тебе нужен IL тогда делай то что говорит ZAZA правда я не уверен что это смещение относительно начала файла, возможно это смещение относительно начала секции. Секции размещаются в памяти не так как в файле... Добавлено спустя 3 минуты Кстати лоадер ты можешь написать на C# в референс добавь ехе проги, и пока она не используется делай с ней что хочешь. После патча вызывай из exe функцию Main, это будет работать универсально. Добавлено спустя 5 минут А что за прога?, если это не фотошоп кинь куда нить я завтра поковыряю, вспомню старые навыки хоть ----- have a nice day |
eXeL@B —› Программирование —› Лoадер для .NET |