20 / 20 / 2
Регистрация: 28.11.2012
Сообщений: 366
|
|||||||||||||||||||||
1 | |||||||||||||||||||||
Создание потока в чужом процессе30.05.2013, 13:26. Показов 3619. Ответов 26
Метки нет Все метки)
(
Здравствуйте.
У меня беда, полтергейст, не знаю даже что, 5-й день уже не могу ничего сделать, помогите пожалуйста, может кто на свежий взгляд определит в чем проблема. В общем, в С++ Builder этот код работает, в делфи функция с асм кодом тоже работает, и только у меня на Visul C++ MFC процесс, в котором я создаю этот поток, вылетает. Вылетает как раз на строчке создания потока с GetLastError() = 299. Проект простой, три функции плюс кнопка: Функция определения ИД процесса:
0
|
|
30.05.2013, 13:26 | |
Ответы с готовыми решениями:
26
Перехват нажатия клавиш в чужом процессе Изменить значения по заданному адресу в чужом процессе |
20 / 20 / 2
Регистрация: 28.11.2012
Сообщений: 366
|
|
30.05.2013, 15:18 [ТС] | 2 |
0
|
Ушел с форума
![]() |
|
30.05.2013, 18:03 | 3 |
0x00693D60, 0x00B8FBCC - это что за магические числа ? Откуда они взяты ?
Здесь должно быть PAGE_EXECUTE_READWRITE.
0
|
20 / 20 / 2
Регистрация: 28.11.2012
Сообщений: 366
|
|
30.05.2013, 18:11 [ТС] | 4 |
0x00693D60 - адрес функции игрового процесса, которая выполняет выбор/сброс цели. Если ей передать параметр 0, то соответственно - это сброс цели. А сама функция получена из дебагера(к примеру ollydbg).
0
|
390 / 178 / 2
Регистрация: 14.03.2012
Сообщений: 443
|
|
30.05.2013, 18:26 | 5 |
ImageBase имеете ввиду? Уверены что база постоянна. Функция может импортироватся из dll, а dll фиксапится. И вообще у вас код странный, что вы в ECX кладёте?
0
|
20 / 20 / 2
Регистрация: 28.11.2012
Сообщений: 366
|
||||||
30.05.2013, 18:48 [ТС] | 6 | |||||
Я вам точно говорю, что базовый адрес программы статичен.
asm код получен мною из дебагера, если дословно, то ассемблерный код выглядит вот так:
P.S. у меня VS 2005 это как-то накладывает отпечаток на мои неудачи? Хотя я думаю - маловероятно. Я уже много чего попробовал, выбивает клиент и все. Хотя на Delfi и на Builder-е e у людей работает...
0
|
390 / 178 / 2
Регистрация: 14.03.2012
Сообщений: 443
|
|
30.05.2013, 18:49 | 7 |
Xantrax, покажите в дебагере код который заинжектили.
0
|
20 / 20 / 2
Регистрация: 28.11.2012
Сообщений: 366
|
|
30.05.2013, 18:54 [ТС] | 8 |
Если после вылета клиента нажать отладка и посмотреть сообщение ошибки, то вот:
http://i.pixs.ru/thumbs/7/9/1/... 092791.jpg Если сразу после вызова функции создания потока поставить GetLastError(), то ошибка 299 (как я уже и говорил).... Т.е. получается, что он не может что-то считать, а вот что именно, без понятия... И, да, я уже проверил свой компьютер на вирусы, и на всякий случай пронал тест оперативной памяти, сбойных блоков нет...
0
|
390 / 178 / 2
Регистрация: 14.03.2012
Сообщений: 443
|
||||||
30.05.2013, 19:17 | 9 | |||||
Нет, я хотел увидеть сам код. Как его компиль откомпилил. Т.е. вам бы еще отладчиком приаттачится.
Вам ведь просто с нулём нужно функцию вызвать. Зачем лишнии команды? Попробуйте такой код:
0
|
20 / 20 / 2
Регистрация: 28.11.2012
Сообщений: 366
|
|||||||||||||||||||||||||||||||
30.05.2013, 19:52 [ТС] | 10 | ||||||||||||||||||||||||||||||
Ну, вот это компилятор естественно не понимает,
К сожалению такого же простенького проекта с отправкой пакетов у меня пока нет (чуть попозже сделаю и выложу), но приведу функцию инжекта которая отправляет пакеты и все исполняется... Адреса, которые используются в функции отправки пакетов: #define BA 0x00B8FBCC #define F_SEND_PACKET 0x0069F9C0 Структура пакета:
Добавлено через 7 минут Но, мне нужно осилить именно отправку ассемблерного кода, для более сложных действий в дальнейшем, потому что их проще сделать выудив ассемблерный код...
1
|
390 / 178 / 2
Регистрация: 14.03.2012
Сообщений: 443
|
|
30.05.2013, 20:07 | 11 |
К самой игре в которую сделали инжект. Поставте бесконечный цикл в начале асм вставки. Затем в Olly нажмите File->Attach и выберити процесс игры. Так же в программе которая инжектит, сделайте вывод адреса который возвращается от VirtualAllocEx. Чтобы знать по какому адресу код вписался (чтоб найти в Olly). Затем вы сможете выйти из цикла ПКМ -> New origin here * и отладить программу и понять причину падения.
Или проще сделайте. Откомпилируйте exe, с той вставкой, которая у вам была изначально. И залейте сюда. Чтоб я его в hex редакторе посмотрел, у меня просто студии не стоит.
0
|
20 / 20 / 2
Регистрация: 28.11.2012
Сообщений: 366
|
|
30.05.2013, 20:16 [ТС] | 12 |
Пожалуйста... Спасибо вам, что помогаете, 5-й день уже мучаюсь....
0
|
390 / 178 / 2
Регистрация: 14.03.2012
Сообщений: 443
|
||||||
30.05.2013, 20:37 | 13 | |||||
Вот функция которую вы инжектите:
1
|
20 / 20 / 2
Регистрация: 28.11.2012
Сообщений: 366
|
|
30.05.2013, 20:51 [ТС] | 14 |
Ммм, беда... Что ж получается, в VS нельзя инжектить асм код? Может другим компилятором каким пройтись?
Бред какой-то. Может более новая версия VS исправит эту огрешность компилятора??
0
|
390 / 178 / 2
Регистрация: 14.03.2012
Сообщений: 443
|
|
30.05.2013, 20:56 | 15 |
Вот, попробуйте (только оформите правельно 0xA1,0xCC и т.д.):
0
|
390 / 178 / 2
Регистрация: 14.03.2012
Сообщений: 443
|
|
30.05.2013, 21:01 | 16 |
Может в настройках чего-нибудь потыкать. Я не знаю. Вообще такие вещи лутше на нормальном асме писать (MASM32 допустим), ну и потом можно приленковывать как .obj файл к c++ проекту.
0
|
20 / 20 / 2
Регистрация: 28.11.2012
Сообщений: 366
|
|
30.05.2013, 21:05 [ТС] | 17 |
Массив сам по себе уже указатель, имя массива указывает на начало массива.
0
|
390 / 178 / 2
Регистрация: 14.03.2012
Сообщений: 443
|
||||||
30.05.2013, 21:12 | 18 | |||||
Я ошибся. Извеняюсь, я хотел сказать WriteProcessMemory.
Этот массив это код. Его и надо заинжектить и запустить. A1 CC FB B8 00 - первая инструкция, 6A 00 - вторая В итоге вот что получается:
0
|
20 / 20 / 2
Регистрация: 28.11.2012
Сообщений: 366
|
||||||
30.05.2013, 21:25 [ТС] | 19 | |||||
Так?
Добавлено через 7 минут Да, и в CreateRemoteThread - вместо paramaddr, написать NULL. Параметры нам все равно больше не нужны...
0
|
390 / 178 / 2
Регистрация: 14.03.2012
Сообщений: 443
|
|
30.05.2013, 21:27 | 20 |
Xantrax, ааа, кстати можно ведь поток не ретом завершить, а через API.
0
|
30.05.2013, 21:27 | |
Помогаю со студенческими работами здесь
20
Установить защиту памяти в чужом процессе на запись Управление памятью в чужом процессе используя его апи Directx рисование в чужом x64 процессе; Hex опкоды в ассемблер Нужна помощь в получении base address DLL в чужом процессе. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |