Форум программистов, компьютерный форум CyberForum.ru

Нужно осуществить инжект ассемблерного кода в процесс - C++

Восстановить пароль Регистрация
 
anubis52
Сообщений: n/a
19.02.2013, 22:53     Нужно осуществить инжект ассемблерного кода в процесс #1
В процессе по определённому адресу нужно заменить инструкцию.
Как указать на адрес?
Тоесть мне нужно заNOPать инструкцию. НО я не знаю как это сделать
В дизассемблере можно просто выделить инструкцию и заменить её.
Но как сделать то же самое средствами C++
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.02.2013, 22:53     Нужно осуществить инжект ассемблерного кода в процесс
Посмотрите здесь:

Инжект кода C++
C++ инжект кода(не dll)
C++ Как реализовать вставку ассемблерного кода в код с++ для очистки экрана?
C++ Вставка ассемблерного кода в С++ для очистки экрана
C++ Осуществить перевод из двоичного кода в десятичный
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
19.02.2013, 22:54     Нужно осуществить инжект ассемблерного кода в процесс #2
WriteProcessMemory, если на винде.

Добавлено через 29 секунд
Цитата Сообщение от anubis52 Посмотреть сообщение
Но как сделать то же самое средствами C++
Невозможно. С++ о процессах и твоей системе ничего не знает.
anubis52
Сообщений: n/a
19.02.2013, 23:14     Нужно осуществить инжект ассемблерного кода в процесс #3
На винде. Но как мне может помочь WriteProcessMemory ?
Цитата Сообщение от Vourhey Посмотреть сообщение
Невозможно. С++ о процессах и твоей системе ничего не знает.
тогда что посоветуете как альтернативу NOP
NIch
 Аватар для NIch
399 / 310 / 27
Регистрация: 17.03.2010
Сообщений: 1,120
20.02.2013, 00:23     Нужно осуществить инжект ассемблерного кода в процесс #4
WriteProcessMemory - Writes data to an area of memory in a specified process.
Пишет данные в память определенного процесса.
Ассемблерный код - это набор команд, который выглядит так же как и данные, те же байты.

http://msdn.microsoft.com/ru-ru/libr...(v=vs.85).aspx

Это далеко не так просто как кажется.

Цитата Сообщение от anubis52 Посмотреть сообщение
тогда что посоветуете как альтернативу NOP
Это No Operator т.е. пробел, пустота, ноль.
Альтернатива? Смотря что конкретно ты хочешь сделать.

Не по теме:

Чую пахнет тут хаккерскими штучками)

onclusiv
0 / 0 / 0
Регистрация: 20.02.2013
Сообщений: 8
20.02.2013, 00:43     Нужно осуществить инжект ассемблерного кода в процесс #5
Что то не могу войти под anubis52. поэтому пришлось зарегать этот ник.
Цитата Сообщение от NIch Посмотреть сообщение
WriteProcessMemory - Writes data to an area of memory in a specified process.
Пишет данные в память определенного процесса.
Ассемблерный код - это набор команд, который выглядит так же как и данные, те же байты.

http://msdn.microsoft.com/ru-ru/libr...(v=vs.85).aspx

Это далеко не так просто как кажется.


Это No Operator т.е. пробел, пустота, ноль.
Альтернатива? Смотря что конкретно ты хочешь сделать.

Не по теме:

Чую пахнет тут хаккерскими штучками)

Не, не пахнет.=)
Я хочу что бы программа перестала выполнять функцию.
Ну например идёт счётчик. mov eax, ebx уменьшает его. и я хотел бы затереть её nop'ом что бы счётчик не шёл. как мне это сделать?
Но это только пример. На самом же деле нет никаких счётчиков. Суть вопроса в том что бы затереть функцию. Заставить её делать "ничего".
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
20.02.2013, 10:45     Нужно осуществить инжект ассемблерного кода в процесс #6
[ссылка удалена] тут хорошо написано как это сделать, у меня по крайней мере получилось)

 Комментарий модератора 
Запрещено публиковать ссылки на другие форумы, а также их пропаганда.
Правила форума
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
20.02.2013, 10:57     Нужно осуществить инжект ассемблерного кода в процесс #7
Цитата Сообщение от anubis52 Посмотреть сообщение
Но как мне может помочь WriteProcessMemory ?
Документацию-то почитай. Запиши в память свой 90h.
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
20.02.2013, 10:59     Нужно осуществить инжект ассемблерного кода в процесс #8
одной этой функцией не обойтись) а моя ссылка на источник к сожалению удалена(
WhiteP
605 / 203 / 23
Регистрация: 20.11.2012
Сообщений: 419
20.02.2013, 11:49     Нужно осуществить инжект ассемблерного кода в процесс #9
Цитата Сообщение от anubis52 Посмотреть сообщение
Как указать на адрес?
Смотришь в отладчике/HEX-редакторе адрес функции и ее размер в байтах. Вычитаешь от адреса ImageBase из заголовка. Грузишь процесс, получаешь отладочные привилегии, приостанавливаешь процесс, узнаешь его фактическую базу загрузки, прибавляешь к ней смещение функции, для полученного адреса делаешь VirtualProtect READWRITE, пишешь n байтов 90h (n - размер функции в байтах) с помощью WriteProcessMemory.
Если функция - это именно процедура, а не кусок кода, то проще вариацию mov eax, x; ret/retn в ее начале воткнуть.
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
20.02.2013, 12:07     Нужно осуществить инжект ассемблерного кода в процесс #10
Цитата Сообщение от aLarman Посмотреть сообщение
одной этой функцией не обойтись)

Не по теме:

Никто не говорил, что кроме одной функции больше кода не будет Но его написание - уже забота автора.

onclusiv
0 / 0 / 0
Регистрация: 20.02.2013
Сообщений: 8
23.02.2013, 14:36     Нужно осуществить инжект ассемблерного кода в процесс #11
Цитата Сообщение от NIch
Это далеко не так просто как кажется.
Это оказалось проще чем я думал =)
Спасибо за функцию. В тот же день всё получилось.

Цитата Сообщение от Vourhey
Документацию-то почитай. Запиши в память свой 90h.
Так и сделал. =)

Цитата Сообщение от WhiteP
Смотришь в отладчике/HEX-редакторе адрес функции и ее размер в байтах. Вычитаешь от адреса ImageBase из заголовка. Грузишь процесс, получаешь отладочные привилегии, приостанавливаешь процесс, узнаешь его фактическую базу загрузки, прибавляешь к ней смещение функции, для полученного адреса делаешь VirtualProtect READWRITE, пишешь n байтов 90h (n - размер функции в байтах) с помощью WriteProcessMemory.
Если функция - это именно процедура, а не кусок кода, то проще вариацию mov eax, x; ret/retn в ее начале воткнуть.
Блин где же ты был когда я только задал вопрос? Ты бы так помог. А так я до всего этого дошёл сам. Вычел адрес но не понял как затоптать инструкцию. И поэтому пришёл сюда. А оказалось это же просто байт-код который можно менять=) Столько узнал сразу в один день=) Даже понял что такое сигнатура.

Цитата Сообщение от Vourhey
одной этой функцией не обойтись)
Если не считать всякие VirtualProtect и прочее, то одна получилась=)

Всем спасибо. Тему можно закрыть. Ответ WhiteP и есть подробная инструкция действий. Ещё раз всем спасибо.

Не по теме:

Люблю этот форум. Всегда помогут хорошим советом.

Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,585
Записей в блоге: 12
23.02.2013, 14:45     Нужно осуществить инжект ассемблерного кода в процесс #12
anubis52,
win api функции найдёте сами, если не найдёте пишите сюда
первое - записываем в чужой процесс данные - структура с данными
второе - записывает код
третье - создаёте поток в поток передаёте указатель на память в чужом процессе
в внедрённом потоке используете только данные структуры и стековые переменные
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.02.2013, 14:48     Нужно осуществить инжект ассемблерного кода в процесс
Еще ссылки по теме:

C++ Процесс А инициализирует массив случайными значениями и записывает их в файл, а затем запускает процесс Б
C++ Studio 2010 - как при компиляции сохранять файл ассемблерного листинга?
C++ Вставка ассемблерного модуля в С++ проект

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
onclusiv
0 / 0 / 0
Регистрация: 20.02.2013
Сообщений: 8
23.02.2013, 14:48     Нужно осуществить инжект ассемблерного кода в процесс #13
Van111, спасибо. но читай пост выше. проблема уже решена=)

aLarman дай свой скайп. скинешь ту ссылочку что удалили. интересно посмотреть что там.

P.S. Автор темы Я. Просто под anubis52 не получается войти.
Yandex
Объявления
23.02.2013, 14:48     Нужно осуществить инжект ассемблерного кода в процесс
Ответ Создать тему
Опции темы

Текущее время: 04:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru