Русский / Russian English / Английский

Сейчас на форуме: Login_ (+1 невидимый пользователь)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS ·

 eXeL@B —› Вопросы новичков —› CreateRemoteThread -> Access violation
Посл.ответ Сообщение

Ранг: 1.6 (гость)
Статус: Участник

Создано: 02 января 2020 20:03 · Поправил: wcy97484 New!
Цитата · Личное сообщение · #1

Так, в общем Target Process: hello_box.exe (пустышка)
Язык: C++
Ловим ProcessHandle, выделяем память, пихаем в нее функцию c++, описанную выше. Пример:

Code:
  1. int test(LPVOID* pData) {
  2.  
  3. int x = 77;
  4.     __asm {
  5.  
  6.         mov eax, 77;
  7.         mov eax, [x];
  8.         add eax, 5;
  9.  
  10.  
  11.     }
  12.  
  13.     return 0;
  14.  
  15. }



К Hello_box приатачен x32dbg, по карте памяти - функция верно ложится в память, но кода открываю поток на это - ловлю EXCEPTION#5 - ACCESS VIOLATION

Причем на операции еще до существенного тела функции:
Code:
  1. 007608E2 | A1 04A03400              | mov eax,dword ptr ds:[34A004]



Что я делаю не так ? Если я делаю просто Объявление переменных в функции как C++, без Inline ASM / просто inline ASM - все ровно без ошибок. Как только я начинаю использовать функции c++ внутри инжектируемой функции / обращаться к переменным объявленных в c++, из inline asm - ловлю эту ошибку. В чем может быть ошибка ?

Добавлено спустя 47 минут
Решено, int x -> DWORD x, все ок.
Но до сих пор не понимаю, как использовать c++ функции тут.

Добавлено спустя 57 минут
Когда я говорю про функции c++, элементарный MessageBoxA




Ранг: 326.0 (мудрец)
Статус: Участник

Создано: 02 января 2020 21:07 New!
Цитата · Личное сообщение · #2

wcy97484

> Ловим ProcessHandle

Если бы ты ловил ссылку на описатель, то закрыл бы его, включил трассировку описателей и ловил бы #INVALID_HANDLE. А так у тебя обычный косяк(дереференс инвалид указателя) из за не валид аргументов.



Ранг: 1.6 (гость)
Статус: Участник

Создано: 02 января 2020 21:08 New!
Цитата · Личное сообщение · #3

Не, чето я совсем запутался. Ребят, пытаюсь рядомлежащую функцию c++ инжектировать в target process.
Скажите мне пожалуйста, как лаконично:
1. Использовать функции c++ в этой функции, чтобы они отрабатывали в целевом процессе
2. Декларировать переменные в c++, и использовать их в Inline asm. Конкретно интересуют типы, int/DWORD/CHAR/BYTE/CHAR */BYTE *

Добавлено спустя 1 минуту
difexacaw, у меня ошибка #5 не в инжектирующем приложении, а в целевом(target) приложении.

Добавлено спустя 3 минуты
difexacaw, то есть есть просто сделать в этой функции __asm { mov eax, ebx; mov ebx, ecx; mov ecx, edx;} ( как сэмпл), и глянуть в pointer, который был определен VirtualAllocEx все записано верно, и исполняется. Но если делать не сэмпл код а пытаться делать что я описал выше(тоже собственно не сложные операции), возникает эта ошибка.




Ранг: 326.0 (мудрец)
Статус: Участник

Создано: 02 января 2020 21:23 · Поправил: difexacaw New!
Цитата · Личное сообщение · #4

wcy97484

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




Ранг: 72.0 (постоянный)
Статус: Участник

Создано: 02 января 2020 21:53 New!
Цитата · Личное сообщение · #5

wcy97484 пишет:
Когда я говорю про функции c++, элементарный MessageBoxA

искать адреса динамически, т.е. писать в шеллкод стиле.
Ищите на гитхабе или еще где примеры, миллион раз эти инжекты были описаны.
з.ы. мессаджебокс это винапи, причем тут С++, я хз.




Ранг: 326.0 (мудрец)
Статус: Участник

Создано: 02 января 2020 22:03 New!
Цитата · Личное сообщение · #6

morgot

Он не понимает что такое адресное пространство, для работы скрипта нужно локальное окружение, которого нет в другом АП. По этой причине инжект пишется на голом си или асм, но не на скрипте. Подгрузить всё окружение в принципе врядле возможно.



Ранг: 158.6 (ветеран)
Статус: Участник

Создано: 02 января 2020 23:23 New!
Цитата · Личное сообщение · #7

difexacaw пишет:
Подгрузить всё окружение в принципе врядле возможно.

Почему же? Визором посмотреть, что там рантайм навыделял после старта, и перенести все целиком (применив релоки)



Ранг: 1.6 (гость)
Статус: Участник

Создано: 03 января 2020 08:27 New!
Цитата · Личное сообщение · #8

difexacaw, про локальное окружение понимаю, собственно вопрос в этом - можно ли как нибудь его подгрузить. Но ответ уже увидел - раз вряд ли - пойду смотреть в другую сторону. Благодарю!



Ранг: 145.8 (ветеран)
Статус: Участник

Создано: 03 января 2020 08:52 New!
Цитата · Личное сообщение · #9

wcy97484 пишет:
Когда я говорю про функции c++, элементарный MessageBoxA

В каком таком стандарте С++ появился MessageBoxA?




Ранг: 326.0 (мудрец)
Статус: Участник

Создано: 03 января 2020 19:25 New!
Цитата · Личное сообщение · #10

rmn

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




Ранг: 681.5 (! !)
Статус: Участник
ALIEN Hack Team

Создано: 04 января 2020 01:36 New!
Цитата · Личное сообщение · #11

wcy97484
Парень, это ты в соседней теме на стеке хранишь данные?



Ранг: 27.7 (посетитель)
Статус: Участник

Создано: 04 января 2020 17:20 New!
Цитата · Личное сообщение · #12

wcy97484 пишет:
Причем на операции еще до существенного тела функции

А как ты это проверяешь, что именно до? Как ты вычисляешь размер инжектируемой функции? Можно посмотреть дизасм этой функции полностью?



Ранг: 1.6 (гость)
Статус: Участник

Создано: 06 января 2020 12:03 New!
Цитата · Личное сообщение · #13

ARCHANGEL, Да вроде нет, в куче храню ))
Ребят, вопрос решен и закрыт, всем thx.



Ранг: 261.2 (наставник)
Статус: Участник

Создано: 06 января 2020 12:05 New!
Цитата · Личное сообщение · #14

wcy97484 пишет:
вопрос решен и закрыт

Ну дык напиши как решил, в чем была проблема. Вдруг другие тоже столкнутся с подобным. Будь хорошим мальчиком))



Ранг: 1.6 (гость)
Статус: Участник

Создано: 06 января 2020 13:40 New!
Цитата · Личное сообщение · #15

Ну собственно, среда не подгружена, как и догадывался, как и написали выше, можно бесконечно **аться с этим, но я решил грузить сторонний файл. Пробнул PE файл с указанием на Entry Point, но опять же этого недостаточно, потому что не зря PE файл есть PE файл, а не шеллкод, поэтому решение мое оказалось тривиальным - грузить DLL.


 eXeL@B —› Вопросы новичков —› CreateRemoteThread -> Access violation

Видеокурс ВЗЛОМ