Подпишитесь на наш Telegram-канал, чтобы всегда быть в курсе важных обновлений! Перейти

Как найти STATIC_SILHOUETTS, j_memcpy и j_memset

bluedream.ltd
bluedream.ltd
Статус
Оффлайн
Регистрация
4 Янв 2020
Сообщения
3,061
Реакции
1,291
Обучение для чайников как найти адреса STATIC_SILHOUETTS, j_memcpy и j_memset:
По прошлому гайду открываем наш дамп в IDA.
Открываем вкладку Hex-View и листаем в самый верх.
Нажимаем сочетание клавиш ALT+B, выставляем такие настройки и вставляем:
1623323778289.png

Ищем вот этот паттерн E8 ? ? ? ? EB 3F 0F 57 C0, этот паттерн создал я, он нужен для STATIC_SILHOUETTS
Нажимаем F5 и нас кидает сюда, адрес наших силуэтов я выделил желтым, убираем из начала sub_ и это и будет наш адрес:
image.png

Теперь идем снова в Hex-View и мотаем в самый верх, вставляем паттерн E8 ? ? ? ? 33 C0 48 83 C4 20 5F и жмем F5.
Нас перебросит на j_memset, адрес unk_(тут будет ваш адрес) будет верным.
Делаем тоже самое, по аналогии с j_memset
Теперь наш паттерн E8 ? ? ? ? 48 8D 4F 20 41 8B D4 , это паттерн для j_memcpy.
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
А если патерн поменяется? :roflanEbalo:
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Гайды по реверсу конечно хорошо. Но давай какие нибудь гайды по добавлению функций в Хак =)
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
C++:
Expand Collapse Copy
void*  _memcpy(void* to, const void* from, size_t n)
{
    const char* f_pointer = (const char*)from;
    char* t_pointer = (char*)to;
    for (size_t i = 0; i < n; ++i) * (t_pointer++) = *(f_pointer++);
    return to;
}

void* _memset(void* _Dst, int _Val, UINT _Size)
{
    BYTE* buf = (BYTE*)_Dst;
    while (_Size--)* buf++ = (BYTE)_Val;
    return _Dst;
}
Благодарить не нужно.
 
C++:
Expand Collapse Copy
void*  _memcpy(void* to, const void* from, size_t n)
{
    const char* f_pointer = (const char*)from;
    char* t_pointer = (char*)to;
    for (size_t i = 0; i < n; ++i) * (t_pointer++) = *(f_pointer++);
    return to;
}

void* _memset(void* _Dst, int _Val, UINT _Size)
{
    BYTE* buf = (BYTE*)_Dst;
    while (_Size--)* buf++ = (BYTE)_Val;
    return _Dst;
}
Благодарить не нужно.
Поясни пожалуйста
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Блять, а можно для тупых, как паттерн создать?
@xLamantine заранее благодарю
 
Последнее редактирование:
Поясни пожалуйста
зачем вызывать эти функции и тем более искать на них оффсеты, если они ребилдятся за 20 секунд….
а про существование __movsb и __stosb наверно слышим впервые……
 
зачем вызывать эти функции и тем более искать на них оффсеты, если они ребилдятся за 20 секунд….
а про существование __movsb и __stosb наверно слышим впервые……
слышим впервые, расскажи, не пустословь, хоть умнее будем
 
слышим впервые, расскажи, не пустословь, хоть умнее будем
ну слушай, __movsb генерирует инструкцию rep movsb и принимает 3 аргумента, прямо как memcpy, и, кто бы мог подумать, делает то же самое, даже слегка быстрее
с __stosb и memset аналогично…

так что смысла в ваших j_memcpy и j_memset нет…
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Для чего паттерны, если они слетают раз через раз, есть же тоже довольно просто, HUDSilhouettes_Type ->xref 2 sub
 
Назад
Сверху Снизу