HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > ИНФО > Статьи
   
 
 
Опции темы Поиск в этой теме Опции просмотра

  #8  
Старый 26.12.2011, 22:44
greki_hoy
Познающий
Регистрация: 04.03.2010
Сообщений: 32
Провел на форуме:
32525

Репутация: 23
По умолчанию

Всех с наступающим!

по теме:

обязательно если это точка входа в Ваш шеллкод и если она принимает

параметры пишите с модификатором __declspec(dllexport) вот так

Цитата:
Сообщение от None  
__declspec(dllexport)
DWORD __stdcall ShellCode_Start(SHELLCODE_PARAM* Param)
{
// код
}
потому что код заливающий шеллкод и запускающий его надеется на

стандартный сишный порядок передачи аргументов или на __stdcall

а при компиляции шеллкода в режиме агрессивной оптимизации точка

входа может сменить соглашение с __cdecl или __stdcall на __usercall

что значит компилятор в целях оптимизации может как угодно начать

передавать ей аргументы я на это нарывался как то а когда мы пишем

__declspec(dllexport) то создаем некий контракт на соглащение о вызове

потому что предпологаеться что для этой функции в будущем будут

генерировать вывоз по четко определенному сишному или __stdcall

соглашению исходя из прототипа и компилятор не имеет права искажать

вызов в целях оптимизации

Цитата:
Сообщение от None  
2) вызов доп функций может привести к появлению VA, но у нас все функции становятся
подставляются как inline по этому по факту их нет.
по наблюдениям код сгенрированный MSVC делает вызов по абсолютным

предопределенным адресам только когда вызывает API через IAT или

когда явно указатель на функцию передаеш например в функцию

CreateThread это не страшно надо просто прибавлять дельту к такому

указателю например CreateThread(ThreadEntry + Delta) и все

все остальные вызовы например шеллкод состоит из

нескольких функций дергаются по относительным адресам

например call (call_me - ($ + 5)) или

call (0 - ($ + 5 - call_me))

(просто две разные формулы вычисления одного и того же)

или по абсолютным но вычисленным во время выполнения
 
Ответить с цитированием
 





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.