Сейчас на форуме: tyns777, bezumchik (+4 невидимых)

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

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

Создано: 02 января 2020 20:03 · Поправил: wcy97484
· Личное сообщение · #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




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

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

wcy97484

> Ловим ProcessHandle

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

-----
vx




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

Создано: 02 января 2020 21:08
· Личное сообщение · #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 все записано верно, и исполняется. Но если делать не сэмпл код а пытаться делать что я описал выше(тоже собственно не сложные операции), возникает эта ошибка.




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

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

wcy97484

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

-----
vx





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

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

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

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




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

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

morgot

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

-----
vx




Ранг: 158.4 (ветеран), 123thx
Активность: 0.140.49
Статус: Участник

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

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

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



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

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

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



Ранг: 145.8 (ветеран), 191thx
Активность: 0.140.36
Статус: Участник

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

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

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




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

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

rmn

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

-----
vx





Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

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

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

-----
Stuck to the plan, always think that we would stand up, never ran.




Ранг: 27.7 (посетитель), 2thx
Активность: 0.01=0.01
Статус: Участник

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

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

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



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

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

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



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

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

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

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



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

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

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


 eXeL@B —› Вопросы новичков —› CreateRemoteThread -> Access violation
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати