;===============================================ж ; Посвящаеца последнему представителю ж ; сцены, а также сцене в едином лице ж ; Инде Клерку, ж ; любителю подобных концепто-высеров ж ; и обожателю один раз скампелировать на ж ; языке оссемблер, не чем по стопиццот раз ж ; на этих ваших ЯВУ. ж ; Возвращайсо и нопейши есчо этих ж ; вкусных 0дей технических стотей! ж ;===============================================ж ;################################################ ;# КОДЕС СТОИТ ПОДВИНУТЬ ЧУТЬ ПОДАЛЬШЕ # ;# ОТ ВЫШЕСКАЗОННОГО, ИНАЧЕ КОМПЕЛЯТОР # ;# ПРОЧИТАЕТ ОНОЕ ВЫСКАЗЫВАНИЕ И, ЕБАНУВШИСЬ # ;# ГОЛОВОЙ, НАДЕЛАЕТ ОШИБОК ИЛИ ЖЕ ВООБЩЕ # ;# БЛЯТЬ ГПЕ ПОЛУЧИЦА ОЧЕРЕДНОЙ # ;################################################ .386 .model flat,stdcall option casemap:none include \masm32\include\windows.inc include \masm32\include\user32.inc include \masm32\include\kernel32.inc includelib \masm32\lib\user32.lib includelib \masm32\lib\kernel32.lib .data? hin HANDLE ? hout HANDLE ? .code include FindAddrFuncOnHash.inc ;это секретная функцея тут лежит для ;нахождения нумеркоув ёбаных системных сервесов ;(там очень сложно, потому преват) ;Инде, ты все равно её не поймешь и не проси! _text db 'Da Kampeliruy Zhe, Suka!!!',13,10 _title db 'Nu zhe, blyad!!',13,10 db 'Press Enter..' sizee equ $-offset _text _Co db 'TrashGen POC',0 ;========================================================================================= ; поехали, ёбааа!! start proc assume fs:flat local asd[50h]:byte ;зависит от количества параметров в функции ;push MB_ICONERROR ;push offset _title ;push offset _text ;push 0 ;mov ecx,4; ;mov ebx,MessageBoxA ;call SEHCallerTrash mov esi,offset StackGuarded mov edi,offset SEHCallerTrash push offset _Co mov ecx,1 mov ebx,SetConsoleTitleA call edi call esi xor ecx,ecx mov ebx,AllocConsole call edi call esi push STD_OUTPUT_HANDLE mov ecx,1 mov ebx,GetStdHandle call edi mov hout,eax call esi push STD_INPUT_HANDLE mov ecx,1 mov ebx,GetStdHandle call edi mov hin,eax call esi push 0 push esp push sizee push offset _text push hout mov ecx,5 mov ebx,WriteConsole call edi call esi push 0 push esp push 1 push offset hout push hin mov ecx,5 mov ebx,ReadConsole call edi call esi ret start endp ;####################################################################################### ; ETO PREVATE, PADLA, NIZHE NE SMOTRI EZHELE NE ILITA ! ; ODAY FUNCTION CHTOBJ DELOT' PIZDATO ! ; ; STDCALL MEGA CALLER SEHCallerTrash: ; in: ; [esp] на стеке -скарее всего адрес розврату ; ebx -адрес ёбаной ойпи ; ecx -количество оргументов у ойпи ; (не хэккерствовать тут мне!!11) ; [esp+0ch...0xxh] _arg3-argN -аргументы функцеи ; out: ; TRUE= [eax]-адрес возврата ; или же ; esp-0ch=eax - ну вы понели ; FALSE= все остальное, что не выше два ; в частности - кодес ошибки некий функи ZwProtectVirtualMemory ;###################################################################################### pop edx ; адрес разврата sub esp,0ch;+10h ;10h- lj mov eax,ecx imul eax,4 sub esp,eax jecxz no_arg mov [esp-4],ecx mov [esp-8],eax xor ecx,ecx @@: lea eax,[esp+ecx*4+0ch] add eax,[esp-8] mov eax,[eax] mov [esp+ecx*4],eax inc ecx cmp ecx,[esp-4] jnz @b no_arg: ;эти строки выше я и сам в ахуе что ;как то работают. волей хаоса по ходу mov dword ptr [esp+ecx*4],0d2339090h ; xor edx,edx inc ecx mov dword ptr [esp+ecx*4],9010c483h ;add esp,14h inc ecx mov dword ptr [esp+ecx*4],5a028f64h ;pop fs:[edx]/pop edx inc ecx mov dword ptr [esp+ecx*4],00c3909090h ; retn 8 - возврат с очисткой 2х параметров(к сеху там относяца) inc ecx push dword ptr fs:[0] pop dword ptr [esp+ecx*4] ; устанавливам обрабодчик lea eax,[esp+ecx*4] mov dword ptr fs:[0],eax inc ecx mov [esp+ecx*4],offset SEHHandler inc ecx mov [esp+ecx*4],edx ; addr куда вернемсо из стека sub ecx,6 lea edx,[esp+ecx*4] ; push edx ; addr куда вернемсо апи функи(на xor edx,edx) mov eax,esp ; сохраняем указатель в еах ;********************************** push 0e0ff9090h ;jmp eax push ebx ;addr API push 0b8909090h ;mov eax,0xxxxxxxxh ;тут необходимо добавить ниибический TrashGen ;********************************** @@: push 90909090h ; заполняем стек хуитой jmp @b ;cmp [eax],offset exit ;eax-либо кодес ошибки ZwProtectVirtualMemory, ;либо указатель есп на адрес возврата ;jnz @b ;int 3 ret ;======================================================================================== SEHHandler: ; тут похоже обрабочек некого исключенья ;======================================================================================== mov edx,[esp+4] assume edx: ptr EXCEPTION_RECORD cmp [edx].ExceptionCode,STATUS_STACK_OVERFLOW ; ежеле не наше исключение jnz not_stack_ov ; то и хуй с ним! pop eax push eax ;ntdll @@: dec eax xor al,al cmp word ptr[eax],"ZM" jnz @b ;eax - base ntdll push edi mov edi,08986783h ;м hash -> № service call FindAddrFuncOnHash ;eax - № service mov edi,[esp+10h] assume edi:ptr CONTEXT push [edi].regEsp ;начало буфера для изменения аттрибутов push [edi].regEax pop edx ;конец буфера sub edx,dword ptr[esp] ;edx -длина буфера push edx push eax push esp push PAGE_EXECUTE_READWRITE lea edx,[esp+0ch] push edx lea edx,[esp+14h] push edx or edx,-1 push edx push eax push $+5+2+2 mov edx,esp db 0fh,34h ;вызываем блять сервис дабы изменить ;параметры стека, забитого хуитой на RWE add esp,14h+4+0ch test eax,eax push [edi].regEsp push [edi].regEax ;good esp(ХОРОШИЙ, ГОДНЫЙ УКОЗАТЕЛЬ НА СТЕК) pop [edi].regEsp ;восстановка указателя стека jz ok_attribute push esi lea edx,[edi].regEax xchg dword ptr[edx],eax ;возвращаем ошибку, а стало быть и хуйцы xchg eax,esi lodsd ;убираем адрес возврата в еах, ;увеличивая показатель стека на 4 mov [edi].regEsp,esi mov dword ptr[esp+4],eax pop esi jmp @f ok_attribute: add dword ptr[esp],eax @@: pop [edi].regEip pop edi not_stack_ov: ;все, изъёбствваа кончелись, уходим уже, бери своё польто ;и чорную шапочку xor eax,eax ;перезагрузить контекст ret ;============================================================================================ StackGuarded: ; процедурчишка задает атрибуты стека хорошие и годные ;============================================================================================ assume fs:flat mov eax,fs:[8] mov edx,esp sub edx,eax push eax invoke VirtualProtect,eax,edx,PAGE_GUARD or PAGE_READWRITE,esp pop eax ret ;########################################################################################## end start