Вопрос Куда можно залить шеллкод?

Забаненный
Статус
Оффлайн
Регистрация
31 Май 2024
Сообщения
7
Реакции[?]
0
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Всем привет, пытаюсь залить шеллкод на аллок памяти и создание потока.
Пробовал заливать на IDA -> Strings -> room_settings.
Он отрабатывает, но крашит игру (я уверен что это можно пофиксить, но я хз как, опыта нет).
Знает-ли кто-то место, куда можно залить шелл без вылетов и крашей.
Размер массива: 85 (можно сократить до 59, если потребуется).

PS: Регистры восстанавливал, крашит не из-за них.
 
Начинающий
Статус
Оффлайн
Регистрация
31 Мар 2024
Сообщения
97
Реакции[?]
22
Поинты[?]
23K
Всем привет, пытаюсь залить шеллкод на аллок памяти и создание потока.
Пробовал заливать на IDA -> Strings -> room_settings.
Он отрабатывает, но крашит игру (я уверен что это можно пофиксить, но я хз как, опыта нет).
Знает-ли кто-то место, куда можно залить шелл без вылетов и крашей.
Размер массива: 85 (можно сократить до 59, если потребуется).

PS: Регистры восстанавливал, крашит не из-за них.
а как на счет того чтоб приложить шеллкод и мы могли посмотреть его и сказать тебе возможное решение. Или мы экстрасенсы?
 
Забаненный
Статус
Оффлайн
Регистрация
31 Май 2024
Сообщения
7
Реакции[?]
0
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
а как на счет того чтоб приложить шеллкод и мы могли посмотреть его и сказать тебе возможное решение. Или мы экстрасенсы?
А что тут гадать?
Обычный шеллкод на вызов VirtualAlloc по его адресу.

Код:
push r9
push r8
push rdx
push rcx
push rax

mov r9, 0x04
mov r8, 0x3000
mov rdx, 0x80000000 (2гб для теста)
xor rcx, rcx
mov rax, 0x0000000000000000 (Адрес VirtualAlloc подставляется в рантайме)
call rax

pop r9
pop r8
pop rdx
pop rcx
pop rax

//C++
unsigned char shellcode[] =
{
    // Сохранение регистров
    0x41, 0x51, 0x41, 0x50, 0x52, 0x51, 0x50,                   // push all

    // VirtualAlloc
    0x49, 0xB9, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // mov r9, 0x04
    0x49, 0xB8, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // mov r8, 0x3000
    0x48, 0xBA, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, // mov rdx, 0x80000000
    0x48, 0x31, 0xC9,                                           // xor rcx, rcx
    0x48, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // mov rax, 0x0000000000000000 (Адрес VirtualAlloc)
    0xFF, 0xD0,                                                 // call rax

    // Восстановление регистров
    0x41, 0x59, 0x41, 0x58, 0x5a, 0x59, 0x58,                   // pop all
};
 
Начинающий
Статус
Оффлайн
Регистрация
22 Дек 2023
Сообщения
264
Реакции[?]
16
Поинты[?]
17K
А что тут гадать?
Обычный шеллкод на вызов VirtualAlloc по его адресу.

Код:
push r9
push r8
push rdx
push rcx
push rax

mov r9, 0x04
mov r8, 0x3000
mov rdx, 0x80000000 (2гб для теста)
xor rcx, rcx
mov rax, 0x0000000000000000 (Адрес VirtualAlloc подставляется в рантайме)
call rax

pop r9
pop r8
pop rdx
pop rcx
pop rax

//C++
unsigned char shellcode[] =
{
    // Сохранение регистров
    0x41, 0x51, 0x41, 0x50, 0x52, 0x51, 0x50,                   // push all

    // VirtualAlloc
    0x49, 0xB9, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // mov r9, 0x04
    0x49, 0xB8, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // mov r8, 0x3000
    0x48, 0xBA, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, // mov rdx, 0x80000000
    0x48, 0x31, 0xC9,                                           // xor rcx, rcx
    0x48, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // mov rax, 0x0000000000000000 (Адрес VirtualAlloc)
    0xFF, 0xD0,                                                 // call rax

    // Восстановление регистров
    0x41, 0x59, 0x41, 0x58, 0x5a, 0x59, 0x58,                   // pop all
};
где ret неучь криворукий?
Обычный шеллкод на вызов VirtualAlloc по его адресу.
и вообще по словам используется создание потока, то хватит и этого куска из этого дерьма
Код:
mov r9d, 0x04
mov r8d, 0x3000
mov edx, 0x80000000 (2гб для теста)
xor rcx, rcx
mov rax, qword ptr ds:[0x0000000141EC5AC0]
jmp rax
Код:
41 B9 04 00 00 00 mov r9d, 0x04
41 B8 00 30 00 00 mov r8d, 0x3000
BA 00 00 00 80 mov edx, 0x80000000
48 31 C9 xor rcx, rcx
48 A1 C0 5A EC 41 01 00 00 00 mov rax, qword ptr ds:[0x0000000141EC5AC0]
FF E0 jmp rax
можно сократить до 59, если потребуется
не благодари сократил до 32
 
Последнее редактирование:
Забаненный
Статус
Оффлайн
Регистрация
31 Май 2024
Сообщения
7
Реакции[?]
0
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
где ret неучь криворукий?


и вообще по словам используется создание потока, то хватит и этого куска из этого дерьма
Код:
mov r9d, 0x04
mov r8d, 0x3000
mov edx, 0x80000000 (2гб для теста)
xor rcx, rcx
mov rax, qword ptr ds:[0x0000000141EC5AC0]
jmp rax
Код:
41 B9 04 00 00 00 mov r9d, 0x04
41 B8 00 30 00 00 mov r8d, 0x3000
BA 00 00 00 80 mov edx, 0x80000000
48 31 C9 xor rcx, rcx
48 A1 C0 5A EC 41 01 00 00 00 mov rax, qword ptr ds:[0x0000000141EC5AC0]
FF E0 jmp rax
не благодари сократил до 32
Что ты там сократил, увалень, где восстановление регистров?
Вопрос не был связан с моим шеллкодом, я спросил место, где его можно разместить.
и нахуя там ret, если вызов идет не через call, а через jmp, недоносок, выход из него тоже идет через jmp.
 
Начинающий
Статус
Оффлайн
Регистрация
22 Дек 2023
Сообщения
264
Реакции[?]
16
Поинты[?]
17K
и нахуя там ret, если вызов идет не через call, а через jmp, недоносок, выход из него тоже идет через jmp.
ты валенок? у тебя в шеле был call Без ret вот ты и ловил краш недомерок. пуши тебе при создании потока не нужны тк это новый поток и только для одного вызова.

твой шел заканчивался на восстановлении регистров и шел в никуда когда должен был быть возврат. начинающий пастер иди подучись перед тем как высирать свой мусор
 
Забаненный
Статус
Оффлайн
Регистрация
31 Май 2024
Сообщения
7
Реакции[?]
0
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
ты валенок? у тебя в шеле был call Без ret вот ты и ловил краш недомерок. пуши тебе при создании потока не нужны тк это новый поток и только для одного вызова
Олень, это call VirtualAlloc, с чего после него нужен ret, додик.
Шеллкод вызывается не в новом потоке, держу в курсе, он вызывается через хук функции, поэтому требуется сохранение регистров
 
Начинающий
Статус
Оффлайн
Регистрация
22 Дек 2023
Сообщения
264
Реакции[?]
16
Поинты[?]
17K
Забаненный
Статус
Оффлайн
Регистрация
31 Май 2024
Сообщения
7
Реакции[?]
0
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
создание потока это не новый поток?
Я имел ввиду, что сначала заливается шелл на аллок, он выделяет память, а после заливается шелл на создание потока, когда в область память будет что-то загружено, сам шелл работает через хук функции
 
Начинающий
Статус
Оффлайн
Регистрация
22 Дек 2023
Сообщения
264
Реакции[?]
16
Поинты[?]
17K
push r9 push r8 push rdx push rcx push rax
pop r9 pop r8 pop rdx pop rcx pop rax
и раз уж на то пошло, то ты даже в этом обоссался

Код:
push r9
push r8
push rdx
push rcx
push rax

...

pop rax
pop rcx
pop rdx
pop r8
pop r9

jmp ...
сначала заливается шелл на аллок
после заливается шелл на создание потока,
WTF
 
Забаненный
Статус
Оффлайн
Регистрация
31 Май 2024
Сообщения
7
Реакции[?]
0
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Забаненный
Статус
Оффлайн
Регистрация
31 Май 2024
Сообщения
7
Реакции[?]
0
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Сверху Снизу