Сейчас на форуме: Rio, tyns777, zombi-vadim (+7 невидимых)

 eXeL@B —› Программирование —› Инжект .Net кода
Посл.ответ Сообщение

Ранг: 92.1 (постоянный), 83thx
Активность: 0.110
Статус: Участник

Создано: 28 мая 2014 16:44
· Личное сообщение · #1

Привет всем!

Появился вопрос. Имеется .net приложение, надобно внедрить код в него.

Нужно это для доступа к переменным, массивам, да и что бы код ран тайм изменить.

Задача заставить фремворк выполнить мой код.

Это реализуемо? Если да, то как?


я понимаю что значения можно из без этого изменить и что я могу сам код программы изменить.




Ранг: 622.6 (!), 521thx
Активность: 0.330.89
Статус: Участник
_Вечный_Студент_

Создано: 28 мая 2014 17:39
· Личное сообщение · #2

vovanre пишет:
Это реализуемо?

http://www.codeproject.com/Articles/463508/NET-CLR-Injection-Modify-IL-Code-during-Run-time

-----
Give me a HANDLE and I will move the Earth.





Ранг: 748.2 (! !), 390thx
Активность: 0.370
Статус: Участник
bytecode!

Создано: 28 мая 2014 17:41
· Личное сообщение · #3

Да, реализуемо, множеством способов - от статического инжекта своего кода в IL сборки, до рантайм инжекта в JITнутый код.

В гугле масса материалов на тему, изучайте хоть до посинения, а затем задавайте вопросы по существу, если они останутся, либо направляйтесь сразу в --> поиск специалистов <--.

-----
Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску.




Ранг: 92.1 (постоянный), 83thx
Активность: 0.110
Статус: Участник

Создано: 28 мая 2014 17:42 · Поправил: vovanre
· Личное сообщение · #4

plutos пишет:
http://www.codeproject.com/Articles/463508/NET-CLR-Injection-Modify-IL-Code-during-Run-time


Спасибо, видел (на хабре перевели). Но я забыл уточнить, dll не должна быть на .Net. Причина в защите приложения.

--
Чуть точнее, внедрить функцию и выполнить её.




Ранг: 748.2 (! !), 390thx
Активность: 0.370
Статус: Участник
bytecode!

Создано: 04 июня 2014 01:34
· Личное сообщение · #5

Dr0p
В сети полно способов инжекта в дотнет, как нативных, так и managed либ. Особые извращенцы ещё практикуют инжект в отJITтенный код. Сам инжектил managed в managed (разными способами, в том числе через нативный CLR загрузчик) - работало нормально.
В общем, дайте человку разорбраться и сделать выводы, сдюжит он или нет, благо материалов для изучения, ровно как и примеров в гуглах - пруд пруди + возможно тема для него уже вообще не актуальна.

-----
Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску.




Ранг: 0.0 (гость)
Активность: 0.250
Статус: Участник

Создано: 04 июня 2014 01:45
· Личное сообщение · #6

Dr0p пишет: Мб потестим ?

Запросто, а что бы не было скучно, то я даю результат и ты сваливаешь или же не даю и сваливаю я.
Ты на столько зеленый, что даже не знаешь, что так снимают многие бяки и не только в dot net.
Jit поиметь это на раз два, тем более есть даже готовый код от ms, достаточно полистать блог или github, тут даже писать особо не ничего не нужно, готового кода тонны.
4kusNick все ответил правильно и он в отличии от тебя шарит в этой теме.
Например через inject снимаю кодеры с того же php ( например ioncube из недавней темы, готовый соснул ), java, lua, .Net.




Ранг: 324.3 (мудрец), 222thx
Активность: 0.480.37
Статус: Участник

Создано: 04 июня 2014 02:10
· Личное сообщение · #7

Dr0p пишет:
Мб потестим ?

На, тесть, в аттаче




c075_04.06.2014_EXELAB.rU.tgz - NetInject.rar

-----
IZ.RU





Ранг: 72.3 (постоянный), 133thx
Активность: 0.380
Статус: Участник

Создано: 04 июня 2014 08:37
· Личное сообщение · #8

Тоесть я прикручиваю эту дллку к загрузчику и он её из памяти прогрузит. Посмотрим. Как загружать, LoadLibrary() ?




Ранг: 324.3 (мудрец), 222thx
Активность: 0.480.37
Статус: Участник

Создано: 04 июня 2014 09:34 · Поправил: DenCoder
· Личное сообщение · #9

Можно и своим заугрузчиком + LoadLibrary, но вообще-то загрузчик там уже есть...

Dr0p пишет:
дллку к загрузчику и он её из памяти прогрузит

Из памяти он её не грузит, к загрузчику цеплять не надо. ЗагрузчикИнжектор (в запущенный процесс) там уже есть...

Ё-маё, меня убивает вообще Net-процесс - это обычный процесс, в нём вызываются те же api-функции, и инжектится точно так же, как и обычный процесс. И отлаживать можно как и обычный процесс обычным дебаггером, но только в этом случае будет отлаживаться виртуальная машина, что изврат, конечно. Что отличает net-приложение от твоих на асме - в нете тонны эксепшенов, но это способ передачи информации, и может в том числе использоваться для быстрого выхода из многовложенных рекурсий/циклов.

Ну не пойму, где ты там проблему разглядел? ))

-----
IZ.RU





Ранг: 72.3 (постоянный), 133thx
Активность: 0.380
Статус: Участник

Создано: 04 июня 2014 14:02
· Личное сообщение · #10

DenCoder

В аттаче не net.




Ранг: 324.3 (мудрец), 222thx
Активность: 0.480.37
Статус: Участник

Создано: 04 июня 2014 14:02 · Поправил: DenCoder
· Личное сообщение · #11

Да ладно, NetVictim.exe смотри

(Прям как знал, что ты в это время что-нить подобное брякнешь )

Dr0p пишет:
В аттаче не net.


md5: B389EAE92089A311780EF7388F4D286D
sha1: 89B3868BA52BD1DC6A31630B13D862CE6E8976FB



-----
IZ.RU





Ранг: 72.3 (постоянный), 133thx
Активность: 0.380
Статус: Участник

Создано: 04 июня 2014 19:03
· Личное сообщение · #12

DenCoder

Я сморел дллку. Хорошо, берём этот экзешник, грузим и возникает ошибка где то в недрах _CorValidateImage().




Ранг: 324.3 (мудрец), 222thx
Активность: 0.480.37
Статус: Участник

Создано: 04 июня 2014 19:54 · Поправил: DenCoder
· Личное сообщение · #13

Интересно, но ничего подобного у меня не возникало на винде XP с 69 процессами и 200 установленными приложениями.

Ты, возможно себе NET 3.5 никогда и не ставил, тем более не обновлял. Стоит какой-нибудь 2.0... Гадать не буду, но проблема может крыться где-то в файлах дотнета... Вообще, к сведению, на всякий случай, давно уже на XP поддержка 4.0, а на Win7 - 4.5. Программа.Net-поделка писана 2мя кликами на 3.5

-----
IZ.RU




Ранг: 262.5 (наставник), 337thx
Активность: 0.340.25
Статус: Участник

Создано: 04 июня 2014 20:09
· Личное сообщение · #14

Извиняюсь за оффтоп, Dr0p, ты когда-нибудь в жизни признавал свою ошибку, говорил, что был не прав?

| Сообщение посчитали полезным: vovanre, DenCoder

Ранг: 92.1 (постоянный), 83thx
Активность: 0.110
Статус: Участник

Создано: 04 июня 2014 20:22
· Личное сообщение · #15

Вообщем, больше всего понравилась эта реализация. Удобно когда можно вызвать свой метод.




Ранг: 748.2 (! !), 390thx
Активность: 0.370
Статус: Участник
bytecode!

Создано: 04 июня 2014 22:09
· Личное сообщение · #16

vovanre
Там моно, это не совсем дотнет, это его опенсорсный аналог, если говорить совсем упрощённо.
Уж не в Юнити ли приложение вы инжектились? Если так, то там есть ещё более простые способы, даже кодить ничего не надо кроме самой либы, которую надо заинжектить (можно через простой Auto-Assemble асм-сниппет в Cheat Engine инжектить свою моно либу).

-----
Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску.





Ранг: 72.3 (постоянный), 133thx
Активность: 0.380
Статус: Участник

Создано: 04 июня 2014 22:12 · Поправил: Dr0p
· Личное сообщение · #17

TryAga1n

Есно. Но я автоматом подвергаю сомнению утверждения, не сходящиеся с реальностью. Вот чувак выше дал семпл. Инжектится в лучшем случае мзпе с релоками, тобишь длл. Вот я сдампил эту хрень, прикрутил к загрузчику и получил фейл. Всё ровное ровно и грузится. Так что косяки это срущих кирпичём, я же всё оцениваю сугубо на реальных фактах.



Ранг: 92.1 (постоянный), 83thx
Активность: 0.110
Статус: Участник

Создано: 04 июня 2014 22:21
· Личное сообщение · #18

4kusNick, упустил этот момент я. Мне нужно было для двух вещей. Игрушки на Unity и программки
коммерческой.
4kusNick пишет:
Если так, то там есть ещё более простые способы, даже кодить ничего не надо кроме самой либы, которую надо заинжектить (можно через простой Auto-Assemble асм-сниппет в Cheat Engine инжектить свою моно либу).

Тут я подзавис. Каким боком автоасм с инжектом mono либы связан?




Ранг: 748.2 (! !), 390thx
Активность: 0.370
Статус: Участник
bytecode!

Создано: 04 июня 2014 22:45
· Личное сообщение · #19

vovanre
Вот первый пример, что нагуглился, не знаю, будет ли работать, я явно чуть иначе делал, правда это было давно и я уже подробно не вспомню свои извращения:
--> Link <--

-----
Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску.




Ранг: 92.1 (постоянный), 83thx
Активность: 0.110
Статус: Участник

Создано: 05 июня 2014 00:30 · Поправил: vovanre
· Личное сообщение · #20

Dr0p, успокойтесь .
Я знаю как работают трейнера CE , знаю то, что они в темп выбрасывают херову тучу шлака и запускают по три процесса с сжиранием херовой тучи памяти. Но можешь успокоиться? Хоть я и в интернете и привык ко многому, но к не обоснованному потоку дерьма я не привык.

Ты не думал, что мне вдруг понадобиться решение которое я смогу объяснить простым языком совершенно далёким от компьютера людям?

4kusNick, спасибо. Я люблю извращения.


не люблю смайлы, но без них не передашь эмоции.

-UPD-

Dr0p, что то у меня предчувствие , что будут меня тыкать в мою "не образованность", я понимаю , что знаю ещё мало, по этому спрашиваю о том, что я не смог найти или сам не смог понять.


Хотя, кого это ебёт, нубы и есть нубы.




Ранг: 748.2 (! !), 390thx
Активность: 0.370
Статус: Участник
bytecode!

Создано: 05 июня 2014 05:58
· Личное сообщение · #21

По-моему тема себя исчерпала - рабочие решения представлены, совет автору её закрыть, если вопросов больше нет, чтобы тут не разводили дальнейший срач не по теме =/

-----
Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску.


| Сообщение посчитали полезным: vovanre


Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 05 июня 2014 07:07
· Личное сообщение · #22

Закрыто. Dr0p за мат 1 день отдохнешь.

-----
[nice coder and reverser]



 eXeL@B —› Программирование —› Инжект .Net кода
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати